hw/core: Introduce QEMU machine as QOM object
[qemu.git] / hw / i386 / ssdt-misc.dsl
bloba4484b817679715877f58f7dd695be107305995f
1 /*
2  * This program is free software; you can redistribute it and/or modify
3  * it under the terms of the GNU General Public License as published by
4  * the Free Software Foundation; either version 2 of the License, or
5  * (at your option) any later version.
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10  * GNU General Public License for more details.
12  * You should have received a copy of the GNU General Public License along
13  * with this program; if not, see <http://www.gnu.org/licenses/>.
14  */
16 ACPI_EXTRACT_ALL_CODE ssdp_misc_aml
18 DefinitionBlock ("ssdt-misc.aml", "SSDT", 0x01, "BXPC", "BXSSDTSUSP", 0x1)
21 /****************************************************************
22  * PCI memory ranges
23  ****************************************************************/
25     Scope(\) {
26        ACPI_EXTRACT_NAME_DWORD_CONST acpi_pci32_start
27        Name(P0S, 0x12345678)
28        ACPI_EXTRACT_NAME_DWORD_CONST acpi_pci32_end
29        Name(P0E, 0x12345678)
30        ACPI_EXTRACT_NAME_BYTE_CONST acpi_pci64_valid
31        Name(P1V, 0x12)
32        ACPI_EXTRACT_NAME_BUFFER8 acpi_pci64_start
33        Name(P1S, Buffer() { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 })
34        ACPI_EXTRACT_NAME_BUFFER8 acpi_pci64_end
35        Name(P1E, Buffer() { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 })
36        ACPI_EXTRACT_NAME_BUFFER8 acpi_pci64_length
37        Name(P1L, Buffer() { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 })
38     }
41 /****************************************************************
42  * Suspend
43  ****************************************************************/
45     Scope(\) {
46     /*
47      * S3 (suspend-to-ram), S4 (suspend-to-disk) and S5 (power-off) type codes:
48      * must match piix4 emulation.
49      */
51         ACPI_EXTRACT_NAME_STRING acpi_s3_name
52         Name(_S3, Package(0x04) {
53             One,  /* PM1a_CNT.SLP_TYP */
54             One,  /* PM1b_CNT.SLP_TYP */
55             Zero,  /* reserved */
56             Zero   /* reserved */
57         })
58         ACPI_EXTRACT_NAME_STRING acpi_s4_name
59         ACPI_EXTRACT_PKG_START acpi_s4_pkg
60         Name(_S4, Package(0x04) {
61             0x2,  /* PM1a_CNT.SLP_TYP */
62             0x2,  /* PM1b_CNT.SLP_TYP */
63             Zero,  /* reserved */
64             Zero   /* reserved */
65         })
66         Name(_S5, Package(0x04) {
67             Zero,  /* PM1a_CNT.SLP_TYP */
68             Zero,  /* PM1b_CNT.SLP_TYP */
69             Zero,  /* reserved */
70             Zero   /* reserved */
71         })
72     }
74     External(\_SB.PCI0, DeviceObj)
75     External(\_SB.PCI0.ISA, DeviceObj)
77     Scope(\_SB.PCI0.ISA) {
78         Device(PEVT) {
79             Name(_HID, "QEMU0001")
80             /* PEST will be patched to be Zero if no such device */
81             ACPI_EXTRACT_NAME_WORD_CONST ssdt_isa_pest
82             Name(PEST, 0xFFFF)
83             OperationRegion(PEOR, SystemIO, PEST, 0x01)
84             Field(PEOR, ByteAcc, NoLock, Preserve) {
85                 PEPT,   8,
86             }
88             Method(_STA, 0, NotSerialized) {
89                 Store(PEST, Local0)
90                 If (LEqual(Local0, Zero)) {
91                     Return (0x00)
92                 } Else {
93                     Return (0x0F)
94                 }
95             }
97             Method(RDPT, 0, NotSerialized) {
98                 Store(PEPT, Local0)
99                 Return (Local0)
100             }
102             Method(WRPT, 1, NotSerialized) {
103                 Store(Arg0, PEPT)
104             }
106             Name(_CRS, ResourceTemplate() {
107                 IO(Decode16, 0x00, 0x00, 0x01, 0x01, IO)
108             })
110             CreateWordField(_CRS, IO._MIN, IOMN)
111             CreateWordField(_CRS, IO._MAX, IOMX)
113             Method(_INI, 0, NotSerialized) {
114                 Store(PEST, IOMN)
115                 Store(PEST, IOMX)
116             }
117         }
118     }