mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 10:40:03 +01:00
Unfortunately a HID of PNP0A06 will not work for an existing client driver so this patch aims to choose something that's pretty certain not to class with anything else. Signed-off-by: Paul Durrant <paul.durrant@citrix.com> Committed-by: Keir Fraser <keir@xen.org>
429 lines
14 KiB
Plaintext
429 lines
14 KiB
Plaintext
/******************************************************************************
|
|
* DSDT for Xen with Qemu device model
|
|
*
|
|
* Copyright (c) 2004, Intel Corporation.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms and conditions of the GNU General Public License,
|
|
* version 2, as published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope 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., 59 Temple
|
|
* Place - Suite 330, Boston, MA 02111-1307 USA.
|
|
*/
|
|
|
|
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)
|
|
|
|
/* _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)
|
|
}
|
|
|
|
Scope (\_SB)
|
|
{
|
|
/* ACPI_INFO_PHYSICAL_ADDRESS == 0xFC000000 */
|
|
OperationRegion(BIOS, SystemMemory, 0xFC000000, 24)
|
|
Field(BIOS, ByteAcc, NoLock, Preserve) {
|
|
UAR1, 1,
|
|
UAR2, 1,
|
|
LTP1, 1,
|
|
HPET, 1,
|
|
Offset(4),
|
|
PMIN, 32,
|
|
PLEN, 32,
|
|
MSUA, 32, /* MADT checksum address */
|
|
MAPA, 32, /* MADT LAPIC0 address */
|
|
VGIA, 32 /* VM generation id address */
|
|
}
|
|
|
|
/* 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)
|
|
{
|
|
Name (PRT0, 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,
|
|
Cacheable, ReadWrite,
|
|
0x00000000,
|
|
0x000A0000,
|
|
0x000BFFFF,
|
|
0x00000000,
|
|
0x00020000)
|
|
|
|
DWordMemory(
|
|
ResourceProducer, PosDecode, MinFixed, MaxFixed,
|
|
Cacheable, ReadWrite,
|
|
0x00000000,
|
|
0xF0000000,
|
|
0xF4FFFFFF,
|
|
0x00000000,
|
|
0x05000000,
|
|
,, _Y01)
|
|
})
|
|
|
|
CreateDWordField(PRT0, \_SB.PCI0._CRS._Y01._MIN, MMIN)
|
|
CreateDWordField(PRT0, \_SB.PCI0._CRS._Y01._MAX, MMAX)
|
|
CreateDWordField(PRT0, \_SB.PCI0._CRS._Y01._LEN, MLEN)
|
|
|
|
Store(\_SB.PMIN, MMIN)
|
|
Store(\_SB.PLEN, MLEN)
|
|
Add(MMIN, MLEN, MMAX)
|
|
Subtract(MMAX, One, MMAX)
|
|
|
|
Return (PRT0)
|
|
}
|
|
|
|
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)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|