Files
xen/tools/libacpi/dsdt.asl
T
Andrew Cooper be1fdacf54 LICENSES: Remove the use of deprecated SPDX tags
The GPL and LGPL SPDX forms without an explicit -only or -or-later suffix are
deprecated and should not be used.  Update the documention.

Somewhat unhelpfully at the time of writing, this only appears to be indicated
by the separation of the two tables at https://spdx.org/licenses/

The recent changes to libacpi are the only examples of deprecated LGPL tags in
tree, so fix them all up.

For GPL, we have many examples using deprecated tags.  For now, just identify
them as such and recommend that no new instances get added.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Stefano Stabellini <sstabellini@kernel.org>
2023-05-09 10:37:29 +01:00

448 lines
15 KiB
Plaintext

/* SPDX-License-Identifier: LGPL-2.1-only */
/******************************************************************************
* DSDT for Xen with Qemu device model
*
* Copyright (c) 2004, Intel Corporation.
*/
DefinitionBlock ("DSDT.aml", "DSDT", 2, "Xen", "HVM", 0)
{
Name (\PMBS, 0x0C00)
Name (\PMLN, 0x08)
Name (\IOB1, 0x00)
Name (\IOL1, 0x00)
Name (\APCB, 0xFEC00000)
Name (\APCL, 0x00010000)
Name (\PUID, 0x00)
Scope (\_SB)
{
/* Fix HCT test for 0x400 pci memory:
* - need to report low 640 MB mem as motherboard resource
*/
Device(MEM0)
{
Name(_HID, EISAID("PNP0C02"))
Name(_CRS, ResourceTemplate() {
QWordMemory(
ResourceConsumer, PosDecode, MinFixed,
MaxFixed, Cacheable, ReadWrite,
0x00000000,
0x00000000,
0x0009ffff,
0x00000000,
0x000a0000)
})
}
Device (PCI0)
{
Name (_HID, EisaId ("PNP0A03"))
Name (_UID, 0x00)
Name (_ADR, 0x00)
Name (_BBN, 0x00)
/* Make cirrues VGA S3 suspend/resume work in Windows XP/2003 */
Device (VGA)
{
Name (_ADR, 0x00020000)
Method (_S1D, 0, NotSerialized)
{
Return (0x00)
}
Method (_S2D, 0, NotSerialized)
{
Return (0x00)
}
Method (_S3D, 0, NotSerialized)
{
Return (0x00)
}
}
Method (_CRS, 0, NotSerialized)
{
Store (ResourceTemplate ()
{
/* bus number is from 0 - 255*/
WordBusNumber(
ResourceProducer, MinFixed, MaxFixed, SubDecode,
0x0000,
0x0000,
0x00FF,
0x0000,
0x0100)
IO (Decode16, 0x0CF8, 0x0CF8, 0x01, 0x08)
WordIO(
ResourceProducer, MinFixed, MaxFixed, PosDecode,
EntireRange,
0x0000,
0x0000,
0x0CF7,
0x0000,
0x0CF8)
WordIO(
ResourceProducer, MinFixed, MaxFixed, PosDecode,
EntireRange,
0x0000,
0x0D00,
0xFFFF,
0x0000,
0xF300)
/* reserve memory for pci devices */
DWordMemory(
ResourceProducer, PosDecode, MinFixed, MaxFixed,
WriteCombining, ReadWrite,
0x00000000,
0x000A0000,
0x000BFFFF,
0x00000000,
0x00020000)
DWordMemory(
ResourceProducer, PosDecode, MinFixed, MaxFixed,
NonCacheable, ReadWrite,
0x00000000,
0xF0000000,
0xF4FFFFFF,
0x00000000,
0x05000000,
,, _Y01)
QWordMemory (
ResourceProducer, PosDecode, MinFixed, MaxFixed,
NonCacheable, ReadWrite,
0x0000000000000000,
0x0000000FFFFFFFF0,
0x0000000FFFFFFFFF,
0x0000000000000000,
0x0000000000000010,
,, _Y02)
}, Local1)
CreateDWordField(Local1, \_SB.PCI0._CRS._Y01._MIN, MMIN)
CreateDWordField(Local1, \_SB.PCI0._CRS._Y01._MAX, MMAX)
CreateDWordField(Local1, \_SB.PCI0._CRS._Y01._LEN, MLEN)
Store(\_SB.PMIN, MMIN)
Store(\_SB.PLEN, MLEN)
Add(MMIN, MLEN, MMAX)
Subtract(MMAX, One, MMAX)
/*
* WinXP / Win2K3 blue-screen for operations on 64-bit values.
* Therefore we need to split the 64-bit calculations needed
* here, but different iasl versions evaluate name references
* to integers differently:
* Year (approximate) 2006 2008 2012
* \_SB.PCI0._CRS._Y02 zero valid valid
* \_SB.PCI0._CRS._Y02._MIN valid valid huge
*/
If(LEqual(Zero, \_SB.PCI0._CRS._Y02)) {
Subtract(\_SB.PCI0._CRS._Y02._MIN, 14, Local0)
} Else {
Store(\_SB.PCI0._CRS._Y02, Local0)
}
CreateDWordField(Local1, Add(Local0, 14), MINL)
CreateDWordField(Local1, Add(Local0, 18), MINH)
CreateDWordField(Local1, Add(Local0, 22), MAXL)
CreateDWordField(Local1, Add(Local0, 26), MAXH)
CreateDWordField(Local1, Add(Local0, 38), LENL)
CreateDWordField(Local1, Add(Local0, 42), LENH)
Store(\_SB.LMIN, MINL)
Store(\_SB.HMIN, MINH)
Store(\_SB.LLEN, LENL)
Store(\_SB.HLEN, LENH)
Add(MINL, LENL, MAXL)
Add(MINH, LENH, MAXH)
If(LLess(MAXL, MINL)) {
Add(MAXH, One, MAXH)
}
If(LOr(MINH, LENL)) {
If(LEqual(MAXL, 0)) {
Subtract(MAXH, One, MAXH)
}
Subtract(MAXL, One, MAXL)
}
Return (Local1)
}
Device(HPET) {
Name(_HID, EISAID("PNP0103"))
Name(_UID, 0)
Method (_STA, 0, NotSerialized) {
If(LEqual(\_SB.HPET, 0)) {
Return(0x00)
} Else {
Return(0x0F)
}
}
Name(_CRS, ResourceTemplate() {
DWordMemory(
ResourceConsumer, PosDecode, MinFixed, MaxFixed,
NonCacheable, ReadWrite,
0x00000000,
0xFED00000,
0xFED003FF,
0x00000000,
0x00000400 /* 1K memory: FED00000 - FED003FF */
)
})
}
Device (ISA)
{
Name (_ADR, 0x00010000) /* device 1, fn 0 */
OperationRegion(PIRQ, PCI_Config, 0x60, 0x4)
Scope(\) {
Field (\_SB.PCI0.ISA.PIRQ, ByteAcc, NoLock, Preserve) {
PIRA, 8,
PIRB, 8,
PIRC, 8,
PIRD, 8
}
}
Device (SYSR)
{
Name (_HID, EisaId ("PNP0C02"))
Name (_UID, 0x01)
Name (CRS, ResourceTemplate ()
{
/* TODO: list hidden resources */
IO (Decode16, 0x0010, 0x0010, 0x00, 0x10)
IO (Decode16, 0x0022, 0x0022, 0x00, 0x0C)
IO (Decode16, 0x0030, 0x0030, 0x00, 0x10)
IO (Decode16, 0x0044, 0x0044, 0x00, 0x1C)
IO (Decode16, 0x0062, 0x0062, 0x00, 0x02)
IO (Decode16, 0x0065, 0x0065, 0x00, 0x0B)
IO (Decode16, 0x0072, 0x0072, 0x00, 0x0E)
IO (Decode16, 0x0080, 0x0080, 0x00, 0x01)
IO (Decode16, 0x0084, 0x0084, 0x00, 0x03)
IO (Decode16, 0x0088, 0x0088, 0x00, 0x01)
IO (Decode16, 0x008C, 0x008C, 0x00, 0x03)
IO (Decode16, 0x0090, 0x0090, 0x00, 0x10)
IO (Decode16, 0x00A2, 0x00A2, 0x00, 0x1C)
IO (Decode16, 0x00E0, 0x00E0, 0x00, 0x10)
IO (Decode16, 0x08A0, 0x08A0, 0x00, 0x04)
IO (Decode16, 0x0CC0, 0x0CC0, 0x00, 0x10)
IO (Decode16, 0x04D0, 0x04D0, 0x00, 0x02)
})
Method (_CRS, 0, NotSerialized)
{
Return (CRS)
}
}
Device (PIC)
{
Name (_HID, EisaId ("PNP0000"))
Name (_CRS, ResourceTemplate ()
{
IO (Decode16, 0x0020, 0x0020, 0x01, 0x02)
IO (Decode16, 0x00A0, 0x00A0, 0x01, 0x02)
IRQNoFlags () {2}
})
}
Device (DMA0)
{
Name (_HID, EisaId ("PNP0200"))
Name (_CRS, ResourceTemplate ()
{
DMA (Compatibility, BusMaster, Transfer8) {4}
IO (Decode16, 0x0000, 0x0000, 0x00, 0x10)
IO (Decode16, 0x0081, 0x0081, 0x00, 0x03)
IO (Decode16, 0x0087, 0x0087, 0x00, 0x01)
IO (Decode16, 0x0089, 0x0089, 0x00, 0x03)
IO (Decode16, 0x008F, 0x008F, 0x00, 0x01)
IO (Decode16, 0x00C0, 0x00C0, 0x00, 0x20)
IO (Decode16, 0x0480, 0x0480, 0x00, 0x10)
})
}
Device (TMR)
{
Name (_HID, EisaId ("PNP0100"))
Name (_CRS, ResourceTemplate ()
{
IO (Decode16, 0x0040, 0x0040, 0x00, 0x04)
IRQNoFlags () {0}
})
}
Device (RTC)
{
Name (_HID, EisaId ("PNP0B00"))
Name (_CRS, ResourceTemplate ()
{
IO (Decode16, 0x0070, 0x0070, 0x00, 0x02)
IRQNoFlags () {8}
})
}
Device (SPKR)
{
Name (_HID, EisaId ("PNP0800"))
Name (_CRS, ResourceTemplate ()
{
IO (Decode16, 0x0061, 0x0061, 0x00, 0x01)
})
}
Device (PS2M)
{
Name (_HID, EisaId ("PNP0F13"))
Name (_CID, 0x130FD041)
Method (_STA, 0, NotSerialized)
{
Return (0x0F)
}
Name (_CRS, ResourceTemplate ()
{
IRQNoFlags () {12}
})
}
Device (PS2K)
{
Name (_HID, EisaId ("PNP0303"))
Name (_CID, 0x0B03D041)
Method (_STA, 0, NotSerialized)
{
Return (0x0F)
}
Name (_CRS, ResourceTemplate ()
{
IO (Decode16, 0x0060, 0x0060, 0x00, 0x01)
IO (Decode16, 0x0064, 0x0064, 0x00, 0x01)
IRQNoFlags () {1}
})
}
Device (FDC0)
{
Name (_HID, EisaId ("PNP0700"))
Method (_STA, 0, NotSerialized)
{
Return (0x0F)
}
Name (_CRS, ResourceTemplate ()
{
IO (Decode16, 0x03F0, 0x03F0, 0x01, 0x06)
IO (Decode16, 0x03F7, 0x03F7, 0x01, 0x01)
IRQNoFlags () {6}
DMA (Compatibility, NotBusMaster, Transfer8) {2}
})
}
Device (UAR1)
{
Name (_HID, EisaId ("PNP0501"))
Name (_UID, 0x01)
Method (_STA, 0, NotSerialized)
{
If(LEqual(\_SB.UAR1, 0)) {
Return(0x00)
} Else {
Return(0x0F)
}
}
Name (_CRS, ResourceTemplate()
{
IO (Decode16, 0x03F8, 0x03F8, 8, 8)
IRQNoFlags () {4}
})
}
Device (UAR2)
{
Name (_HID, EisaId ("PNP0501"))
Name (_UID, 0x02)
Method (_STA, 0, NotSerialized)
{
If(LEqual(\_SB.UAR2, 0)) {
Return(0x00)
} Else {
Return(0x0F)
}
}
Name (_CRS, ResourceTemplate()
{
IO (Decode16, 0x02F8, 0x02F8, 8, 8)
IRQNoFlags () {3}
})
}
Device (LTP1)
{
Name (_HID, EisaId ("PNP0400"))
Name (_UID, 0x02)
Method (_STA, 0, NotSerialized)
{
If(LEqual(\_SB.LTP1, 0)) {
Return(0x00)
} Else {
Return(0x0F)
}
}
Name (_CRS, ResourceTemplate()
{
IO (Decode16, 0x0378, 0x0378, 0x08, 0x08)
IRQNoFlags () {7}
})
}
Device(VGID) {
Name(_HID, EisaId ("XEN0000"))
Name(_UID, 0x00)
Name(_CID, "VM_Gen_Counter")
Name(_DDN, "VM_Gen_Counter")
Method(_STA, 0, NotSerialized)
{
If(LEqual(\_SB.VGIA, 0x00000000)) {
Return(0x00)
} Else {
Return(0x0F)
}
}
Name(PKG, Package ()
{
0x00000000,
0x00000000
})
Method(ADDR, 0, NotSerialized)
{
Store(\_SB.VGIA, Index(PKG, 0))
Return(PKG)
}
}
}
}
}
/* _S3 and _S4 are in separate SSDTs */
Name (\_S5, Package (0x04) {
0x00, /* PM1a_CNT.SLP_TYP */
0x00, /* PM1b_CNT.SLP_TYP */
0x00, /* reserved */
0x00 /* reserved */
})
Name(PICD, 0)
Method(_PIC, 1) {
Store(Arg0, PICD)
}
}