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

Reply via email to