hc
2024-03-22 a0752693d998599af469473b8dc239ef973a012f
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
/** @file
PCI express expansion ports
 
Copyright (c) 2013-2015 Intel Corporation.
 
SPDX-License-Identifier: BSD-2-Clause-Patent
 
**/
 
#ifndef PcieExpansionPrt_asi
#define PcieExpansionPrt_asi
 
Device (PEX0)    // PCI express bus bridged from [Bus 0, Device 23, Function 0]
{
    Name(_ADR,0x00170000)            // Device (HI WORD)=23, Func (LO WORD)=0
    Name(_PRW,Package(){0x11,0x03})  // GPE pin 0x11, Wake from S3 -- PCI PME#
 
    OperationRegion (PES0,PCI_Config,0x40,0xA0)
    Field (PES0, AnyAcc, NoLock, Preserve)
    {
    Offset(0x1A),              // SLSTS - Slot Status Register
    ABP0,  1,                  // Bit 0, Attention Button Pressed
    ,  2,
    PDC0,  1,                  // Bit 3, Presence Detect Changed
    ,  2,
    PDS0,  1,                  // Bit 6, Presence Detect State
    , 1,
    LSC0,  1,                  // Bit 8, Link Active State Changed
    offset (0x20),
    , 16,
    PMS0, 1,                   // Bit 16, PME Status
    offset (0x98),
    , 30,
    HPE0, 1,                   // Bit 30, Hot Plug SCI Enable
    PCE0, 1,                   // Bit 31, Power Management SCI Enable.
    , 30,
    HPS0, 1,                   // Bit 30, Hot Plug SCI Status
    PCS0, 1,                   // Bit 31, Power Management SCI Status.
    }
 
    Method(_PRT,0,NotSerialized) {
        If (LEqual(\GPIC, Zero)) // 8259 Interrupt Routing
        {
            Return (
                Package()
                {
                    // Port 0: INTA->PIRQE,INTB->PIRQF,INTC->PIRQG,INTD->PIRQH
                    Package() {0x0000ffff, 0, \_SB_.PCI0.LPC.LNKE, 0}, // PCI Slot 1
                    Package() {0x0000ffff, 1, \_SB_.PCI0.LPC.LNKF, 0},
                    Package() {0x0000ffff, 2, \_SB_.PCI0.LPC.LNKG, 0},
                    Package() {0x0000ffff, 3, \_SB_.PCI0.LPC.LNKH, 0},
                }
            )
        }
        else    // IOAPIC Routing
        {
            Return (
                Package()
                {
                    // Port 0: INTA->PIRQE,INTB->PIRQF,INTC->PIRQG,INTD->PIRQH
                    Package() {0x0000ffff, 0, 0, 20}, // PCI Slot 1
                    Package() {0x0000ffff, 1, 0, 21},
                    Package() {0x0000ffff, 2, 0, 22},
                    Package() {0x0000ffff, 3, 0, 23},
                }
            )
        }
    }
}
 
Device (PEX1)    // PCI express bus bridged from [Bus 0, Device 23, Function 1]
{
    Name(_ADR,0x00170001)            // Device (HI WORD)=23, Func (LO WORD)=1
    Name(_PRW,Package(){0x11,0x03})  // GPE pin 0x11, Wake from S3 -- PCI PME#
    OperationRegion (PES1,PCI_Config,0x40,0xA0)
    Field (PES1, AnyAcc, NoLock, Preserve)
    {
    Offset(0x1A),              // SLSTS - Slot Status Register
    ABP1,  1,                  // Bit 0, Attention Button Pressed
    ,  2,
    PDC1,  1,                  // Bit 3, Presence Detect Changed
    ,  2,
    PDS1,  1,                  // Bit 6, Presence Detect State
    , 1,
    LSC1,  1,                  // Bit 8, Link Active State Changed
    offset (0x20),
    , 16,
    PMS1, 1,                   // Bit 16, PME Status
    offset (0x98),
    , 30,
    HPE1, 1,                   // Bit 30, Hot Plug SCI Enable
    PCE1, 1,                   // Bit 31, Power Management SCI Enable.
    , 30,
    HPS1, 1,                   // Bit 30, Hot Plug SCI Status
    PCS1, 1,                   // Bit 31, Power Management SCI Status.
    }
    Method(_PRT,0,NotSerialized) {
        If (LEqual(\GPIC, Zero)) // 8259 Interrupt Routing
        {
            Return (
                Package()
                {
                    // Port 1: INTA->PIRQF,INTB->PIRQG,INTC->PIRQH,INTD->PIRQE
                    Package() {0x0000ffff, 0, \_SB_.PCI0.LPC.LNKF, 0},
                    Package() {0x0000ffff, 1, \_SB_.PCI0.LPC.LNKG, 0},
                    Package() {0x0000ffff, 2, \_SB_.PCI0.LPC.LNKH, 0},
                    Package() {0x0000ffff, 3, \_SB_.PCI0.LPC.LNKE, 0},
                }
            )
        }
        else    // IOAPIC Routing
        {
            Return (
                Package()
                {
                    // Port 1: INTA->PIRQF,INTB->PIRQG,INTC->PIRQH,INTD->PIRQE
                    Package() {0x0000ffff, 0, 0, 21},
                    Package() {0x0000ffff, 1, 0, 22},
                    Package() {0x0000ffff, 2, 0, 23},
                    Package() {0x0000ffff, 3, 0, 20},
                }
            )
        }
    }
}
 
#endif