Hi, Doing ACPI only IRQ routing is quite easy. I'm not going to describe whole ACPI table stuff just the part you need for the routing:
http://www.linuxbios.org/pipermail/linuxbios/2007-October/025845.html Check the dsdt.asl file in patch above. /* top PCI device */ Device (PCI0) { Name (_HID, EisaId ("PNP0A03")) Name (_ADR, 0x00) Name (_UID, 0x00) Name (_BBN, 0x00) /* PCI Routing Table */ //aaa Name (_PRT, Package () { This is where actual routing table for SB starts: Package (0x04) { 0x000BFFFF, 0x00, 0x00, 0x10 }, 0xDDDDFFFF, LNK, 00, GSI DDDD is PCI DEV, FFFF is function, LNK is PCI link - so LNKA B etc... Next parameter is 00 if you do not support legacy PIC routing at all. Last parameter is global interrupt NR. //slot 0xB Package (0x04) { 0x000BFFFF, 0x01, 0x00, 0x11 }, Package (0x04) { 0x000BFFFF, 0x02, 0x00, 0x12 }, Package (0x04) { 0x000BFFFF, 0x03, 0x00, 0x13 }, Package (0x04) { 0x000CFFFF, 0x00, 0x00, 0x11 }, //Slot 0xC Package (0x04) { 0x000CFFFF, 0x01, 0x00, 0x12 }, Package (0x04) { 0x000CFFFF, 0x02, 0x00, 0x13 }, Package (0x04) { 0x000CFFFF, 0x03, 0x00, 0x10 }, Package (0x04) { 0x000DFFFF, 0x00, 0x00, 0x12 }, //Slot 0xD Package (0x04) { 0x000DFFFF, 0x01, 0x00, 0x13 }, Package (0x04) { 0x000DFFFF, 0x02, 0x00, 0x10 }, Package (0x04) { 0x000DFFFF, 0x03, 0x00, 0x11 }, Package (0x04) { 0x000F0000, 0x01, 0x00, 0x14 }, //0xf SATA IRQ 20 Package (0x04) { 0x000F0001, 0x00, 0x00, 0x14 }, So for example SATA is routed through LNKA, and it is device 0f.1. //0xf NAtive IDE IRQ 20 Package (0x04) { 0x0010FFFF, 0x00, 0x00, 0x15 }, //USB routing Package (0x04) { 0x0010FFFF, 0x01, 0x00, 0x15 }, Package (0x04) { 0x0010FFFF, 0x02, 0x00, 0x15 }, Package (0x04) { 0x0010FFFF, 0x03, 0x00, 0x15 }, Package (0x04) { 0x0011FFFF, 0x02, 0x00, 0x16 }, //AC97 MC97 Package (0x04) { 0x0002FFFF, 0x00, 0x00, 0x1B }, //PCIE16 bridge IRQ27 Package (0x04) { 0x0002FFFF, 0x01, 0x00, 0x1B }, Package (0x04) { 0x0002FFFF, 0x02, 0x00, 0x1B }, Package (0x04) { 0x0002FFFF, 0x03, 0x00, 0x1B }, Package (0x04) { 0x0003FFFF, 0x00, 0x00, 0x1F }, //PCIE bridge IRQ31 Package (0x04) { 0x0003FFFF, 0x01, 0x00, 0x23 }, //IRQ36 Package (0x04) { 0x0003FFFF, 0x02, 0x00, 0x27 }, //IRQ39 Package (0x04) { 0x0003FFFF, 0x03, 0x00, 0x2B } //IRQ43 }) Device (PEGG) { Name (_ADR, 0x00020000) Name (_UID, 0x00) Name (_BBN, 0x02) Other devices may have own PRT tables. Name (_PRT, Package () { Package (0x04) { 0x0000FFFF, 0x00, 0x00, 0x18 }, //PCIE IRQ24-IRQ27 Package (0x04) { 0x0000FFFF, 0x01, 0x00, 0x19 }, Package (0x04) { 0x0000FFFF, 0x02, 0x00, 0x1A }, Package (0x04) { 0x0000FFFF, 0x03, 0x00, 0x1B }, }) } //end of PCIEG Hope it helps, Rudolf -- linuxbios mailing list [email protected] http://www.linuxbios.org/mailman/listinfo/linuxbios
