]> git.proxmox.com Git - mirror_edk2.git/blame - QuarkPlatformPkg/Acpi/AcpiTables/Dsdt/PciHostBridge.asi
QuarkPlatformPkg: Add new package for Galileo boards
[mirror_edk2.git] / QuarkPlatformPkg / Acpi / AcpiTables / Dsdt / PciHostBridge.asi
CommitLineData
b303605e
MK
1/** @file\r
2PCI Host Bridge Definitions\r
3\r
4Copyright (c) 2013-2015 Intel Corporation.\r
5\r
6This program and the accompanying materials\r
7are licensed and made available under the terms and conditions of the BSD License\r
8which accompanies this distribution. The full text of the license may be found at\r
9http://opensource.org/licenses/bsd-license.php\r
10\r
11THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13\r
14**/\r
15\r
16\r
17Name(PBRS, ResourceTemplate() {\r
18 WORDBusNumber( //Bus number resource (0); the bridge produces bus numbers for its subsequent buses\r
19 ResourceProducer, // bit 0 of general flags is 1\r
20 MinFixed, // Range is fixed\r
21 MaxFixed, // Range is fixed\r
22 PosDecode, // PosDecode\r
23 0x0000, // Granularity\r
24 0x0000, // Min\r
25 0x001f, // Max\r
26 0x0000, // Translation\r
27 0x0020 // Range Length = Max-Min+1\r
28 )\r
29\r
30 WORDIO( //Consumed-and-produced resource (all I/O below CF8)\r
31 ResourceProducer, // bit 0 of general flags is 0\r
32 MinFixed, // Range is fixed\r
33 MaxFixed, // Range is fixed\r
34 PosDecode,\r
35 EntireRange,\r
36 0x0000, // Granularity\r
37 0x0000, // Min\r
38 0x0cf7, // Max\r
39 0x0000, // Translation\r
40 0x0cf8 // Range Length\r
41 )\r
42\r
43 IO( //Consumed resource (CF8-CFF)\r
44 Decode16,\r
45 0x0cf8,\r
46 0xcf8,\r
47 1,\r
48 8\r
49 )\r
50\r
51 WORDIO( //Consumed-and-produced resource (all I/O above CFF)\r
52 ResourceProducer, // bit 0 of general flags is 0\r
53 MinFixed, // Range is fixed\r
54 MaxFixed, // Range is fixed\r
55 PosDecode,\r
56 EntireRange,\r
57 0x0000, // Granularity\r
58 0x0d00, // Min\r
59 0xffff, // Max\r
60 0x0000, // Translation\r
61 0xf300 // Range Length\r
62 )\r
63\r
64 DWORDMEMORY( // descriptor for dos area(0->0xa0000)\r
65 ResourceProducer, // bit 0 of general flags is 0\r
66 PosDecode,\r
67 MinFixed, // Range is fixed\r
68 MaxFixed, // Range is Fixed\r
69 Cacheable,\r
70 ReadWrite,\r
71 0x00000000, // Granularity\r
72 0x000a0000, // Min\r
73 0x000bffff, // Max\r
74 0x00000000, // Translation\r
75 0x00020000 // Range Length\r
76 )\r
77\r
78 DWORDMemory( // Consumed-and-produced resource for pci memory mapped memory\r
79 ResourceProducer, // bit 0 of general flags is 0\r
80 PosDecode, // positive Decode\r
81 MinFixed, // Range is fixed\r
82 MaxFixed, // Range is fixed\r
83 Cacheable,\r
84 ReadWrite,\r
85 0x00000000, // Granularity\r
86 0x00000000, // Min (calculated dynamically)\r
87\r
88 0xfebfffff, // Max = IO Apic base address - 1\r
89 0x00000000, // Translation\r
90 0xfec00000, // Range Length (calculated dynamically)\r
91 , // Optional field left blank\r
92 , // Optional field left blank\r
93 MEM1 // Name declaration for this descriptor\r
94 )\r
95\r
96}) // end of CRES Buffer\r
97\r
98\r
99Method(_CRS, 0x0, NotSerialized)\r
100{\r
101 CreateDWordField(PBRS, \_SB.PCI0.MEM1._MIN, MMIN)\r
102 CreateDWordField(PBRS, \_SB.PCI0.MEM1._MAX, MMAX)\r
103 CreateDWordField(PBRS, \_SB.PCI0.MEM1._LEN, MLEN)\r
104\r
105 // HMBOUND is PCI memory base\r
106 And(MNRD(0x03, 0x08), 0xFFFFF000, MMIN)\r
107 Add(Subtract(MMAX, MMIN), 1, MLEN)\r
108\r
109 Return(PBRS)\r
110}\r
111\r
112// Message Nework Registers\r
113OperationRegion(MNR, PCI_Config, 0xD0, 0x10)\r
114Field(MNR, DWordAcc, NoLock, Preserve)\r
115{\r
116 MCR, 32, // Message Control Register\r
117 MDR, 32 // Message Data Register\r
118}\r
119\r
120// Message Nework Read Method\r
121// Arg0 = Port\r
122// Arg1 = RegAddress\r
123// return 32 bit register value\r
124Method(MNRD, 2, Serialized)\r
125{\r
126 Or(ShiftLeft(Arg0, 16), ShiftLeft(Arg1, 8), Local0)\r
127 Or(Local0, 0x100000F0, Local0)\r
128 Store(Local0, MCR)\r
129 Return(MDR)\r
130}\r
131\r
132// Message Nework Write Method\r
133// Arg0 = Port\r
134// Arg1 = RegAddress\r
135// Arg2 = 32 bit write value\r
136Method(MNWR, 3, Serialized)\r
137{\r
138 Store(Arg2, MDR)\r
139 Or(ShiftLeft(Arg0, 16), ShiftLeft(Arg1, 8), Local0)\r
140 Or(Local0, 0x110000F0, Local0)\r
141 Store(Local0, MCR)\r
142}\r
143\r
144Method(_PRT, 0, NotSerialized)\r
145{\r
146 If (LEqual(\GPIC, Zero)) // 8259 Interrupt Routing\r
147 {\r
148 Return (\r
149 Package()\r
150 {\r
151 // Bus 0, Device 20 - IOSFAHB Bridge\r
152 Package() {0x0014ffff, 0, \_SB.PCI0.LPC.LNKA, 0}, // INTA\r
153 Package() {0x0014ffff, 1, \_SB.PCI0.LPC.LNKB, 0}, // INTB\r
154 Package() {0x0014ffff, 2, \_SB.PCI0.LPC.LNKC, 0}, // INTC\r
155 Package() {0x0014ffff, 3, \_SB.PCI0.LPC.LNKD, 0}, // INTD\r
156\r
157 // Bus 0, Device 21 - IOSFAHB Bridge\r
158 Package() {0x0015ffff, 0, \_SB.PCI0.LPC.LNKA, 0}, // INTA\r
159 Package() {0x0015ffff, 1, \_SB.PCI0.LPC.LNKB, 0}, // INTB\r
160 Package() {0x0015ffff, 2, \_SB.PCI0.LPC.LNKC, 0}, // INTC\r
161 Package() {0x0015ffff, 3, \_SB.PCI0.LPC.LNKD, 0}, // INTD\r
162\r
163 // Bus 0, Device 23 - PCIe port 0\r
164 Package() {0x0017ffff, 0, \_SB.PCI0.LPC.LNKE, 0}, // INTA\r
165 Package() {0x0017ffff, 1, \_SB.PCI0.LPC.LNKF, 0}, // INTB\r
166 Package() {0x0017ffff, 2, \_SB.PCI0.LPC.LNKG, 0}, // INTC\r
167 Package() {0x0017ffff, 3, \_SB.PCI0.LPC.LNKH, 0}, // INTD\r
168\r
169 // Bus 0, Device 31\r
170 Package() {0x001fffff, 0, \_SB.PCI0.LPC.LNKA, 0}, // LPC Bridge\r
171 }\r
172 )\r
173 }\r
174 else {\r
175 Return (\r
176 Package()\r
177 {\r
178 // Bus 0, Device 20 - IOSFAHB Bridge\r
179 Package() {0x0014ffff, 0, 0, 16}, // INTA\r
180 Package() {0x0014ffff, 1, 0, 17}, // INTB\r
181 Package() {0x0014ffff, 2, 0, 18}, // INTC\r
182 Package() {0x0014ffff, 3, 0, 19}, // INTD\r
183\r
184 // Bus 0, Device 21 - IOSFAHB Bridge\r
185 Package() {0x0015ffff, 0, 0, 16}, // INTA\r
186 Package() {0x0015ffff, 1, 0, 17}, // INTB\r
187 Package() {0x0015ffff, 2, 0, 18}, // INTC\r
188 Package() {0x0015ffff, 3, 0, 19}, // INTD\r
189\r
190 // Bus 0, Device 23 - PCIe port 0\r
191 Package() {0x0017ffff, 0, 0, 20}, // INTA\r
192 Package() {0x0017ffff, 1, 0, 21}, // INTB\r
193 Package() {0x0017ffff, 2, 0, 22}, // INTC\r
194 Package() {0x0017ffff, 3, 0, 23}, // INTD\r
195\r
196 // Bus 0, Device 31\r
197 Package() {0x001fffff, 0, 0, 16}, // LPC Bridge\r
198 }\r
199 )\r
200 }\r
201}\r