summaryrefslogtreecommitdiff
path: root/hw/i386/ssdt-pcihp.dsl
blob: ac91c05836ee1de16cf1ca14d991786af0d3607c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
/*
 * 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; either version 2 of the License, or
 * (at your option) any later version.

 * 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, see <http://www.gnu.org/licenses/>.
 */

ACPI_EXTRACT_ALL_CODE ssdp_pcihp_aml

DefinitionBlock ("ssdt-pcihp.aml", "SSDT", 0x01, "BXPC", "BXSSDTPCIHP", 0x1)
{

/****************************************************************
 * PCI hotplug
 ****************************************************************/

    /* Objects supplied by DSDT */
    External(\_SB.PCI0, DeviceObj)
    External(\_SB.PCI0.PCEJ, MethodObj)
    External(BSEL, IntObj)

    Scope(\_SB.PCI0) {

        /* Bulk generated PCI hotplug devices */
        ACPI_EXTRACT_DEVICE_START ssdt_pcihp_start
        ACPI_EXTRACT_DEVICE_END ssdt_pcihp_end
        ACPI_EXTRACT_DEVICE_STRING ssdt_pcihp_name

        // Extract the offsets of the device name, address dword and the slot
        // name byte - we fill them in for each device.
        Device(SAA) {
            ACPI_EXTRACT_NAME_BYTE_CONST ssdt_pcihp_id
            Name(_SUN, 0xAA)
            ACPI_EXTRACT_NAME_DWORD_CONST ssdt_pcihp_adr
            Name(_ADR, 0xAA0000)
            Method(_EJ0, 1) {
                PCEJ(BSEL, _SUN)
            }
        }

        ACPI_EXTRACT_DEVICE_START ssdt_pcinohp_start
        ACPI_EXTRACT_DEVICE_END ssdt_pcinohp_end
        ACPI_EXTRACT_DEVICE_STRING ssdt_pcinohp_name

        // Extract the offsets of the device name, address dword and the slot
        // name byte - we fill them in for each device.
        Device(SBB) {
            ACPI_EXTRACT_NAME_DWORD_CONST ssdt_pcinohp_adr
            Name(_ADR, 0xAA0000)
        }

        ACPI_EXTRACT_DEVICE_START ssdt_pcivga_start
        ACPI_EXTRACT_DEVICE_END ssdt_pcivga_end
        ACPI_EXTRACT_DEVICE_STRING ssdt_pcivga_name

        // Extract the offsets of the device name, address dword and the slot
        // name byte - we fill them in for each device.
        Device(SCC) {
            ACPI_EXTRACT_NAME_DWORD_CONST ssdt_pcivga_adr
            Name(_ADR, 0xAA0000)
            Method(_S1D, 0, NotSerialized) {
                Return (0x00)
            }
            Method(_S2D, 0, NotSerialized) {
                Return (0x00)
            }
            Method(_S3D, 0, NotSerialized) {
                Return (0x00)
            }
        }

        ACPI_EXTRACT_DEVICE_START ssdt_pciqxl_start
        ACPI_EXTRACT_DEVICE_END ssdt_pciqxl_end
        ACPI_EXTRACT_DEVICE_STRING ssdt_pciqxl_name

        // Extract the offsets of the device name, address dword and the slot
        // name byte - we fill them in for each device.
        Device(SDD) {
            ACPI_EXTRACT_NAME_DWORD_CONST ssdt_pciqxl_adr
            Name(_ADR, 0xAA0000)
            Method(_S1D, 0, NotSerialized) {
                Return (0x00)
            }
            Method(_S2D, 0, NotSerialized) {
                Return (0x00)
            }
            Method(_S3D, 0, NotSerialized) {
                Return (0x03)           // QXL
            }
        }
    }
}