coreboot-kgpe-d16/src/mainboard/intel/eagleheights/dsdt.dsl
Thomas Jourdan 1a692d8176 Add support for the Intel Eagle Heights development board.
Signed-off-by: Thomas Jourdan <thomas.jourdan@gmail.com>
Acked-by: Myles Watson <mylesgw@gmail.com>


git-svn-id: svn://svn.coreboot.org/coreboot/trunk@4392 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
2009-07-01 17:01:17 +00:00

1079 lines
21 KiB
Text

/*
* This file is part of the coreboot project.
*
* Copyright (C) 2009 Thomas Jourdan <thomas.jourdan@gmail.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; version 2 of
* the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
DefinitionBlock ("DSDT", "DSDT", 1, "EAGLE", "COREBOOT", 0x0000001)
{
Scope (\_PR)
{
Processor (CPU1, 0x01, 0x00000810, 0x06)
{
OperationRegion (STBL, SystemMemory, 0xFFFF0000, 0xFFFF)
Name (NCPU, 0x80)
Name (TYPE, 0x80000000)
Name (HNDL, 0x80000000)
Name (CFGD, 0x80000000)
Name (TBLD, 0x80)
Method (_PDC, 1, NotSerialized)
{
}
}
}
Scope (\_PR)
{
Processor (CPU2, 0x02, 0x00000000, 0x00)
{
OperationRegion (STBL, SystemMemory, 0xFFFF0000, 0xFFFF)
Name (NCPU, 0x80)
Name (TYPE, 0x80000000)
Name (HNDL, 0x80000000)
Name (CFGD, 0x80000000)
Name (TBLD, 0x80)
Method (_PDC, 1, NotSerialized)
{
}
}
}
/* For now only define 2 power states:
* - S0 which is fully on
* - S5 which is soft off
* Any others would involve declaring the wake up methods.
*/
Name (\_S0, Package () { 0x00, 0x00, 0x00, 0x00 })
Name (\_S5, Package () { 0x02, 0x02, 0x00, 0x00 })
Name (PICM, 0x00)
Method (_PIC, 1, NotSerialized)
{
Store (Arg0, PICM)
}
/* System bus */
Scope (\_SB)
{
/* Routing PCI0 */
Name (PR00, Package (0x0E)
{
Package (0x04){0x0001FFFF,0x00,LNKA,0x00}, /* EDMA INTA# */
Package (0x04){0x0002FFFF,0x00,LNKA,0x00}, /* PCIe port A */
Package (0x04){0x0002FFFF,0x01,LNKB,0x00},
Package (0x04){0x0002FFFF,0x02,LNKC,0x00},
Package (0x04){0x0002FFFF,0x03,LNKD,0x00},
Package (0x04){0x0003FFFF,0x00,LNKA,0x00}, /* PCIe port A1 */
Package (0x04){0x0003FFFF,0x01,LNKB,0x00},
Package (0x04){0x0003FFFF,0x02,LNKC,0x00},
Package (0x04){0x0003FFFF,0x03,LNKD,0x00},
Package (0x04){0x001CFFFF,0x00,LNKE,0x00}, /* PCIe port B */
Package (0x04){0x001DFFFF,0x00,LNKH,0x00}, /* UHCI/EHCI INTA# */
Package (0x04){0x001DFFFF,0x01,LNKD,0x00}, /* UHCI INTB# */
Package (0x04){0x001FFFFF,0x01,LNKD,0x00}, /* SATA/SMBUS INTB# */
Package (0x04){0x001FFFFF,0x03,LNKA,0x00} /* CHAP INTD# */
})
Name (AR00, Package (0x0E)
{
Package (0x04){0x0001FFFF,0x00,0x00,0x10}, /* EDMA INTA# */
Package (0x04){0x0002FFFF,0x00,0x00,0x10}, /* PCIe port A0 */
Package (0x04){0x0002FFFF,0x01,0x00,0x11},
Package (0x04){0x0002FFFF,0x02,0x00,0x12},
Package (0x04){0x0002FFFF,0x03,0x00,0x13},
Package (0x04){0x0003FFFF,0x00,0x00,0x10}, /* PCIe port A1 */
Package (0x04){0x0003FFFF,0x01,0x00,0x11},
Package (0x04){0x0003FFFF,0x02,0x00,0x12},
Package (0x04){0x0003FFFF,0x03,0x00,0x13},
Package (0x04){0x001CFFFF,0x00,0x00,0x14}, /* PCIe port B */
Package (0x04){0x001DFFFF,0x00,0x00,0x17}, /* UHCI/EHCI INTA# */
Package (0x04){0x001DFFFF,0x01,0x00,0x13}, /* UHCI INTB# */
Package (0x04){0x001FFFFF,0x01,0x00,0x13}, /* SATA/SMBUS INTB# */
Package (0x04){0x001FFFFF,0x0D,0x00,0x10} /* CHAP INTD# */
})
/* Routing PCIe Port A */
Name (PR0A, Package (0x04)
{
Package (0x04){0xFFFF,0x00,LNKA,0x00},
Package (0x04){0xFFFF,0x01,LNKB,0x00},
Package (0x04){0xFFFF,0x02,LNKC,0x00},
Package (0x04){0xFFFF,0x03,LNKD,0x00}
})
Name (AR0A, Package (0x04)
{
Package (0x04){0xFFFF,0x00,0x00,0x10},
Package (0x04){0xFFFF,0x01,0x00,0x11},
Package (0x04){0xFFFF,0x02,0x00,0x12},
Package (0x04){0xFFFF,0x03,0x00,0x13}
})
/* Routing PCIe Port B */
Name (PR0B, Package (0x04)
{
Package (0x04){0xFFFF,0x00,LNKA,0x00},
Package (0x04){0xFFFF,0x01,LNKB,0x00},
Package (0x04){0xFFFF,0x02,LNKC,0x00},
Package (0x04){0xFFFF,0x03,LNKD,0x00}
})
Name (AR0B, Package (0x04)
{
Package (0x04){0xFFFF,0x00,0x00,0x10},
Package (0x04){0xFFFF,0x01,0x00,0x11},
Package (0x04){0xFFFF,0x02,0x00,0x12},
Package (0x04){0xFFFF,0x03,0x00,0x13}
})
/* Routing Bus PCI */
Name (PR01, Package (0x04)
{
Package (0x04){0x0000FFFF,0x00,LNKA,0x00},
Package (0x04){0x0000FFFF,0x01,LNKB,0x00},
Package (0x04){0x0000FFFF,0x02,LNKC,0x00},
Package (0x04){0x0000FFFF,0x03,LNKD,0x00},
})
Name (AR01, Package (0x04)
{
Package (0x04){0x0000FFFF,0x00,0x00,0x10},
Package (0x04){0x0000FFFF,0x01,0x00,0x11},
Package (0x04){0x0000FFFF,0x02,0x00,0x12},
Package (0x04){0x0000FFFF,0x03,0x00,0x13},
})
Name (PRSA, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared, )
{3,4,5,6,7,10,11,12,14,15}
})
Alias (PRSA, PRSB)
Alias (PRSA, PRSC)
Alias (PRSA, PRSD)
Alias (PRSA, PRSE)
Alias (PRSA, PRSF)
Alias (PRSA, PRSG)
Alias (PRSA, PRSH)
Device (PCI0)
{
Name (_HID, EisaId ("PNP0A08"))
Name (_CID, EisaId ("PNP0A03"))
Name (_ADR, 0x00)
Name (_SEG, 0x00)
Name (_UID, 0x00)
Name (_BBN, 0x00)
Name (SUPP, 0) /* PCI _OSC Support Field Value */
Name (CTRL, 0) /* PCI _OSC Control Field Value */
Method (_OSC, 4)
{
/* Check for proper GUID */
If (LEqual (Arg0, ToUUID("33DB4D5B-1FF7-401C-9657-7441C03DD766")))
{
/* Create DWORD-adressable field from the Capabilities Buffer */
CreateDWordField (Arg3, 0, CDW1)
CreateDWordField (Arg3, 4, CDW2)
CreateDWordField (Arg3, 8, CDW3)
/* Save Capabilities DWord 2 & 3 */
Store (CDW2, SUPP)
Store (CDW3, CTRL)
/* Don't care of OS capabilites */
/* We support nothing (maybe we should add PCIe Capability Structure Control) */
And (CTRL, 0x00, CTRL)
/* Query flag clear ? */
If (Not (And (CDW1, 1)))
{
/* Nothing to do */
}
/* Unknown revision ? */
If (LNotEqual (Arg1, One))
{
Or (CDW1, 0x08, CDW1)
}
/* Capabilities bits masked ? */
If (LNotEqual (CDW3, CTRL))
{
Or (CDW1, 0x10, CDW1)
}
/* Update DWORD3 in the buffer */
Store (CTRL, CDW3)
Return (Arg3)
}
Else
{
/* Unrecognized UUID */
Or (CDW1, 4, CDW1)
Return (Arg3)
}
} /* End _OSC */
Method (_PRT, 0, NotSerialized)
{
If (PICM)
{
Return (AR00)
}
Return (PR00)
}
/* PCI Express Port A */
Device (EPA0)
{
Name (_ADR, 0x00020000)
Method (_PRT, 0, NotSerialized)
{
If (PICM)
{
Return (AR0A)
}
Return (PR0A)
}
}
/* PCI Express Port A1 */
Device (EPA1)
{
Name (_ADR, 0x00030000)
Method (_PRT, 0, NotSerialized)
{
If (PICM)
{
Return (AR0A)
}
Return (PR0A)
}
}
/* PCI Express Port B0 */
Device (EPB0)
{
Name (_ADR, 0x001C0000)
Method (_PRT, 0, NotSerialized)
{
If (PICM)
{
Return (AR0B)
}
Return (PR0B)
}
}
/* PCI Bridge */
Device (P0P1)
{
Name (_ADR, 0x001E0000)
Method (_PRT, 0, NotSerialized)
{
If (PICM)
{
Return (AR01)
}
Return (PR01)
}
}
/* LPC I/F Bridge */
Device (ISA) {
Name (_ADR, 0x001F0000)
/* MMCONF */
Device (^PCIE)
{
Name (_HID, EisaId ("PNP0C02"))
Name (_UID, 0x11)
Name (CRS, ResourceTemplate ()
{
Memory32Fixed (ReadOnly,
0xE0000000, // Address Base
0x10000000, // Address Length
_Y10)
})
Method (_CRS, 0, NotSerialized)
{
CreateDWordField (CRS, \_SB.PCI0.PCIE._Y10._BAS, BAS1)
CreateDWordField (CRS, \_SB.PCI0.PCIE._Y10._LEN, LEN1)
Store (0xE0000000, BAS1)
Store (0x10000000, LEN1)
Return (CRS)
}
}
/* PIC */
Device (PIC)
{
Name (_HID, EisaId ("PNP0000"))
Name (_CRS, ResourceTemplate()
{
IO (Decode16,
0x0020,
0x0020,
0x00,
0x02,
)
IO (Decode16,
0x00A0,
0x00A0,
0x00,
0x02,
)
IRQNoFlags ()
{2}
})
}
/* Real time clock */
Device (RTC0)
{
Name (_HID, EisaId ("PNP0B00"))
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0x0070,
0x0070,
0x00,
0x02)
IRQNoFlags ()
{8}
})
}
Device (UAR1)
{
Name (_UID, 0x01)
Name (_HID, EisaId ("PNP0501"))
Method (_PRS, 0, NotSerialized)
{
Return (CMPR)
}
Name (CMPR, ResourceTemplate ()
{
StartDependentFn (0x00, 0x00)
{
IO (Decode16,0x03F8,0x03F8,0x01,0x08)
IRQNoFlags () {4}
DMA (Compatibility, NotBusMaster, Transfer8) {}
}
StartDependentFnNoPri ()
{
IO (Decode16,0x03F8,0x03F8,0x01,0x08)
IRQNoFlags () {3,4,5,6,7,10,11,12}
DMA (Compatibility, NotBusMaster, Transfer8) {}
}
StartDependentFnNoPri ()
{
IO (Decode16,0x02F8,0x02F8,0x01,0x08)
IRQNoFlags () {3,4,5,6,7,10,11,12}
DMA (Compatibility, NotBusMaster, Transfer8) {}
}
StartDependentFnNoPri ()
{
IO (Decode16,0x03E8,0x03E8,0x01,0x08)
IRQNoFlags () {3,4,5,6,7,10,11,12}
DMA (Compatibility, NotBusMaster, Transfer8) {}
}
StartDependentFnNoPri ()
{
IO (Decode16,0x02E8,0x02E8,0x01,0x08)
IRQNoFlags () {3,4,5,6,7,10,11,12}
DMA (Compatibility, NotBusMaster, Transfer8) {}
}
EndDependentFn ()
})
}
/* PS/2 keyboard (seems to be important for WinXP install) */
Device (KBD)
{
Name (_HID, EisaId ("PNP0303"))
Method (_STA, 0, NotSerialized)
{
Return (0x0f)
}
Method (_CRS, 0, NotSerialized)
{
Name (TMP, ResourceTemplate () {
IO (Decode16, 0x0060, 0x0060, 0x01, 0x01)
IO (Decode16, 0x0064, 0x0064, 0x01, 0x01)
IRQNoFlags () {1}
})
Return (TMP)
}
}
/* PS/2 mouse */
Device (MOU)
{
Name (_HID, EisaId ("PNP0F13"))
Method (_STA, 0, NotSerialized)
{
Return (0x0f)
}
Method (_CRS, 0, NotSerialized)
{
Name (TMP, ResourceTemplate () {
IRQNoFlags () {12}
})
Return (TMP)
}
}
/* COM ports of SIO */
Device(SIO) {
OperationRegion (PT4E, SystemIO, 0x4E, 0x02)
Field (PT4E, ByteAcc, NoLock, Preserve)
{
PO4E, 8,
PO4F, 8
}
IndexField (PO4E, PO4F, ByteAcc, NoLock, Preserve)
{
Offset (0x07),
ILDN, 8,
Offset (0x28),
SIUI, 8,
SIUC, 8,
Offset (0x30),
IACT, 8,
Offset (0x60),
IIOH, 8,
IIOL, 8,
Offset (0x70),
IINT, 8
}
Method (IENF, 0, NotSerialized)
{
Store (0x80, PO4E)
Store (0x86, PO4E)
}
Method (IEXF, 0, NotSerialized)
{
Store (0x68, PO4E)
Store (0x08, PO4E)
}
Device (COM1)
{
Name (_UID, 0x03)
Name (_HID, EisaId ("PNP0501"))
Method (_STA, 0, NotSerialized)
{
IENF ()
Store (0x04, ILDN)
Store (IACT, Local0)
IEXF ()
If (LEqual (Local0, 0xFF))
{
Return (0x00)
}
If (LEqual (Local0, One))
{
Return (0x0F)
}
Else
{
Return (0x0D)
}
}
Method (_DIS, 0, NotSerialized)
{
IENF ()
Store (0x04, ILDN)
Store (Zero, IACT)
IEXF ()
}
Method (_CRS, 0, NotSerialized)
{
Name (BFU1, ResourceTemplate ()
{
IO (Decode16,
0x03F8, // Range Minimum
0x03F8, // Range Maximum
0x08, // Alignment
0x08, // Length
_Y03)
IRQNoFlags (_Y04)
{5}
})
CreateWordField (BFU1, \_SB.PCI0.ISA.SIO.COM1._CRS._Y03._MIN, IMIN)
CreateWordField (BFU1, \_SB.PCI0.ISA.SIO.COM1._CRS._Y03._MAX, IMAX)
CreateWordField (BFU1, \_SB.PCI0.ISA.SIO.COM1._CRS._Y04._INT, IRQ0)
IENF ()
Store (0x04, ILDN)
Store (IIOH, Local0)
ShiftLeft (Local0, 0x08, Local1)
Store (IIOL, Local0)
Add (Local1, Local0, Local0)
Store (Local0, IMIN)
Store (Local0, IMAX)
Store (IINT, Local0)
IEXF ()
Store (0x01, Local1)
ShiftLeft (Local1, Local0, IRQ0)
Return (BFU1)
}
Name (_PRS, ResourceTemplate ()
{
StartDependentFnNoPri ()
{
IO (Decode16,
0x03F8, // Range Minimum
0x03F8, // Range Maximum
0x08, // Alignment
0x08, // Length
)
IRQNoFlags ()
{5}
}
StartDependentFnNoPri ()
{
IO (Decode16,
0x02F8, // Range Minimum
0x02F8, // Range Maximum
0x08, // Alignment
0x08, // Length
)
IRQNoFlags ()
{9}
}
EndDependentFn ()
})
Method (_SRS, 1, NotSerialized)
{
CreateByteField (Arg0, 0x02, IOLO)
CreateByteField (Arg0, 0x03, IOHI)
CreateWordField (Arg0, 0x09, IRQ0)
IENF ()
Store (0x04, ILDN)
Store (Zero, IACT)
Store (IOLO, IIOL)
Store (IOHI, IIOH)
FindSetRightBit (IRQ0, Local0)
If (LGreater (Local0, 0x00))
{
Decrement (Local0)
}
Store (Local0, IINT)
Store (One, IACT)
IEXF ()
}
} /* COM1 */
Device (COM2)
{
Name (_UID, 0x04)
Name (_HID, EisaId ("PNP0501"))
Method (_STA, 0, NotSerialized)
{
IENF ()
Store (0x05, ILDN)
Store (IACT, Local0)
IEXF ()
If (LEqual (Local0, 0xFF))
{
Return (0x00)
}
If (LEqual (Local0, One))
{
Return (0x0F)
}
Else
{
Return (0x0D)
}
}
Method (_DIS, 0, NotSerialized)
{
IENF ()
Store (0x05, ILDN)
Store (Zero, IACT)
IEXF ()
}
Method (_CRS, 0, NotSerialized)
{
Name (BFU1, ResourceTemplate ()
{
IO (Decode16,
0x03F8, // Range Minimum
0x03F8, // Range Maximum
0x08, // Alignment
0x08, // Length
_Y05)
IRQNoFlags (_Y06)
{9}
})
CreateWordField (BFU1, \_SB.PCI0.ISA.SIO.COM2._CRS._Y05._MIN, IMIN)
CreateWordField (BFU1, \_SB.PCI0.ISA.SIO.COM2._CRS._Y05._MAX, IMAX)
CreateWordField (BFU1, \_SB.PCI0.ISA.SIO.COM2._CRS._Y06._INT, IRQ0)
IENF ()
Store (0x05, ILDN)
Store (IIOH, Local0)
ShiftLeft (Local0, 0x08, Local1)
Store (IIOL, Local0)
Add (Local1, Local0, Local0)
Store (Local0, IMIN)
Store (Local0, IMAX)
Store (IINT, Local0)
IEXF ()
Store (0x01, Local1)
ShiftLeft (Local1, Local0, IRQ0)
Return (BFU1)
}
Name (_PRS, ResourceTemplate ()
{
StartDependentFnNoPri ()
{
IO (Decode16,
0x03F8, // Range Minimum
0x03F8, // Range Maximum
0x08, // Alignment
0x08, // Length
)
IRQNoFlags ()
{5}
}
StartDependentFnNoPri ()
{
IO (Decode16,
0x02F8, // Range Minimum
0x02F8, // Range Maximum
0x08, // Alignment
0x08, // Length
)
IRQNoFlags ()
{9}
}
EndDependentFn ()
})
Method (_SRS, 1, NotSerialized)
{
CreateByteField (Arg0, 0x02, IOLO)
CreateByteField (Arg0, 0x03, IOHI)
CreateWordField (Arg0, 0x09, IRQ0)
IENF ()
Store (0x05, ILDN)
Store (Zero, IACT)
Store (IOLO, IIOL)
Store (IOHI, IIOH)
FindSetRightBit (IRQ0, Local0)
If (LGreater (Local0, 0x00))
{
Decrement (Local0)
}
Store (Local0, IINT)
Store (One, IACT)
IEXF ()
}
} /* COM2 */
} /* Device SIO */
} /* Device ISA */
} /* Device PCI 0*/
} /* Scope SB */
OperationRegion (_SB.PCI0.ISA.PIX0, PCI_Config, 0x60, 0x0C)
Field (\_SB.PCI0.ISA.PIX0, ByteAcc, NoLock, Preserve)
{
PIRA, 8,
PIRB, 8,
PIRC, 8,
PIRD, 8,
Offset (0x08),
PIRE, 8,
PIRF, 8,
PIRG, 8,
PIRH, 8
}
Scope (_SB)
{
Name (BUFA, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared, _Y1C)
{15}
})
CreateWordField (BUFA, \_SB._Y1C._INT, IRA0)
Device (LNKA)
{
Name (_HID, EisaId ("PNP0C0F"))
Name (_UID, 0x01)
Method (_STA, 0, NotSerialized)
{
And (PIRA, 0x80, Local0)
If (Local0)
{
Return (0x09)
}
Else
{
Return (0x0B)
}
}
Method (_PRS, 0, NotSerialized)
{
Return (PRSA)
}
Method (_DIS, 0, NotSerialized)
{
Or (PIRA, 0x80, PIRA)
}
Method (_CRS, 0, NotSerialized)
{
And (PIRA, 0x0F, Local0)
ShiftLeft (0x01, Local0, IRA0)
Return (BUFA)
}
Method (_SRS, 1, NotSerialized)
{
CreateWordField (Arg0, 0x01, IRA)
FindSetRightBit (IRA, Local0)
Decrement (Local0)
Store (Local0, PIRA)
}
}
Device (LNKB)
{
Name (_HID, EisaId ("PNP0C0F"))
Name (_UID, 0x02)
Method (_STA, 0, NotSerialized)
{
And (PIRB, 0x80, Local0)
If (Local0)
{
Return (0x09)
}
Else
{
Return (0x0B)
}
}
Method (_PRS, 0, NotSerialized)
{
Return (PRSB)
}
Method (_DIS, 0, NotSerialized)
{
Or (PIRB, 0x80, PIRB)
}
Method (_CRS, 0, NotSerialized)
{
And (PIRB, 0x0F, Local0)
ShiftLeft (0x01, Local0, IRA0)
Return (BUFA)
}
Method (_SRS, 1, NotSerialized)
{
CreateWordField (Arg0, 0x01, IRA)
FindSetRightBit (IRA, Local0)
Decrement (Local0)
Store (Local0, PIRB)
}
}
Device (LNKC)
{
Name (_HID, EisaId ("PNP0C0F"))
Name (_UID, 0x03)
Method (_STA, 0, NotSerialized)
{
And (PIRC, 0x80, Local0)
If (Local0)
{
Return (0x09)
}
Else
{
Return (0x0B)
}
}
Method (_PRS, 0, NotSerialized)
{
Return (PRSC)
}
Method (_DIS, 0, NotSerialized)
{
Or (PIRC, 0x80, PIRC)
}
Method (_CRS, 0, NotSerialized)
{
And (PIRC, 0x0F, Local0)
ShiftLeft (0x01, Local0, IRA0)
Return (BUFA)
}
Method (_SRS, 1, NotSerialized)
{
CreateWordField (Arg0, 0x01, IRA)
FindSetRightBit (IRA, Local0)
Decrement (Local0)
Store (Local0, PIRC)
}
}
Device (LNKD)
{
Name (_HID, EisaId ("PNP0C0F"))
Name (_UID, 0x04)
Method (_STA, 0, NotSerialized)
{
And (PIRD, 0x80, Local0)
If (Local0)
{
Return (0x09)
}
Else
{
Return (0x0B)
}
}
Method (_PRS, 0, NotSerialized)
{
Return (PRSD)
}
Method (_DIS, 0, NotSerialized)
{
Or (PIRD, 0x80, PIRD)
}
Method (_CRS, 0, NotSerialized)
{
And (PIRD, 0x0F, Local0)
ShiftLeft (0x01, Local0, IRA0)
Return (BUFA)
}
Method (_SRS, 1, NotSerialized)
{
CreateWordField (Arg0, 0x01, IRA)
FindSetRightBit (IRA, Local0)
Decrement (Local0)
Store (Local0, PIRD)
}
}
Device (LNKE)
{
Name (_HID, EisaId ("PNP0C0F"))
Name (_UID, 0x05)
Method (_STA, 0, NotSerialized)
{
And (PIRE, 0x80, Local0)
If (Local0)
{
Return (0x09)
}
Else
{
Return (0x0B)
}
}
Method (_PRS, 0, NotSerialized)
{
Return (PRSE)
}
Method (_DIS, 0, NotSerialized)
{
Or (PIRE, 0x80, PIRE)
}
Method (_CRS, 0, NotSerialized)
{
And (PIRE, 0x0F, Local0)
ShiftLeft (0x01, Local0, IRA0)
Return (BUFA)
}
Method (_SRS, 1, NotSerialized)
{
CreateWordField (Arg0, 0x01, IRA)
FindSetRightBit (IRA, Local0)
Decrement (Local0)
Store (Local0, PIRE)
}
}
Device (LNKF)
{
Name (_HID, EisaId ("PNP0C0F"))
Name (_UID, 0x06)
Method (_STA, 0, NotSerialized)
{
And (PIRF, 0x80, Local0)
If (Local0)
{
Return (0x09)
}
Else
{
Return (0x0B)
}
}
Method (_PRS, 0, NotSerialized)
{
Return (PRSF)
}
Method (_DIS, 0, NotSerialized)
{
Or (PIRF, 0x80, PIRF)
}
Method (_CRS, 0, NotSerialized)
{
And (PIRF, 0x0F, Local0)
ShiftLeft (0x01, Local0, IRA0)
Return (BUFA)
}
Method (_SRS, 1, NotSerialized)
{
CreateWordField (Arg0, 0x01, IRA)
FindSetRightBit (IRA, Local0)
Decrement (Local0)
Store (Local0, PIRF)
}
}
Device (LNKG)
{
Name (_HID, EisaId ("PNP0C0F"))
Name (_UID, 0x07)
Method (_STA, 0, NotSerialized)
{
And (PIRG, 0x80, Local0)
If (Local0)
{
Return (0x09)
}
Else
{
Return (0x0B)
}
}
Method (_PRS, 0, NotSerialized)
{
Return (PRSG)
}
Method (_DIS, 0, NotSerialized)
{
Or (PIRG, 0x80, PIRG)
}
Method (_CRS, 0, NotSerialized)
{
And (PIRG, 0x0F, Local0)
ShiftLeft (0x01, Local0, IRA0)
Return (BUFA)
}
Method (_SRS, 1, NotSerialized)
{
CreateWordField (Arg0, 0x01, IRA)
FindSetRightBit (IRA, Local0)
Decrement (Local0)
Store (Local0, PIRG)
}
}
Device (LNKH)
{
Name (_HID, EisaId ("PNP0C0F"))
Name (_UID, 0x08)
Method (_STA, 0, NotSerialized)
{
And (PIRH, 0x80, Local0)
If (Local0)
{
Return (0x09)
}
Else
{
Return (0x0B)
}
}
Method (_PRS, 0, NotSerialized)
{
Return (PRSH)
}
Method (_DIS, 0, NotSerialized)
{
Or (PIRH, 0x80, PIRH)
}
Method (_CRS, 0, NotSerialized)
{
And (PIRH, 0x0F, Local0)
ShiftLeft (0x01, Local0, IRA0)
Return (BUFA)
}
Method (_SRS, 1, NotSerialized)
{
CreateWordField (Arg0, 0x01, IRA)
FindSetRightBit (IRA, Local0)
Decrement (Local0)
Store (Local0, PIRH)
}
}
}
}