Lines Matching full:router
53 int (*get)(struct pci_dev *router, struct pci_dev *dev, int pirq);
54 int (*set)(struct pci_dev *router, struct pci_dev *dev, int pirq,
56 int (*lvl)(struct pci_dev *router, struct pci_dev *dev, int pirq,
62 int (*probe)(struct irq_router *r, struct pci_dev *router, u16 device);
117 * have no information as to the router device to use, but we can handle
349 static int pirq_finali_get(struct pci_dev *router, struct pci_dev *dev, in pirq_finali_get() argument
368 static int pirq_finali_set(struct pci_dev *router, struct pci_dev *dev, in pirq_finali_set() argument
390 static int pirq_finali_lvl(struct pci_dev *router, struct pci_dev *dev, in pirq_finali_lvl() argument
412 static unsigned int read_config_nybble(struct pci_dev *router, unsigned offset, unsigned nr) in read_config_nybble() argument
417 pci_read_config_byte(router, reg, &x); in read_config_nybble()
421 static void write_config_nybble(struct pci_dev *router, unsigned offset, in write_config_nybble() argument
427 pci_read_config_byte(router, reg, &x); in write_config_nybble()
429 pci_write_config_byte(router, reg, x); in write_config_nybble()
437 static int pirq_ali_get(struct pci_dev *router, struct pci_dev *dev, int pirq) in pirq_ali_get() argument
442 return irqmap[read_config_nybble(router, 0x48, pirq-1)]; in pirq_ali_get()
445 static int pirq_ali_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq) in pirq_ali_set() argument
452 write_config_nybble(router, 0x48, pirq-1, val); in pirq_ali_set()
468 * with the PIIX router.
490 static int pirq_esc_get(struct pci_dev *router, struct pci_dev *dev, int pirq) in pirq_esc_get() argument
508 static int pirq_esc_set(struct pci_dev *router, struct pci_dev *dev, int pirq, in pirq_esc_set() argument
530 static int pirq_piix_get(struct pci_dev *router, struct pci_dev *dev, int pirq) in pirq_piix_get() argument
534 pci_read_config_byte(router, pirq, &x); in pirq_piix_get()
538 static int pirq_piix_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq) in pirq_piix_set() argument
540 pci_write_config_byte(router, pirq, irq); in pirq_piix_set()
551 * the same as with the PIIX router.
562 static int pirq_ib_get(struct pci_dev *router, struct pci_dev *dev, int pirq) in pirq_ib_get() argument
571 pci_read_config_byte(router, reg, &x); in pirq_ib_get()
575 static int pirq_ib_set(struct pci_dev *router, struct pci_dev *dev, int pirq, in pirq_ib_set() argument
584 pci_write_config_byte(router, reg, irq); in pirq_ib_set()
593 static int pirq_via_get(struct pci_dev *router, struct pci_dev *dev, int pirq) in pirq_via_get() argument
595 return read_config_nybble(router, 0x55, pirq == 4 ? 5 : pirq); in pirq_via_get()
598 static int pirq_via_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq) in pirq_via_set() argument
600 write_config_nybble(router, 0x55, pirq == 4 ? 5 : pirq, irq); in pirq_via_set()
609 static int pirq_via586_get(struct pci_dev *router, struct pci_dev *dev, int pirq) in pirq_via586_get() argument
614 return read_config_nybble(router, 0x55, pirqmap[pirq-1]); in pirq_via586_get()
617 static int pirq_via586_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq) in pirq_via586_set() argument
622 write_config_nybble(router, 0x55, pirqmap[pirq-1], irq); in pirq_via586_set()
631 static int pirq_ite_get(struct pci_dev *router, struct pci_dev *dev, int pirq) in pirq_ite_get() argument
636 return read_config_nybble(router, 0x43, pirqmap[pirq-1]); in pirq_ite_get()
639 static int pirq_ite_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq) in pirq_ite_set() argument
644 write_config_nybble(router, 0x43, pirqmap[pirq-1], irq); in pirq_ite_set()
652 static int pirq_opti_get(struct pci_dev *router, struct pci_dev *dev, int pirq) in pirq_opti_get() argument
654 return read_config_nybble(router, 0xb8, pirq >> 4); in pirq_opti_get()
657 static int pirq_opti_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq) in pirq_opti_set() argument
659 write_config_nybble(router, 0xb8, pirq >> 4, irq); in pirq_opti_set()
668 static int pirq_cyrix_get(struct pci_dev *router, struct pci_dev *dev, int pirq) in pirq_cyrix_get() argument
670 return read_config_nybble(router, 0x5C, (pirq-1)^1); in pirq_cyrix_get()
673 static int pirq_cyrix_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq) in pirq_cyrix_set() argument
675 write_config_nybble(router, 0x5C, (pirq-1)^1, irq); in pirq_cyrix_set()
723 static int pirq_sis497_get(struct pci_dev *router, struct pci_dev *dev, in pirq_sis497_get() argument
733 pci_read_config_byte(router, reg, &x); in pirq_sis497_get()
737 static int pirq_sis497_set(struct pci_dev *router, struct pci_dev *dev, in pirq_sis497_set() argument
747 pci_read_config_byte(router, reg, &x); in pirq_sis497_set()
750 pci_write_config_byte(router, reg, x); in pirq_sis497_set()
755 * PIRQ routing for SiS 85C503 router used in several SiS chipsets.
760 * - different revision of the router have a different layout for
780 * router (ISA-bridge) should be 0x01 or 0xb0.
788 * Onchip routing for router rev-id 0x01/0xb0 and probably 0x00/0xb1:
806 * router revision 0x04 and there are changes in the register layout
809 * Onchip routing for router rev-id 0x04 (try-and-error observation)
819 static int pirq_sis503_get(struct pci_dev *router, struct pci_dev *dev, in pirq_sis503_get() argument
828 pci_read_config_byte(router, reg, &x); in pirq_sis503_get()
832 static int pirq_sis503_set(struct pci_dev *router, struct pci_dev *dev, in pirq_sis503_set() argument
841 pci_read_config_byte(router, reg, &x); in pirq_sis503_set()
844 pci_write_config_byte(router, reg, x); in pirq_sis503_set()
851 * config space of VLSI 82C534 PCI-bridge/router (1004:0102)
857 static int pirq_vlsi_get(struct pci_dev *router, struct pci_dev *dev, int pirq) in pirq_vlsi_get() argument
861 dev_info(&dev->dev, "VLSI router PIRQ escape (%d)\n", pirq); in pirq_vlsi_get()
864 return read_config_nybble(router, 0x74, pirq-1); in pirq_vlsi_get()
867 static int pirq_vlsi_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq) in pirq_vlsi_set() argument
871 dev_info(&dev->dev, "VLSI router PIRQ escape (%d)\n", pirq); in pirq_vlsi_set()
874 write_config_nybble(router, 0x74, pirq-1, irq); in pirq_vlsi_set()
889 static int pirq_serverworks_get(struct pci_dev *router, struct pci_dev *dev, int pirq) in pirq_serverworks_get() argument
895 static int pirq_serverworks_set(struct pci_dev *router, struct pci_dev *dev, in pirq_serverworks_set() argument
911 static int pirq_amd756_get(struct pci_dev *router, struct pci_dev *dev, int pirq) in pirq_amd756_get() argument
916 irq = read_config_nybble(router, 0x56, pirq - 1); in pirq_amd756_get()
918 "AMD756: dev [%04x:%04x], router PIRQ %d get IRQ %d\n", in pirq_amd756_get()
923 static int pirq_amd756_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq) in pirq_amd756_set() argument
926 "AMD756: dev [%04x:%04x], router PIRQ %d set IRQ %d\n", in pirq_amd756_set()
929 write_config_nybble(router, 0x56, pirq - 1, irq); in pirq_amd756_set()
936 static int pirq_pico_get(struct pci_dev *router, struct pci_dev *dev, int pirq) in pirq_pico_get() argument
942 static int pirq_pico_set(struct pci_dev *router, struct pci_dev *dev, int pirq, in pirq_pico_set() argument
955 static int pirq_bios_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq) in pirq_bios_set() argument
964 static __init int intel_router_probe(struct irq_router *r, struct pci_dev *router, u16 device) in intel_router_probe() argument
972 /* 440GX has a proprietary PIRQ router -- don't use it */ in intel_router_probe()
1052 struct pci_dev *router, u16 device) in via_router_probe() argument
1060 switch (router->device) { in via_router_probe()
1106 static __init int vlsi_router_probe(struct irq_router *r, struct pci_dev *router, u16 device) in vlsi_router_probe() argument
1120 struct pci_dev *router, u16 device) in serverworks_router_probe() argument
1133 static __init int sis_router_probe(struct irq_router *r, struct pci_dev *router, u16 device) in sis_router_probe() argument
1150 static __init int cyrix_router_probe(struct irq_router *r, struct pci_dev *router, u16 device) in cyrix_router_probe() argument
1162 static __init int opti_router_probe(struct irq_router *r, struct pci_dev *router, u16 device) in opti_router_probe() argument
1174 static __init int ite_router_probe(struct irq_router *r, struct pci_dev *router, u16 device) in ite_router_probe() argument
1186 static __init int ali_router_probe(struct irq_router *r, struct pci_dev *router, u16 device) in ali_router_probe() argument
1205 static __init int amd_router_probe(struct irq_router *r, struct pci_dev *router, u16 device) in amd_router_probe() argument
1225 static __init int pico_router_probe(struct irq_router *r, struct pci_dev *router, u16 device) in pico_router_probe() argument
1273 DBG(KERN_DEBUG "PCI: Trying IRQ router for [%04x:%04x]\n", in pirq_try_router()
1277 /* First look for a router match */ in pirq_try_router()
1308 DBG(KERN_DEBUG "PCI: Attempting to find IRQ router for [%04x:%04x]\n", in pirq_find_router()
1328 dev_info(&pirq_router_dev->dev, "%s IRQ router [%04x:%04x]\n", in pirq_find_router()
1332 DBG(KERN_DEBUG "PCI: Interrupt router not found at " in pirq_find_router()