Lines Matching refs:irq
133 DBG(" %d:%02x/%04x", j, e->irq[j].link, e->irq[j].bitmap); in pirq_peer_trick()
151 void eisa_set_level_irq(unsigned int irq) in eisa_set_level_irq() argument
153 unsigned char mask = 1 << (irq & 7); in eisa_set_level_irq()
154 unsigned int port = 0x4d0 + (irq >> 3); in eisa_set_level_irq()
158 if (irq >= 16 || (1 << irq) & eisa_irq_mask) in eisa_set_level_irq()
161 eisa_irq_mask |= (1 << irq); in eisa_set_level_irq()
162 printk(KERN_DEBUG "PCI: setting IRQ %u as level-triggered\n", irq); in eisa_set_level_irq()
207 static int pirq_ali_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq) in pirq_ali_set() argument
210 unsigned int val = irqmap[irq]; in pirq_ali_set()
232 static int pirq_piix_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq) in pirq_piix_set() argument
234 pci_write_config_byte(router, pirq, irq); in pirq_piix_set()
248 static int pirq_via_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq) in pirq_via_set() argument
250 write_config_nybble(router, 0x55, pirq == 4 ? 5 : pirq, irq); in pirq_via_set()
267 static int pirq_via586_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq) in pirq_via586_set() argument
272 write_config_nybble(router, 0x55, pirqmap[pirq-1], irq); in pirq_via586_set()
289 static int pirq_ite_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq) in pirq_ite_set() argument
294 write_config_nybble(router, 0x43, pirqmap[pirq-1], irq); in pirq_ite_set()
307 static int pirq_opti_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq) in pirq_opti_set() argument
309 write_config_nybble(router, 0xb8, pirq >> 4, irq); in pirq_opti_set()
323 static int pirq_cyrix_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq) in pirq_cyrix_set() argument
325 write_config_nybble(router, 0x5C, (pirq-1)^1, irq); in pirq_cyrix_set()
406 static int pirq_sis_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq) in pirq_sis_set() argument
416 x |= irq ? irq: PIRQ_SIS_IRQ_DISABLE; in pirq_sis_set()
440 static int pirq_vlsi_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq) in pirq_vlsi_set() argument
447 write_config_nybble(router, 0x74, pirq-1, irq); in pirq_vlsi_set()
469 int pirq, int irq) in pirq_serverworks_set() argument
472 outb(irq, 0xc01); in pirq_serverworks_set()
486 u8 irq; in pirq_amd756_get() local
487 irq = 0; in pirq_amd756_get()
489 irq = read_config_nybble(router, 0x56, pirq - 1); in pirq_amd756_get()
492 dev->vendor, dev->device, pirq, irq); in pirq_amd756_get()
493 return irq; in pirq_amd756_get()
496 static int pirq_amd756_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq) in pirq_amd756_set() argument
500 dev->vendor, dev->device, pirq, irq); in pirq_amd756_set()
502 write_config_nybble(router, 0x56, pirq - 1, irq); in pirq_amd756_set()
516 int irq) in pirq_pico_set() argument
521 x = ((pirq - 1) & 1) ? ((x & 0x0f) | (irq << 4)) : ((x & 0xf0) | (irq)); in pirq_pico_set()
528 static int pirq_bios_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq) in pirq_bios_set() argument
532 return pcibios_set_irq_routing(bridge, pin - 1, irq); in pirq_bios_set()
883 int irq = 0; in pcibios_lookup_irq() local
910 pirq = info->irq[pin - 1].link; in pcibios_lookup_irq()
911 mask = info->irq[pin - 1].bitmap; in pcibios_lookup_irq()
923 if (broken_hp_bios_irq9 && pirq == 0x59 && dev->irq == 9) { in pcibios_lookup_irq()
924 dev->irq = 11; in pcibios_lookup_irq()
930 if (acer_tm360_irqrouting && dev->irq == 11 && in pcibios_lookup_irq()
934 dev->irq = r->get(pirq_router_dev, dev, pirq); in pcibios_lookup_irq()
935 pci_write_config_byte(dev, PCI_INTERRUPT_LINE, dev->irq); in pcibios_lookup_irq()
942 newirq = dev->irq; in pcibios_lookup_irq()
963 irq = pirq & 0xf; in pcibios_lookup_irq()
965 } else if (r->get && (irq = r->get(pirq_router_dev, dev, pirq)) && \ in pcibios_lookup_irq()
966 ((!(pci_probe & PCI_USE_PIRQ_MASK)) || ((1 << irq) & mask))) { in pcibios_lookup_irq()
968 eisa_set_level_irq(irq); in pcibios_lookup_irq()
974 irq = newirq; in pcibios_lookup_irq()
978 if (!irq) { in pcibios_lookup_irq()
981 irq = newirq; in pcibios_lookup_irq()
987 dev_info(&dev->dev, "%s PCI INT %c -> IRQ %d\n", msg, 'A' + pin - 1, irq); in pcibios_lookup_irq()
998 if (info->irq[pin - 1].link == pirq) { in pcibios_lookup_irq()
1003 if (dev2->irq && dev2->irq != irq && \ in pcibios_lookup_irq()
1005 ((1 << dev2->irq) & mask))) { in pcibios_lookup_irq()
1009 dev2->irq, irq); in pcibios_lookup_irq()
1013 dev2->irq = irq; in pcibios_lookup_irq()
1014 pirq_penalty[irq]++; in pcibios_lookup_irq()
1017 irq, pci_name(dev2)); in pcibios_lookup_irq()
1035 if (dev->irq >= 16) { in pcibios_fixup_irqs()
1036 dev_dbg(&dev->dev, "ignoring bogus IRQ %d\n", dev->irq); in pcibios_fixup_irqs()
1037 dev->irq = 0; in pcibios_fixup_irqs()
1043 if (pirq_penalty[dev->irq] >= 100 && in pcibios_fixup_irqs()
1044 pirq_penalty[dev->irq] < 100000) in pcibios_fixup_irqs()
1045 pirq_penalty[dev->irq] = 0; in pcibios_fixup_irqs()
1046 pirq_penalty[dev->irq]++; in pcibios_fixup_irqs()
1061 if (!dev->irq) in pcibios_fixup_irqs()
1164 static void pirq_penalize_isa_irq(int irq, int active) in pirq_penalize_isa_irq() argument
1170 if (irq < 16) { in pirq_penalize_isa_irq()
1172 pirq_penalty[irq] += 1000; in pirq_penalize_isa_irq()
1174 pirq_penalty[irq] += 100; in pirq_penalize_isa_irq()
1178 void pcibios_penalize_isa_irq(int irq, int active) in pcibios_penalize_isa_irq() argument
1182 acpi_penalize_isa_irq(irq, active); in pcibios_penalize_isa_irq()
1185 pirq_penalize_isa_irq(irq, active); in pcibios_penalize_isa_irq()
1196 if (!io_apic_assign_pci_irqs && dev->irq) in pirq_enable_irq()
1202 int irq; in pirq_enable_irq() local
1204 if (dev->irq_managed && dev->irq > 0) in pirq_enable_irq()
1207 irq = IO_APIC_get_PCI_irq_vector(dev->bus->number, in pirq_enable_irq()
1216 while (irq < 0 && dev->bus->parent) { /* go back to the bridge */ in pirq_enable_irq()
1220 irq = IO_APIC_get_PCI_irq_vector(bridge->bus->number, in pirq_enable_irq()
1223 if (irq >= 0) in pirq_enable_irq()
1227 irq); in pirq_enable_irq()
1231 if (irq >= 0) { in pirq_enable_irq()
1233 dev->irq = irq; in pirq_enable_irq()
1235 "INT %c -> IRQ %d\n", 'A' + pin - 1, irq); in pirq_enable_irq()
1274 dev->irq_managed && dev->irq) { in pirq_disable_irq()
1275 mp_unmap_irq(dev->irq); in pirq_disable_irq()
1276 dev->irq = 0; in pirq_disable_irq()