]> git.proxmox.com Git - mirror_edk2.git/blob - QuarkPlatformPkg/Acpi/AcpiTables/Dsdt/Platform.asl
QuarkPlatformPkg: Add new package for Galileo boards
[mirror_edk2.git] / QuarkPlatformPkg / Acpi / AcpiTables / Dsdt / Platform.asl
1 /** @file
2 Contains root level name space objects for the platform
3
4 Copyright (c) 2013-2015 Intel Corporation.
5
6 This program and the accompanying materials
7 are licensed and made available under the terms and conditions of the BSD License
8 which accompanies this distribution. The full text of the license may be found at
9 http://opensource.org/licenses/bsd-license.php
10
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13
14 **/
15
16 //
17 // OS TYPE DEFINITION
18 //
19 #define WINDOWS_XP 0x01
20 #define WINDOWS_XP_SP1 0x02
21 #define WINDOWS_XP_SP2 0x04
22 #define WINDOWS_2003 0x08
23 #define WINDOWS_Vista 0x10
24 #define WINDOWS_WIN7 0x11
25 #define WINDOWS_WIN8 0x12
26 #define WINDOWS_WIN8_1 0x13
27 #define LINUX 0xF0
28
29 //
30 // GPIO Interrupt Connection Resource Descriptor (GpioInt) usage.
31 // GpioInt() descriptors maybe used in this file and included .asi files.
32 //
33 // The mapping below was provided by the first OS user that requested
34 // GpioInt() support.
35 // Other OS users that need GpioInt() support must use the following mapping.
36 //
37 #define QUARK_GPIO8_MAPPING 0x00
38 #define QUARK_GPIO9_MAPPING 0x01
39 #define QUARK_GPIO_SUS0_MAPPING 0x02
40 #define QUARK_GPIO_SUS1_MAPPING 0x03
41 #define QUARK_GPIO_SUS2_MAPPING 0x04
42 #define QUARK_GPIO_SUS3_MAPPING 0x05
43 #define QUARK_GPIO_SUS4_MAPPING 0x06
44 #define QUARK_GPIO_SUS5_MAPPING 0x07
45 #define QUARK_GPIO0_MAPPING 0x08
46 #define QUARK_GPIO1_MAPPING 0x09
47 #define QUARK_GPIO2_MAPPING 0x0A
48 #define QUARK_GPIO3_MAPPING 0x0B
49 #define QUARK_GPIO4_MAPPING 0x0C
50 #define QUARK_GPIO5_MAPPING 0x0D
51 #define QUARK_GPIO6_MAPPING 0x0E
52 #define QUARK_GPIO7_MAPPING 0x0F
53
54 DefinitionBlock (
55 "Platform.aml",
56 "DSDT",
57 1,
58 "INTEL ",
59 "QuarkNcSocId",
60 3)
61 {
62 //
63 // Global Variables
64 //
65 Name(\GPIC, 0x0)
66
67 //
68 // Port 80
69 //
70 OperationRegion (DBG0, SystemIO, 0x80, 1)
71 Field (DBG0, ByteAcc, NoLock, Preserve)
72 { IO80,8 }
73
74 //
75 // Access CMOS range
76 //
77 OperationRegion (ACMS, SystemIO, 0x72, 2)
78 Field (ACMS, ByteAcc, NoLock, Preserve)
79 { INDX, 8, DATA, 8 }
80
81 //
82 // Global NVS Memory Block
83 //
84 OperationRegion (MNVS, SystemMemory, 0xFFFF0000, 512)
85 Field (MNVS, ByteAcc, NoLock, Preserve)
86 {
87 OSTP, 32,
88 CFGD, 32,
89 HPEA, 32, // HPET Enabled ?
90
91 P1BB, 32, // Pm1blkIoBaseAddress;
92 PBAB, 32, // PmbaIoBaseAddress;
93 GP0B, 32, // Gpe0blkIoBaseAddress;
94 GPAB, 32, // GbaIoBaseAddress;
95
96 SMBB, 32, // SmbaIoBaseAddress;
97 NRV1, 32, // GNVS reserved field 1.
98 WDTB, 32, // WdtbaIoBaseAddress;
99
100 HPTB, 32, // HpetBaseAddress;
101 HPTS, 32, // HpetSize;
102 PEXB, 32, // PciExpressBaseAddress;
103 PEXS, 32, // PciExpressSize;
104
105 RCBB, 32, // RcbaMmioBaseAddress;
106 RCBS, 32, // RcbaMmioSize;
107 APCB, 32, // IoApicBaseAddress;
108 APCS, 32, // IoApicSize;
109
110 TPMP, 32, // TpmPresent ?
111 DBGP, 32, // DBG2 Present?
112 PTYP, 32, // Set to one of EFI_PLATFORM_TYPE enums.
113 ALTS, 32, // Use alternate I2c SLA addresses.
114 }
115
116 OperationRegion (GPEB, SystemIO, 0x1100, 0x40) //GPE Block
117 Field (GPEB, AnyAcc, NoLock, Preserve)
118 {
119 Offset(0x10),
120 SMIE, 32, // SMI Enable
121 SMIS, 32, // SMI Status
122 }
123
124 //
125 // Processor Objects
126 //
127 Scope(\_PR) {
128 //
129 // IO base will be updated at runtime with search key "PRIO"
130 //
131 Processor (CPU0, 0x01, 0x4F495250, 0x06) {}
132 }
133
134 //
135 // System Sleep States
136 //
137 Name (\_S0,Package (){0,0,0,0})
138 Name (\_S3,Package (){5,0,0,0})
139 Name (\_S4,Package (){6,0,0,0})
140 Name (\_S5,Package (){7,0,0,0})
141
142 //
143 // General Purpose Event
144 //
145 Scope(\_GPE)
146 {
147 //
148 // EGPE generated GPE
149 //
150 Method(_L0D, 0x0, NotSerialized)
151 {
152 //
153 // Check EGPE for this wake event
154 //
155 Notify (\_SB.SLPB, 0x02)
156
157 }
158
159 //
160 // GPIO generated GPE
161 //
162 Method(_L0E, 0x0, NotSerialized)
163 {
164 //
165 // Check GPIO for this wake event
166 //
167 Notify (\_SB.PWRB, 0x02)
168
169 }
170
171 //
172 // SCLT generated GPE
173 //
174 Method(_L0F, 0x0, NotSerialized)
175 {
176 //
177 // Check SCLT for this wake event
178 //
179 Notify (\_SB.PCI0.SDIO, 0x02)
180 Notify (\_SB.PCI0.URT0, 0x02)
181 Notify (\_SB.PCI0.USBD, 0x02)
182 Notify (\_SB.PCI0.EHCI, 0x02)
183 Notify (\_SB.PCI0.OHCI, 0x02)
184 Notify (\_SB.PCI0.URT1, 0x02)
185 Notify (\_SB.PCI0.ENT0, 0x02)
186 Notify (\_SB.PCI0.ENT1, 0x02)
187 Notify (\_SB.PCI0.SPI0, 0x02)
188 Notify (\_SB.PCI0.SPI1, 0x02)
189 Notify (\_SB.PCI0.GIP0, 0x02)
190
191 }
192
193 //
194 // Remote Management Unit generated GPE
195 //
196 Method(_L10, 0x0, NotSerialized)
197 {
198 //
199 // Check Remote Management Unit for this wake event.
200 //
201 }
202
203 //
204 // PCIE generated GPE
205 //
206 Method(_L11, 0x0, NotSerialized)
207 {
208 //
209 // Check PCIE for this wake event
210 //
211 Notify (\_SB.PCI0.PEX0, 0x02)
212 Notify (\_SB.PCI0.PEX1, 0x02)
213 }
214 }
215
216 //
217 // define Sleeping button as mentioned in ACPI spec 2.0
218 //
219 Device (\_SB.SLPB)
220 {
221 Name (_HID, EISAID ("PNP0C0E"))
222 Method (_PRW, 0, NotSerialized)
223 {
224 Return (Package (0x02) {0x0D,0x04})
225 }
226 }
227
228 //
229 // define Power Button
230 //
231 Device (\_SB.PWRB)
232 {
233 Name (_HID, EISAID ("PNP0C0C"))
234 Method (_PRW, 0, NotSerialized)
235 {
236 Return (Package (0x02) {0x0E,0x04})
237 }
238 }
239 //
240 // System Wake up
241 //
242 Method(_WAK, 1, Serialized)
243 {
244 // Do nothing here
245 Return (0)
246 }
247
248 //
249 // System sleep down
250 //
251 Method (_PTS, 1, NotSerialized)
252 {
253 // Get ready for S3 sleep
254 if (Lequal(Arg0,3))
255 {
256 Store(0xffffffff,SMIS) // clear SMI status
257 Store(SMIE, Local0) // SMI Enable
258 Or(Local0,0x4,SMIE) // Generate SMI on sleep
259 }
260 }
261
262 //
263 // Determing PIC mode
264 //
265 Method(\_PIC, 1, NotSerialized)
266 {
267 Store(Arg0,\GPIC)
268 }
269
270 //
271 // System Bus
272 //
273 Scope(\_SB)
274 {
275 Device(PCI0)
276 {
277 Name(_HID,EISAID ("PNP0A08")) // PCI Express Root Bridge
278 Name(_CID,EISAID ("PNP0A03")) // Compatible PCI Root Bridge
279
280 Name(_ADR,0x00000000) // Device (HI WORD)=0, Func (LO WORD)=0
281 Method (_INI)
282 {
283 Store(LINUX, OSTP) // Set the default os is Linux
284 If (CondRefOf (_OSI, local0))
285 {
286 //
287 //_OSI is supported, so it is WinXp or Win2003Server
288 //
289 If (\_OSI("Windows 2001"))
290 {
291 Store (WINDOWS_XP, OSTP)
292 }
293 If (\_OSI("Windows 2001 SP1"))
294 {
295 Store (WINDOWS_XP_SP1, OSTP)
296 }
297 If (\_OSI("Windows 2001 SP2"))
298 {
299 Store (WINDOWS_XP_SP2, OSTP)
300 }
301 If (\_OSI("Windows 2001.1"))
302 {
303 Store (WINDOWS_2003, OSTP)
304 }
305 If (\_OSI("Windows 2006"))
306 {
307 Store (WINDOWS_Vista, OSTP)
308 }
309 If (\_OSI("Windows 2009"))
310 {
311 Store (WINDOWS_WIN7, OSTP)
312 }
313 If (\_OSI("Windows 2012"))
314 {
315 Store (WINDOWS_WIN8, OSTP)
316 }
317 If (\_OSI("Windows 2013"))
318 {
319 Store (WINDOWS_WIN8_1, OSTP)
320 }
321 If (\_OSI("Linux"))
322 {
323 Store (LINUX, OSTP)
324 }
325 }
326 }
327
328 Include ("PciHostBridge.asi") // PCI0 Host bridge
329 Include ("QNC.asi") // QNC miscellaneous
330 Include ("PcieExpansionPrt.asi") // PCIe expansion bridges/devices
331 Include ("QuarkSouthCluster.asi") // Quark South Cluster devices
332 Include ("QNCLpc.asi") // LPC bridge device
333 Include ("QNCApic.asi") // QNC I/O Apic device
334
335 }
336
337 //
338 // Include asi files for I2C and SPI onboard devices.
339 // Devices placed here instead of below relevant controllers.
340 // Hardware topology information is maintained by the
341 // ResourceSource arg to the I2CSerialBus/SPISerialBus macros
342 // within the device asi files.
343 //
344 Include ("Tpm.asi") // TPM device.
345 Include ("CY8C9540A.asi") // CY8C9540A 40Bit I/O Expander & EEPROM
346 Include ("PCAL9555A.asi") // NXP PCAL9555A I/O expander.
347 Include ("PCA9685.asi") // NXP PCA9685 PWM/LED controller.
348 Include ("CAT24C08.asi") // ONSEMI CAT24C08 I2C 8KB EEPROM.
349 Include ("AD7298.asi") // Analog devices AD7298 ADC.
350 Include ("ADC108S102.asi") // TI ADC108S102 ADC.
351 Include ("GpioClient.asi") // Software device to expose GPIO
352 }
353 }