Lines Matching refs:router

47 	int (*get)(struct pci_dev *router, struct pci_dev *dev, int pirq);
48 int (*set)(struct pci_dev *router, struct pci_dev *dev, int pirq,
54 int (*probe)(struct irq_router *r, struct pci_dev *router, u16 device);
176 static unsigned int read_config_nybble(struct pci_dev *router, unsigned offset, unsigned nr)
181 pci_read_config_byte(router, reg, &x);
185 static void write_config_nybble(struct pci_dev *router, unsigned offset,
191 pci_read_config_byte(router, reg, &x);
193 pci_write_config_byte(router, reg, x);
201 static int pirq_ali_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
206 return irqmap[read_config_nybble(router, 0x48, pirq-1)];
209 static int pirq_ali_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
216 write_config_nybble(router, 0x48, pirq-1, val);
226 static int pirq_piix_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
230 pci_read_config_byte(router, pirq, &x);
234 static int pirq_piix_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
236 pci_write_config_byte(router, pirq, irq);
245 static int pirq_via_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
247 return read_config_nybble(router, 0x55, pirq == 4 ? 5 : pirq);
250 static int pirq_via_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
252 write_config_nybble(router, 0x55, pirq == 4 ? 5 : pirq, irq);
261 static int pirq_via586_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
266 return read_config_nybble(router, 0x55, pirqmap[pirq-1]);
269 static int pirq_via586_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
274 write_config_nybble(router, 0x55, pirqmap[pirq-1], irq);
283 static int pirq_ite_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
288 return read_config_nybble(router, 0x43, pirqmap[pirq-1]);
291 static int pirq_ite_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
296 write_config_nybble(router, 0x43, pirqmap[pirq-1], irq);
304 static int pirq_opti_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
306 return read_config_nybble(router, 0xb8, pirq >> 4);
309 static int pirq_opti_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
311 write_config_nybble(router, 0xb8, pirq >> 4, irq);
320 static int pirq_cyrix_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
322 return read_config_nybble(router, 0x5C, (pirq-1)^1);
325 static int pirq_cyrix_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
327 write_config_nybble(router, 0x5C, (pirq-1)^1, irq);
332 * PIRQ routing for SiS 85C503 router used in several SiS chipsets.
337 * - different revision of the router have a different layout for
357 * router (ISA-bridge) should be 0x01 or 0xb0.
365 * Onchip routing for router rev-id 0x01/0xb0 and probably 0x00/0xb1:
383 * router revision 0x04 and there are changes in the register layout
386 * Onchip routing for router rev-id 0x04 (try-and-error observation)
396 static int pirq_sis_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
404 pci_read_config_byte(router, reg, &x);
408 static int pirq_sis_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
416 pci_read_config_byte(router, reg, &x);
419 pci_write_config_byte(router, reg, x);
426 * config space of VLSI 82C534 PCI-bridge/router (1004:0102)
432 static int pirq_vlsi_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
436 dev_info(&dev->dev, "VLSI router PIRQ escape (%d)\n", pirq);
439 return read_config_nybble(router, 0x74, pirq-1);
442 static int pirq_vlsi_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
446 dev_info(&dev->dev, "VLSI router PIRQ escape (%d)\n", pirq);
449 write_config_nybble(router, 0x74, pirq-1, irq);
464 static int pirq_serverworks_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
470 static int pirq_serverworks_set(struct pci_dev *router, struct pci_dev *dev,
486 static int pirq_amd756_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
491 irq = read_config_nybble(router, 0x56, pirq - 1);
493 "AMD756: dev [%04x:%04x], router PIRQ %d get IRQ %d\n",
498 static int pirq_amd756_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
501 "AMD756: dev [%04x:%04x], router PIRQ %d set IRQ %d\n",
504 write_config_nybble(router, 0x56, pirq - 1, irq);
511 static int pirq_pico_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
517 static int pirq_pico_set(struct pci_dev *router, struct pci_dev *dev, int pirq,
530 static int pirq_bios_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
539 static __init int intel_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
547 /* 440GX has a proprietary PIRQ router -- don't use it */
617 struct pci_dev *router, u16 device)
625 switch (router->device) {
671 static __init int vlsi_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
685 struct pci_dev *router, u16 device)
698 static __init int sis_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
709 static __init int cyrix_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
721 static __init int opti_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
733 static __init int ite_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
745 static __init int ali_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
758 static __init int amd_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
778 static __init int pico_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
839 DBG(KERN_DEBUG "PCI: Attempting to find IRQ router for [%04x:%04x]\n",
845 DBG(KERN_DEBUG "PCI: Interrupt router not found at "
851 /* First look for a router match */
860 dev_info(&pirq_router_dev->dev, "%s IRQ router [%04x:%04x]\n",