blob: cb9ec8e9480c85e26dafefb75e540837caf3994d [file] [log] [blame]
/*
* 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")))
{
/* Let OS control everything */
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)
}
}
}
}