1a692d8176
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
1079 lines
21 KiB
Text
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)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|