]> git.proxmox.com Git - mirror_edk2.git/blob - OvmfPkg/AcpiTables/Dsdt.asl
OvmfPkg: add comments to existing \_Sx packages in DSDT
[mirror_edk2.git] / OvmfPkg / AcpiTables / Dsdt.asl
1 /** @file
2 Contains root level name space objects for the platform
3
4 Copyright (c) 2008, Intel Corporation. All rights reserved.<BR>
5 This program and the accompanying materials are
6 licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13 **/
14
15 DefinitionBlock ("Dsdt.aml", "DSDT", 1, "INTEL ", "OVMF ", 4) {
16 //
17 // System Sleep States
18 //
19 Name (\_S0, Package () {5, 0, 0, 0}) // Working
20 Name (\_S4, Package () {1, 0, 0, 0}) // Suspend to Disk
21 Name (\_S5, Package () {0, 0, 0, 0}) // Soft Off
22
23 //
24 // System Bus
25 //
26 Scope (\_SB) {
27 //
28 // PCI Root Bridge
29 //
30 Device (PCI0) {
31 Name (_HID, EISAID ("PNP0A03"))
32 Name (_ADR, 0x00000000)
33 Name (_BBN, 0x00)
34 Name (_UID, 0x00)
35
36 //
37 // BUS, I/O, and MMIO resources
38 //
39 Name (CRES, ResourceTemplate () {
40 WORDBusNumber ( // Bus number resource (0); the bridge produces bus numbers for its subsequent buses
41 ResourceProducer, // bit 0 of general flags is 1
42 MinFixed, // Range is fixed
43 MaxFixed, // Range is fixed
44 PosDecode, // PosDecode
45 0x0000, // Granularity
46 0x0000, // Min
47 0x00FF, // Max
48 0x0000, // Translation
49 0x0100 // Range Length = Max-Min+1
50 )
51
52 IO (Decode16, 0xCF8, 0xCF8, 0x01, 0x08) //Consumed resource (0xCF8-0xCFF)
53
54 WORDIO ( // Consumed-and-produced resource (all I/O below CF8)
55 ResourceProducer, // bit 0 of general flags is 0
56 MinFixed, // Range is fixed
57 MaxFixed, // Range is fixed
58 PosDecode,
59 EntireRange,
60 0x0000, // Granularity
61 0x0000, // Min
62 0x0CF7, // Max
63 0x0000, // Translation
64 0x0CF8 // Range Length
65 )
66
67 WORDIO ( // Consumed-and-produced resource (all I/O above CFF)
68 ResourceProducer, // bit 0 of general flags is 0
69 MinFixed, // Range is fixed
70 MaxFixed, // Range is fixed
71 PosDecode,
72 EntireRange,
73 0x0000, // Granularity
74 0x0D00, // Min
75 0xFFFF, // Max
76 0x0000, // Translation
77 0xF300 // Range Length
78 )
79
80 DWORDMEMORY ( // Descriptor for legacy VGA video RAM
81 ResourceProducer, // bit 0 of general flags is 0
82 PosDecode,
83 MinFixed, // Range is fixed
84 MaxFixed, // Range is Fixed
85 Cacheable,
86 ReadWrite,
87 0x00000000, // Granularity
88 0x000A0000, // Min
89 0x000BFFFF, // Max
90 0x00000000, // Translation
91 0x00020000 // Range Length
92 )
93
94 DWORDMEMORY ( // Descriptor for 32-bit MMIO
95 ResourceProducer, // bit 0 of general flags is 0
96 PosDecode,
97 MinFixed, // Range is fixed
98 MaxFixed, // Range is Fixed
99 NonCacheable,
100 ReadWrite,
101 0x00000000, // Granularity
102 0xF8000000, // Min
103 0xFFFBFFFF, // Max
104 0x00000000, // Translation
105 0x07FC0000, // Range Length
106 , // ResourceSourceIndex
107 , // ResourceSource
108 PW32 // DescriptorName
109 )
110 })
111
112 Name (CR64, ResourceTemplate () {
113 QWordMemory ( // Descriptor for 64-bit MMIO
114 ResourceProducer, // bit 0 of general flags is 0
115 PosDecode,
116 MinFixed, // Range is fixed
117 MaxFixed, // Range is Fixed
118 Cacheable,
119 ReadWrite,
120 0x00000000, // Granularity
121 0x8000000000, // Min
122 0xFFFFFFFFFF, // Max
123 0x00000000, // Translation
124 0x8000000000, // Range Length
125 , // ResourceSourceIndex
126 , // ResourceSource
127 PW64 // DescriptorName
128 )
129 })
130
131 Method (_CRS, 0) {
132 //
133 // see the FIRMWARE_DATA structure in "OvmfPkg/AcpiPlatformDxe/Qemu.c"
134 //
135 External (FWDT, OpRegionObj)
136 Field(FWDT, QWordAcc, NoLock, Preserve) {
137 P0S, 64, // PciWindow32.Base
138 P0E, 64, // PciWindow32.End
139 P0L, 64, // PciWindow32.Length
140 P1S, 64, // PciWindow64.Base
141 P1E, 64, // PciWindow64.End
142 P1L, 64 // PciWindow64.Length
143 }
144 Field(FWDT, DWordAcc, NoLock, Preserve) {
145 P0SL, 32, // PciWindow32.Base, low 32 bits
146 P0SH, 32, // PciWindow32.Base, high 32 bits
147 P0EL, 32, // PciWindow32.End, low 32 bits
148 P0EH, 32, // PciWindow32.End, high 32 bits
149 P0LL, 32, // PciWindow32.Length, low 32 bits
150 P0LH, 32, // PciWindow32.Length, high 32 bits
151 P1SL, 32, // PciWindow64.Base, low 32 bits
152 P1SH, 32, // PciWindow64.Base, high 32 bits
153 P1EL, 32, // PciWindow64.End, low 32 bits
154 P1EH, 32, // PciWindow64.End, high 32 bits
155 P1LL, 32, // PciWindow64.Length, low 32 bits
156 P1LH, 32 // PciWindow64.Length, high 32 bits
157 }
158
159 //
160 // fixup 32-bit PCI IO window
161 //
162 CreateDWordField (CRES, \_SB.PCI0.PW32._MIN, PS32)
163 CreateDWordField (CRES, \_SB.PCI0.PW32._MAX, PE32)
164 CreateDWordField (CRES, \_SB.PCI0.PW32._LEN, PL32)
165 Store (P0SL, PS32)
166 Store (P0EL, PE32)
167 Store (P0LL, PL32)
168
169 If (LAnd (LEqual (P1SL, 0x00), LEqual (P1SH, 0x00))) {
170 Return (CRES)
171 } Else {
172 //
173 // fixup 64-bit PCI IO window
174 //
175 CreateQWordField (CR64, \_SB.PCI0.PW64._MIN, PS64)
176 CreateQWordField (CR64, \_SB.PCI0.PW64._MAX, PE64)
177 CreateQWordField (CR64, \_SB.PCI0.PW64._LEN, PL64)
178 Store (P1S, PS64)
179 Store (P1E, PE64)
180 Store (P1L, PL64)
181
182 //
183 // add window and return result
184 //
185 ConcatenateResTemplate (CRES, CR64, Local0)
186 Return (Local0)
187 }
188 }
189
190 //
191 // PCI Interrupt Routing Table - PIC Mode Only
192 //
193 Method (_PRT, 0, NotSerialized) {
194 Return (
195 Package () {
196 //
197 // Bus 0; Devices 0 to 15
198 //
199 Package () {0x0000FFFF, 0x00, \_SB.PCI0.LPC.LNKD, 0x00},
200 Package () {0x0000FFFF, 0x01, \_SB.PCI0.LPC.LNKA, 0x00},
201 Package () {0x0000FFFF, 0x02, \_SB.PCI0.LPC.LNKB, 0x00},
202 Package () {0x0000FFFF, 0x03, \_SB.PCI0.LPC.LNKC, 0x00},
203
204 Package () {0x0001FFFF, 0x00, 0x00, 0x09},
205 //
206 // list of IRQs occupied thus far: 9
207 //
208 Package () {0x0001FFFF, 0x01, \_SB.PCI0.LPC.LNKB, 0x00},
209 Package () {0x0001FFFF, 0x02, \_SB.PCI0.LPC.LNKC, 0x00},
210 Package () {0x0001FFFF, 0x03, \_SB.PCI0.LPC.LNKD, 0x00},
211
212 Package () {0x0002FFFF, 0x00, \_SB.PCI0.LPC.LNKB, 0x00},
213 Package () {0x0002FFFF, 0x01, \_SB.PCI0.LPC.LNKC, 0x00},
214 Package () {0x0002FFFF, 0x02, \_SB.PCI0.LPC.LNKD, 0x00},
215 Package () {0x0002FFFF, 0x03, \_SB.PCI0.LPC.LNKA, 0x00},
216
217 Package () {0x0003FFFF, 0x00, \_SB.PCI0.LPC.LNKC, 0x00},
218 Package () {0x0003FFFF, 0x01, \_SB.PCI0.LPC.LNKD, 0x00},
219 Package () {0x0003FFFF, 0x02, \_SB.PCI0.LPC.LNKA, 0x00},
220 Package () {0x0003FFFF, 0x03, \_SB.PCI0.LPC.LNKB, 0x00},
221
222 Package () {0x0004FFFF, 0x00, \_SB.PCI0.LPC.LNKD, 0x00},
223 Package () {0x0004FFFF, 0x01, \_SB.PCI0.LPC.LNKA, 0x00},
224 Package () {0x0004FFFF, 0x02, \_SB.PCI0.LPC.LNKB, 0x00},
225 Package () {0x0004FFFF, 0x03, \_SB.PCI0.LPC.LNKC, 0x00},
226
227 Package () {0x0005FFFF, 0x00, \_SB.PCI0.LPC.LNKA, 0x00},
228 Package () {0x0005FFFF, 0x01, \_SB.PCI0.LPC.LNKB, 0x00},
229 Package () {0x0005FFFF, 0x02, \_SB.PCI0.LPC.LNKC, 0x00},
230 Package () {0x0005FFFF, 0x03, \_SB.PCI0.LPC.LNKD, 0x00},
231
232 Package () {0x0006FFFF, 0x00, \_SB.PCI0.LPC.LNKB, 0x00},
233 Package () {0x0006FFFF, 0x01, \_SB.PCI0.LPC.LNKC, 0x00},
234 Package () {0x0006FFFF, 0x02, \_SB.PCI0.LPC.LNKD, 0x00},
235 Package () {0x0006FFFF, 0x03, \_SB.PCI0.LPC.LNKA, 0x00},
236
237 Package () {0x0007FFFF, 0x00, \_SB.PCI0.LPC.LNKC, 0x00},
238 Package () {0x0007FFFF, 0x01, \_SB.PCI0.LPC.LNKD, 0x00},
239 Package () {0x0007FFFF, 0x02, \_SB.PCI0.LPC.LNKA, 0x00},
240 Package () {0x0007FFFF, 0x03, \_SB.PCI0.LPC.LNKB, 0x00},
241
242 Package () {0x0008FFFF, 0x00, \_SB.PCI0.LPC.LNKD, 0x00},
243 Package () {0x0008FFFF, 0x01, \_SB.PCI0.LPC.LNKA, 0x00},
244 Package () {0x0008FFFF, 0x02, \_SB.PCI0.LPC.LNKB, 0x00},
245 Package () {0x0008FFFF, 0x03, \_SB.PCI0.LPC.LNKC, 0x00},
246
247 Package () {0x0009FFFF, 0x00, \_SB.PCI0.LPC.LNKA, 0x00},
248 Package () {0x0009FFFF, 0x01, \_SB.PCI0.LPC.LNKB, 0x00},
249 Package () {0x0009FFFF, 0x02, \_SB.PCI0.LPC.LNKC, 0x00},
250 Package () {0x0009FFFF, 0x03, \_SB.PCI0.LPC.LNKD, 0x00},
251
252 Package () {0x000AFFFF, 0x00, \_SB.PCI0.LPC.LNKB, 0x00},
253 Package () {0x000AFFFF, 0x01, \_SB.PCI0.LPC.LNKC, 0x00},
254 Package () {0x000AFFFF, 0x02, \_SB.PCI0.LPC.LNKD, 0x00},
255 Package () {0x000AFFFF, 0x03, \_SB.PCI0.LPC.LNKA, 0x00},
256
257 Package () {0x000BFFFF, 0x00, \_SB.PCI0.LPC.LNKC, 0x00},
258 Package () {0x000BFFFF, 0x01, \_SB.PCI0.LPC.LNKD, 0x00},
259 Package () {0x000BFFFF, 0x02, \_SB.PCI0.LPC.LNKA, 0x00},
260 Package () {0x000BFFFF, 0x03, \_SB.PCI0.LPC.LNKB, 0x00},
261
262 Package () {0x000CFFFF, 0x00, \_SB.PCI0.LPC.LNKD, 0x00},
263 Package () {0x000CFFFF, 0x01, \_SB.PCI0.LPC.LNKA, 0x00},
264 Package () {0x000CFFFF, 0x02, \_SB.PCI0.LPC.LNKB, 0x00},
265 Package () {0x000CFFFF, 0x03, \_SB.PCI0.LPC.LNKC, 0x00},
266
267 Package () {0x000DFFFF, 0x00, \_SB.PCI0.LPC.LNKA, 0x00},
268 Package () {0x000DFFFF, 0x01, \_SB.PCI0.LPC.LNKB, 0x00},
269 Package () {0x000DFFFF, 0x02, \_SB.PCI0.LPC.LNKC, 0x00},
270 Package () {0x000DFFFF, 0x03, \_SB.PCI0.LPC.LNKD, 0x00},
271
272 Package () {0x000EFFFF, 0x00, \_SB.PCI0.LPC.LNKB, 0x00},
273 Package () {0x000EFFFF, 0x01, \_SB.PCI0.LPC.LNKC, 0x00},
274 Package () {0x000EFFFF, 0x02, \_SB.PCI0.LPC.LNKD, 0x00},
275 Package () {0x000EFFFF, 0x03, \_SB.PCI0.LPC.LNKA, 0x00},
276
277 Package () {0x000FFFFF, 0x00, \_SB.PCI0.LPC.LNKC, 0x00},
278 Package () {0x000FFFFF, 0x01, \_SB.PCI0.LPC.LNKD, 0x00},
279 Package () {0x000FFFFF, 0x02, \_SB.PCI0.LPC.LNKA, 0x00},
280 Package () {0x000FFFFF, 0x03, \_SB.PCI0.LPC.LNKB, 0x00}
281 }
282 )
283 }
284
285 //
286 // PCI to ISA Bridge (Bus 0, Device 1, Function 0)
287 // "Low Pin Count"
288 //
289 Device (LPC) {
290 Name (_ADR, 0x00010000)
291
292 //
293 // PCI Interrupt Routing Configuration Registers, PIRQRC[A:D]
294 //
295 OperationRegion (PRR0, PCI_Config, 0x60, 0x04)
296 Field (PRR0, ANYACC, NOLOCK, PRESERVE) {
297 PIRA, 8,
298 PIRB, 8,
299 PIRC, 8,
300 PIRD, 8
301 }
302
303 //
304 // _STA method for LNKA, LNKB, LNKC, LNKD
305 // Arg0[in]: value of PIRA / PIRB / PIRC / PIRD
306 //
307 Method (PSTA, 1, NotSerialized) {
308 If (And (Arg0, 0x80)) { // disable-bit set?
309 Return (0x9) // "device present" | "functioning properly"
310 } Else {
311 Return (0xB) // same | "enabled and decoding resources"
312 }
313 }
314
315 //
316 // _CRS method for LNKA, LNKB, LNKC, LNKD
317 // Arg0[in]: value of PIRA / PIRB / PIRC / PIRD
318 //
319 Method (PCRS, 1, NotSerialized) {
320 //
321 // create temporary buffer with an Extended Interrupt Descriptor
322 // whose single vector defaults to zero
323 //
324 Name (BUF0, ResourceTemplate () {
325 Interrupt (ResourceConsumer, Level, ActiveHigh, Shared){0}
326 }
327 )
328
329 //
330 // define reference to first interrupt vector in buffer
331 //
332 CreateDWordField (BUF0, 0x05, IRQW)
333
334 //
335 // If the disable-bit is clear, overwrite the default zero vector
336 // with the value in Arg0 (ie. PIRQRC[A:D]). Reserved bits are read
337 // as 0.
338 //
339 If (LNot (And (Arg0, 0x80))) {
340 Store (Arg0, IRQW)
341 }
342 Return (BUF0)
343 }
344
345 //
346 // _PRS resource for LNKA, LNKB, LNKC, LNKD
347 //
348 Name (PPRS, ResourceTemplate () {
349 Interrupt (ResourceConsumer, Level, ActiveHigh, Shared) {5, 10, 11}
350 //
351 // list of IRQs occupied thus far: 9, 5, 10, 11
352 //
353 })
354
355 //
356 // PCI IRQ Link A
357 //
358 Device (LNKA) {
359 Name (_HID, EISAID("PNP0C0F"))
360 Name (_UID, 1)
361
362 Method (_STA, 0, NotSerialized) { Return (PSTA (PIRA)) }
363 Method (_DIS, 0, NotSerialized) {
364 Or (PIRA, 0x80, PIRA) // set disable-bit
365 }
366 Method (_CRS, 0, NotSerialized) { Return (PCRS (PIRA)) }
367 Method (_PRS, 0, NotSerialized) { Return (PPRS) }
368 Method (_SRS, 1, NotSerialized) {
369 CreateDWordField (Arg0, 0x05, IRQW)
370 Store (IRQW, PIRA)
371 }
372 }
373
374 //
375 // PCI IRQ Link B
376 //
377 Device (LNKB) {
378 Name (_HID, EISAID("PNP0C0F"))
379 Name (_UID, 2)
380
381 Method (_STA, 0, NotSerialized) { Return (PSTA (PIRB)) }
382 Method (_DIS, 0, NotSerialized) {
383 Or (PIRB, 0x80, PIRB) // set disable-bit
384 }
385 Method (_CRS, 0, NotSerialized) { Return (PCRS (PIRB)) }
386 Method (_PRS, 0, NotSerialized) { Return (PPRS) }
387 Method (_SRS, 1, NotSerialized) {
388 CreateDWordField (Arg0, 0x05, IRQW)
389 Store (IRQW, PIRB)
390 }
391 }
392
393 //
394 // PCI IRQ Link C
395 //
396 Device (LNKC) {
397 Name (_HID, EISAID("PNP0C0F"))
398 Name (_UID, 3)
399
400 Method (_STA, 0, NotSerialized) { Return (PSTA (PIRC)) }
401 Method (_DIS, 0, NotSerialized) {
402 Or (PIRC, 0x80, PIRC) // set disable-bit
403 }
404 Method (_CRS, 0, NotSerialized) { Return (PCRS (PIRC)) }
405 Method (_PRS, 0, NotSerialized) { Return (PPRS) }
406 Method (_SRS, 1, NotSerialized) {
407 CreateDWordField (Arg0, 0x05, IRQW)
408 Store (IRQW, PIRC)
409 }
410 }
411
412 //
413 // PCI IRQ Link D
414 //
415 Device (LNKD) {
416 Name (_HID, EISAID("PNP0C0F"))
417 Name (_UID, 4)
418
419 Method (_STA, 0, NotSerialized) { Return (PSTA (PIRD)) }
420 Method (_DIS, 0, NotSerialized) {
421 Or (PIRD, 0x80, PIRD) // set disable-bit
422 }
423 Method (_CRS, 0, NotSerialized) { Return (PCRS (PIRD)) }
424 Method (_PRS, 0, NotSerialized) { Return (PPRS) }
425 Method (_SRS, 1, NotSerialized) {
426 CreateDWordField (Arg0, 0x05, IRQW)
427 Store (IRQW, PIRD)
428 }
429 }
430
431 //
432 // Programmable Interrupt Controller (PIC)
433 //
434 Device(PIC) {
435 Name (_HID, EISAID ("PNP0000"))
436 Name (_CRS, ResourceTemplate () {
437 IO (Decode16, 0x020, 0x020, 0x00, 0x02)
438 IO (Decode16, 0x0A0, 0x0A0, 0x00, 0x02)
439 IO (Decode16, 0x4D0, 0x4D0, 0x00, 0x02)
440 IRQNoFlags () {2}
441 //
442 // list of IRQs occupied thus far: 9, 5, 10, 11, 2
443 //
444 })
445 }
446
447 //
448 // ISA DMA
449 //
450 Device (DMAC) {
451 Name (_HID, EISAID ("PNP0200"))
452 Name (_CRS, ResourceTemplate () {
453 IO (Decode16, 0x00, 0x00, 0, 0x10)
454 IO (Decode16, 0x81, 0x81, 0, 0x03)
455 IO (Decode16, 0x87, 0x87, 0, 0x01)
456 IO (Decode16, 0x89, 0x89, 0, 0x03)
457 IO (Decode16, 0x8f, 0x8f, 0, 0x01)
458 IO (Decode16, 0xc0, 0xc0, 0, 0x20)
459 DMA (Compatibility, NotBusMaster, Transfer8) {4}
460 })
461 }
462
463 //
464 // 8254 Timer
465 //
466 Device(TMR) {
467 Name(_HID,EISAID("PNP0100"))
468 Name(_CRS, ResourceTemplate () {
469 IO (Decode16, 0x40, 0x40, 0x00, 0x04)
470 IRQNoFlags () {0}
471 //
472 // list of IRQs occupied thus far: 9, 5, 10, 11, 2, 0
473 //
474 })
475 }
476
477 //
478 // Real Time Clock
479 //
480 Device (RTC) {
481 Name (_HID, EISAID ("PNP0B00"))
482 Name (_CRS, ResourceTemplate () {
483 IO (Decode16, 0x70, 0x70, 0x00, 0x02)
484 IRQNoFlags () {8}
485 //
486 // list of IRQs occupied thus far: 9, 5, 10, 11, 2, 0, 8
487 //
488 })
489 }
490
491 //
492 // PCAT Speaker
493 //
494 Device(SPKR) {
495 Name (_HID, EISAID("PNP0800"))
496 Name (_CRS, ResourceTemplate () {
497 IO (Decode16, 0x61, 0x61, 0x01, 0x01)
498 })
499 }
500
501 //
502 // Floating Point Coprocessor
503 //
504 Device(FPU) {
505 Name (_HID, EISAID("PNP0C04"))
506 Name (_CRS, ResourceTemplate () {
507 IO (Decode16, 0xF0, 0xF0, 0x00, 0x10)
508 IRQNoFlags () {13}
509 //
510 // list of IRQs occupied thus far: 9, 5, 10, 11, 2, 0, 8, 13
511 //
512 })
513 }
514
515 //
516 // Generic motherboard devices and pieces that don't fit anywhere else
517 //
518 Device(XTRA) {
519 Name (_HID, EISAID ("PNP0C02"))
520 Name (_UID, 0x01)
521 Name (_CRS, ResourceTemplate () {
522 IO (Decode16, 0x010, 0x010, 0x00, 0x10)
523 IO (Decode16, 0x022, 0x022, 0x00, 0x1E)
524 IO (Decode16, 0x044, 0x044, 0x00, 0x1C)
525 IO (Decode16, 0x062, 0x062, 0x00, 0x02)
526 IO (Decode16, 0x065, 0x065, 0x00, 0x0B)
527 IO (Decode16, 0x072, 0x072, 0x00, 0x0E)
528 IO (Decode16, 0x080, 0x080, 0x00, 0x01)
529 IO (Decode16, 0x084, 0x084, 0x00, 0x03)
530 IO (Decode16, 0x088, 0x088, 0x00, 0x01)
531 IO (Decode16, 0x08c, 0x08c, 0x00, 0x03)
532 IO (Decode16, 0x090, 0x090, 0x00, 0x10)
533 IO (Decode16, 0x0A2, 0x0A2, 0x00, 0x1E)
534 IO (Decode16, 0x0E0, 0x0E0, 0x00, 0x10)
535 IO (Decode16, 0x1E0, 0x1E0, 0x00, 0x10)
536 IO (Decode16, 0x160, 0x160, 0x00, 0x10)
537 IO (Decode16, 0x278, 0x278, 0x00, 0x08)
538 IO (Decode16, 0x370, 0x370, 0x00, 0x02)
539 IO (Decode16, 0x378, 0x378, 0x00, 0x08)
540 IO (Decode16, 0x402, 0x402, 0x00, 0x01) // QEMU debug console, should use FixedPcdGet16 (PcdDebugIoPort)
541 IO (Decode16, 0x440, 0x440, 0x00, 0x10)
542 IO (Decode16, 0x678, 0x678, 0x00, 0x08)
543 IO (Decode16, 0x778, 0x778, 0x00, 0x08)
544 IO (Decode16, 0xafe0, 0xafe0, 0x00, 0x04) // QEMU GPE0 BLK
545 IO (Decode16, 0xb000, 0xb000, 0x00, 0x40) // PMBLK1
546 Memory32Fixed (ReadOnly, 0xFEC00000, 0x1000) // IO APIC
547 Memory32Fixed (ReadOnly, 0xFEE00000, 0x100000) // LAPIC
548 })
549 }
550
551 //
552 // PS/2 Keyboard and PC/AT Enhanced Keyboard 101/102
553 //
554 Device (PS2K) {
555 Name (_HID, EISAID ("PNP0303"))
556 Name (_CID, EISAID ("PNP030B"))
557 Name(_CRS,ResourceTemplate() {
558 IO (Decode16, 0x60, 0x60, 0x00, 0x01)
559 IO (Decode16, 0x64, 0x64, 0x00, 0x01)
560 IRQNoFlags () {1}
561 //
562 // list of IRQs occupied thus far: 9, 5, 10, 11, 2, 0, 8, 13, 1
563 //
564 })
565 }
566
567 //
568 // PS/2 Mouse and Microsoft Mouse
569 //
570 Device (PS2M) { // PS/2 stype mouse port
571 Name (_HID, EISAID ("PNP0F03"))
572 Name (_CID, EISAID ("PNP0F13"))
573 Name (_CRS, ResourceTemplate() {
574 IRQNoFlags () {12}
575 //
576 // list of IRQs occupied thus far:
577 // 9, 5, 10, 11, 2, 0, 8, 13, 1, 12
578 //
579 })
580 }
581
582 //
583 // UART Serial Port - COM1
584 //
585 Device (UAR1) {
586 Name (_HID, EISAID ("PNP0501"))
587 Name (_DDN, "COM1")
588 Name (_UID, 0x01)
589 Name(_CRS,ResourceTemplate() {
590 IO (Decode16, 0x3F8, 0x3F8, 0x01, 0x08)
591 IRQ (Edge, ActiveHigh, Exclusive, ) {4}
592 //
593 // list of IRQs occupied thus far:
594 // 9, 5, 10, 11, 2, 0, 8, 13, 1, 12, 4
595 //
596 })
597 }
598
599 //
600 // UART Serial Port - COM2
601 //
602 Device (UAR2) {
603 Name (_HID, EISAID ("PNP0501"))
604 Name (_DDN, "COM2")
605 Name (_UID, 0x02)
606 Name(_CRS,ResourceTemplate() {
607 IO (Decode16, 0x2F8, 0x2F8, 0x01, 0x08)
608 IRQ (Edge, ActiveHigh, Exclusive, ) {3}
609 //
610 // list of IRQs occupied thus far:
611 // 9, 5, 10, 11, 2, 0, 8, 13, 1, 12, 4, 3
612 //
613 })
614 }
615
616 //
617 // Floppy Disk Controller
618 //
619 Device (FDC) {
620 Name (_HID, EISAID ("PNP0700"))
621 Name (_CRS,ResourceTemplate() {
622 IO (Decode16, 0x3F0, 0x3F0, 0x01, 0x06)
623 IO (Decode16, 0x3F7, 0x3F7, 0x01, 0x01)
624 IRQNoFlags () {6}
625 //
626 // list of IRQs occupied thus far:
627 // 9, 5, 10, 11, 2, 0, 8, 13, 1, 12, 4, 3, 6
628 //
629 DMA (Compatibility, NotBusMaster, Transfer8) {2}
630 })
631 }
632
633 //
634 // parallel port -- no DMA for now
635 //
636 Device (PAR1) {
637 Name (_HID, EISAID ("PNP0400"))
638 Name (_DDN, "LPT1")
639 Name (_UID, 0x01)
640 Name(_CRS, ResourceTemplate() {
641 IO (Decode16, 0x0378, 0x0378, 0x00, 0x08)
642 IRQNoFlags () {7}
643 //
644 // list of IRQs occupied thus far:
645 // 9, 5, 10, 11, 2, 0, 8, 13, 1, 12, 4, 3, 6, 7
646 // in order:
647 // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13
648 //
649 })
650 }
651 }
652 }
653 }
654 }