2 Contains root level name space objects for the platform
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
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.
15 DefinitionBlock ("Dsdt.aml", "DSDT", 1, "INTEL ", "OVMF ", 4) {
17 // System Sleep States
19 // We build S3 and S4 with GetSuspendStates() in
20 // "OvmfPkg/AcpiPlatformDxe/Qemu.c".
22 Name (\_S0, Package () {5, 0, 0, 0}) // Working
23 Name (\_S5, Package () {0, 0, 0, 0}) // Soft Off
33 Name (_HID, EISAID ("PNP0A03"))
34 Name (_ADR, 0x00000000)
39 // BUS, I/O, and MMIO resources
41 Name (CRES, ResourceTemplate () {
42 WORDBusNumber ( // Bus number resource (0); the bridge produces bus numbers for its subsequent buses
43 ResourceProducer, // bit 0 of general flags is 1
44 MinFixed, // Range is fixed
45 MaxFixed, // Range is fixed
46 PosDecode, // PosDecode
47 0x0000, // Granularity
50 0x0000, // Translation
51 0x0100 // Range Length = Max-Min+1
54 IO (Decode16, 0xCF8, 0xCF8, 0x01, 0x08) //Consumed resource (0xCF8-0xCFF)
56 WORDIO ( // Consumed-and-produced resource (all I/O below CF8)
57 ResourceProducer, // bit 0 of general flags is 0
58 MinFixed, // Range is fixed
59 MaxFixed, // Range is fixed
62 0x0000, // Granularity
65 0x0000, // Translation
66 0x0CF8 // Range Length
69 WORDIO ( // Consumed-and-produced resource (all I/O above CFF)
70 ResourceProducer, // bit 0 of general flags is 0
71 MinFixed, // Range is fixed
72 MaxFixed, // Range is fixed
75 0x0000, // Granularity
78 0x0000, // Translation
79 0xF300 // Range Length
82 DWORDMEMORY ( // Descriptor for legacy VGA video RAM
83 ResourceProducer, // bit 0 of general flags is 0
85 MinFixed, // Range is fixed
86 MaxFixed, // Range is Fixed
89 0x00000000, // Granularity
92 0x00000000, // Translation
93 0x00020000 // Range Length
96 DWORDMEMORY ( // Descriptor for 32-bit MMIO
97 ResourceProducer, // bit 0 of general flags is 0
99 MinFixed, // Range is fixed
100 MaxFixed, // Range is Fixed
103 0x00000000, // Granularity
106 0x00000000, // Translation
107 0x07FC0000, // Range Length
108 , // ResourceSourceIndex
110 PW32 // DescriptorName
114 Name (CR64, ResourceTemplate () {
115 QWordMemory ( // Descriptor for 64-bit MMIO
116 ResourceProducer, // bit 0 of general flags is 0
118 MinFixed, // Range is fixed
119 MaxFixed, // Range is Fixed
122 0x00000000, // Granularity
125 0x00000000, // Translation
126 0x8000000000, // Range Length
127 , // ResourceSourceIndex
129 PW64 // DescriptorName
133 Method (_CRS, 0, Serialized) {
135 // see the FIRMWARE_DATA structure in "OvmfPkg/AcpiPlatformDxe/Qemu.c"
137 External (FWDT, OpRegionObj)
138 Field(FWDT, QWordAcc, NoLock, Preserve) {
139 P0S, 64, // PciWindow32.Base
140 P0E, 64, // PciWindow32.End
141 P0L, 64, // PciWindow32.Length
142 P1S, 64, // PciWindow64.Base
143 P1E, 64, // PciWindow64.End
144 P1L, 64 // PciWindow64.Length
146 Field(FWDT, DWordAcc, NoLock, Preserve) {
147 P0SL, 32, // PciWindow32.Base, low 32 bits
148 P0SH, 32, // PciWindow32.Base, high 32 bits
149 P0EL, 32, // PciWindow32.End, low 32 bits
150 P0EH, 32, // PciWindow32.End, high 32 bits
151 P0LL, 32, // PciWindow32.Length, low 32 bits
152 P0LH, 32, // PciWindow32.Length, high 32 bits
153 P1SL, 32, // PciWindow64.Base, low 32 bits
154 P1SH, 32, // PciWindow64.Base, high 32 bits
155 P1EL, 32, // PciWindow64.End, low 32 bits
156 P1EH, 32, // PciWindow64.End, high 32 bits
157 P1LL, 32, // PciWindow64.Length, low 32 bits
158 P1LH, 32 // PciWindow64.Length, high 32 bits
162 // fixup 32-bit PCI IO window
164 CreateDWordField (CRES, \_SB.PCI0.PW32._MIN, PS32)
165 CreateDWordField (CRES, \_SB.PCI0.PW32._MAX, PE32)
166 CreateDWordField (CRES, \_SB.PCI0.PW32._LEN, PL32)
171 If (LAnd (LEqual (P1SL, 0x00), LEqual (P1SH, 0x00))) {
175 // fixup 64-bit PCI IO window
177 CreateQWordField (CR64, \_SB.PCI0.PW64._MIN, PS64)
178 CreateQWordField (CR64, \_SB.PCI0.PW64._MAX, PE64)
179 CreateQWordField (CR64, \_SB.PCI0.PW64._LEN, PL64)
185 // add window and return result
187 ConcatenateResTemplate (CRES, CR64, Local0)
193 // PCI Interrupt Routing Table - PIC Mode Only
195 Method (_PRT, 0, NotSerialized) {
199 // Bus 0; Devices 0 to 15
201 Package () {0x0000FFFF, 0x00, \_SB.PCI0.LPC.LNKD, 0x00},
202 Package () {0x0000FFFF, 0x01, \_SB.PCI0.LPC.LNKA, 0x00},
203 Package () {0x0000FFFF, 0x02, \_SB.PCI0.LPC.LNKB, 0x00},
204 Package () {0x0000FFFF, 0x03, \_SB.PCI0.LPC.LNKC, 0x00},
207 // Bus 0, Device 1, Pin 0 (INTA) is special; it corresponds to the
208 // internally generated SCI (System Control Interrupt), which is
209 // always routed to GSI 9. By setting the third (= Source) field to
210 // zero, we could use the fourth (= Source Index) field to hardwire
211 // the pin to GSI 9 directly.
213 // That way however, in accordance with the ACPI spec's description
214 // of SCI, the interrupt would be treated as "active low,
215 // shareable, level", and that doesn't match qemu.
217 // In QemuInstallAcpiMadtTable() [OvmfPkg/AcpiPlatformDxe/Qemu.c]
218 // we install an Interrupt Override Structure for the identity
219 // mapped IRQ#9 / GSI 9 (the corresponding bit being set in
220 // Pcd8259LegacyModeEdgeLevel), which describes the correct
221 // polarity (active high). As a consequence, some OS'en (eg. Linux)
222 // override the default (active low) polarity originating from the
223 // _PRT; others (eg. FreeBSD) don't. Therefore we need a separate
224 // link device just to specify a polarity that matches the MADT.
226 Package () {0x0001FFFF, 0x00, \_SB.PCI0.LPC.LNKS, 0x00},
228 Package () {0x0001FFFF, 0x01, \_SB.PCI0.LPC.LNKB, 0x00},
229 Package () {0x0001FFFF, 0x02, \_SB.PCI0.LPC.LNKC, 0x00},
230 Package () {0x0001FFFF, 0x03, \_SB.PCI0.LPC.LNKD, 0x00},
232 Package () {0x0002FFFF, 0x00, \_SB.PCI0.LPC.LNKB, 0x00},
233 Package () {0x0002FFFF, 0x01, \_SB.PCI0.LPC.LNKC, 0x00},
234 Package () {0x0002FFFF, 0x02, \_SB.PCI0.LPC.LNKD, 0x00},
235 Package () {0x0002FFFF, 0x03, \_SB.PCI0.LPC.LNKA, 0x00},
237 Package () {0x0003FFFF, 0x00, \_SB.PCI0.LPC.LNKC, 0x00},
238 Package () {0x0003FFFF, 0x01, \_SB.PCI0.LPC.LNKD, 0x00},
239 Package () {0x0003FFFF, 0x02, \_SB.PCI0.LPC.LNKA, 0x00},
240 Package () {0x0003FFFF, 0x03, \_SB.PCI0.LPC.LNKB, 0x00},
242 Package () {0x0004FFFF, 0x00, \_SB.PCI0.LPC.LNKD, 0x00},
243 Package () {0x0004FFFF, 0x01, \_SB.PCI0.LPC.LNKA, 0x00},
244 Package () {0x0004FFFF, 0x02, \_SB.PCI0.LPC.LNKB, 0x00},
245 Package () {0x0004FFFF, 0x03, \_SB.PCI0.LPC.LNKC, 0x00},
247 Package () {0x0005FFFF, 0x00, \_SB.PCI0.LPC.LNKA, 0x00},
248 Package () {0x0005FFFF, 0x01, \_SB.PCI0.LPC.LNKB, 0x00},
249 Package () {0x0005FFFF, 0x02, \_SB.PCI0.LPC.LNKC, 0x00},
250 Package () {0x0005FFFF, 0x03, \_SB.PCI0.LPC.LNKD, 0x00},
252 Package () {0x0006FFFF, 0x00, \_SB.PCI0.LPC.LNKB, 0x00},
253 Package () {0x0006FFFF, 0x01, \_SB.PCI0.LPC.LNKC, 0x00},
254 Package () {0x0006FFFF, 0x02, \_SB.PCI0.LPC.LNKD, 0x00},
255 Package () {0x0006FFFF, 0x03, \_SB.PCI0.LPC.LNKA, 0x00},
257 Package () {0x0007FFFF, 0x00, \_SB.PCI0.LPC.LNKC, 0x00},
258 Package () {0x0007FFFF, 0x01, \_SB.PCI0.LPC.LNKD, 0x00},
259 Package () {0x0007FFFF, 0x02, \_SB.PCI0.LPC.LNKA, 0x00},
260 Package () {0x0007FFFF, 0x03, \_SB.PCI0.LPC.LNKB, 0x00},
262 Package () {0x0008FFFF, 0x00, \_SB.PCI0.LPC.LNKD, 0x00},
263 Package () {0x0008FFFF, 0x01, \_SB.PCI0.LPC.LNKA, 0x00},
264 Package () {0x0008FFFF, 0x02, \_SB.PCI0.LPC.LNKB, 0x00},
265 Package () {0x0008FFFF, 0x03, \_SB.PCI0.LPC.LNKC, 0x00},
267 Package () {0x0009FFFF, 0x00, \_SB.PCI0.LPC.LNKA, 0x00},
268 Package () {0x0009FFFF, 0x01, \_SB.PCI0.LPC.LNKB, 0x00},
269 Package () {0x0009FFFF, 0x02, \_SB.PCI0.LPC.LNKC, 0x00},
270 Package () {0x0009FFFF, 0x03, \_SB.PCI0.LPC.LNKD, 0x00},
272 Package () {0x000AFFFF, 0x00, \_SB.PCI0.LPC.LNKB, 0x00},
273 Package () {0x000AFFFF, 0x01, \_SB.PCI0.LPC.LNKC, 0x00},
274 Package () {0x000AFFFF, 0x02, \_SB.PCI0.LPC.LNKD, 0x00},
275 Package () {0x000AFFFF, 0x03, \_SB.PCI0.LPC.LNKA, 0x00},
277 Package () {0x000BFFFF, 0x00, \_SB.PCI0.LPC.LNKC, 0x00},
278 Package () {0x000BFFFF, 0x01, \_SB.PCI0.LPC.LNKD, 0x00},
279 Package () {0x000BFFFF, 0x02, \_SB.PCI0.LPC.LNKA, 0x00},
280 Package () {0x000BFFFF, 0x03, \_SB.PCI0.LPC.LNKB, 0x00},
282 Package () {0x000CFFFF, 0x00, \_SB.PCI0.LPC.LNKD, 0x00},
283 Package () {0x000CFFFF, 0x01, \_SB.PCI0.LPC.LNKA, 0x00},
284 Package () {0x000CFFFF, 0x02, \_SB.PCI0.LPC.LNKB, 0x00},
285 Package () {0x000CFFFF, 0x03, \_SB.PCI0.LPC.LNKC, 0x00},
287 Package () {0x000DFFFF, 0x00, \_SB.PCI0.LPC.LNKA, 0x00},
288 Package () {0x000DFFFF, 0x01, \_SB.PCI0.LPC.LNKB, 0x00},
289 Package () {0x000DFFFF, 0x02, \_SB.PCI0.LPC.LNKC, 0x00},
290 Package () {0x000DFFFF, 0x03, \_SB.PCI0.LPC.LNKD, 0x00},
292 Package () {0x000EFFFF, 0x00, \_SB.PCI0.LPC.LNKB, 0x00},
293 Package () {0x000EFFFF, 0x01, \_SB.PCI0.LPC.LNKC, 0x00},
294 Package () {0x000EFFFF, 0x02, \_SB.PCI0.LPC.LNKD, 0x00},
295 Package () {0x000EFFFF, 0x03, \_SB.PCI0.LPC.LNKA, 0x00},
297 Package () {0x000FFFFF, 0x00, \_SB.PCI0.LPC.LNKC, 0x00},
298 Package () {0x000FFFFF, 0x01, \_SB.PCI0.LPC.LNKD, 0x00},
299 Package () {0x000FFFFF, 0x02, \_SB.PCI0.LPC.LNKA, 0x00},
300 Package () {0x000FFFFF, 0x03, \_SB.PCI0.LPC.LNKB, 0x00}
306 // PCI to ISA Bridge (Bus 0, Device 1, Function 0)
310 Name (_ADR, 0x00010000)
313 // The SCI cannot be rerouted or disabled with PIRQRC[A:D]; we only
314 // need this link device in order to specify the polarity.
317 Name (_HID, EISAID("PNP0C0F"))
320 Name (_STA, 0xB) // 0x1: device present
321 // 0x2: enabled and decoding resources
322 // 0x8: functioning properly
324 Method (_SRS, 1, NotSerialized) { /* no-op */ }
325 Method (_DIS, 0, NotSerialized) { /* no-op */ }
327 Name (_PRS, ResourceTemplate () {
328 Interrupt (ResourceConsumer, Level, ActiveHigh, Shared) { 9 }
330 // list of IRQs occupied thus far: 9
333 Method (_CRS, 0, NotSerialized) { Return (_PRS) }
337 // PCI Interrupt Routing Configuration Registers, PIRQRC[A:D]
339 OperationRegion (PRR0, PCI_Config, 0x60, 0x04)
340 Field (PRR0, ANYACC, NOLOCK, PRESERVE) {
348 // _STA method for LNKA, LNKB, LNKC, LNKD
349 // Arg0[in]: value of PIRA / PIRB / PIRC / PIRD
351 Method (PSTA, 1, NotSerialized) {
352 If (And (Arg0, 0x80)) { // disable-bit set?
353 Return (0x9) // "device present" | "functioning properly"
355 Return (0xB) // same | "enabled and decoding resources"
360 // _CRS method for LNKA, LNKB, LNKC, LNKD
361 // Arg0[in]: value of PIRA / PIRB / PIRC / PIRD
363 Method (PCRS, 1, Serialized) {
365 // create temporary buffer with an Extended Interrupt Descriptor
366 // whose single vector defaults to zero
368 Name (BUF0, ResourceTemplate () {
369 Interrupt (ResourceConsumer, Level, ActiveHigh, Shared){0}
374 // define reference to first interrupt vector in buffer
376 CreateDWordField (BUF0, 0x05, IRQW)
379 // If the disable-bit is clear, overwrite the default zero vector
380 // with the value in Arg0 (ie. PIRQRC[A:D]). Reserved bits are read
383 If (LNot (And (Arg0, 0x80))) {
390 // _PRS resource for LNKA, LNKB, LNKC, LNKD
392 Name (PPRS, ResourceTemplate () {
393 Interrupt (ResourceConsumer, Level, ActiveHigh, Shared) {5, 10, 11}
395 // list of IRQs occupied thus far: 9, 5, 10, 11
403 Name (_HID, EISAID("PNP0C0F"))
406 Method (_STA, 0, NotSerialized) { Return (PSTA (PIRA)) }
407 Method (_DIS, 0, NotSerialized) {
408 Or (PIRA, 0x80, PIRA) // set disable-bit
410 Method (_CRS, 0, NotSerialized) { Return (PCRS (PIRA)) }
411 Method (_PRS, 0, NotSerialized) { Return (PPRS) }
412 Method (_SRS, 1, NotSerialized) {
413 CreateDWordField (Arg0, 0x05, IRQW)
422 Name (_HID, EISAID("PNP0C0F"))
425 Method (_STA, 0, NotSerialized) { Return (PSTA (PIRB)) }
426 Method (_DIS, 0, NotSerialized) {
427 Or (PIRB, 0x80, PIRB) // set disable-bit
429 Method (_CRS, 0, NotSerialized) { Return (PCRS (PIRB)) }
430 Method (_PRS, 0, NotSerialized) { Return (PPRS) }
431 Method (_SRS, 1, NotSerialized) {
432 CreateDWordField (Arg0, 0x05, IRQW)
441 Name (_HID, EISAID("PNP0C0F"))
444 Method (_STA, 0, NotSerialized) { Return (PSTA (PIRC)) }
445 Method (_DIS, 0, NotSerialized) {
446 Or (PIRC, 0x80, PIRC) // set disable-bit
448 Method (_CRS, 0, NotSerialized) { Return (PCRS (PIRC)) }
449 Method (_PRS, 0, NotSerialized) { Return (PPRS) }
450 Method (_SRS, 1, NotSerialized) {
451 CreateDWordField (Arg0, 0x05, IRQW)
460 Name (_HID, EISAID("PNP0C0F"))
463 Method (_STA, 0, NotSerialized) { Return (PSTA (PIRD)) }
464 Method (_DIS, 0, NotSerialized) {
465 Or (PIRD, 0x80, PIRD) // set disable-bit
467 Method (_CRS, 0, NotSerialized) { Return (PCRS (PIRD)) }
468 Method (_PRS, 0, NotSerialized) { Return (PPRS) }
469 Method (_SRS, 1, NotSerialized) {
470 CreateDWordField (Arg0, 0x05, IRQW)
476 // Programmable Interrupt Controller (PIC)
479 Name (_HID, EISAID ("PNP0000"))
480 Name (_CRS, ResourceTemplate () {
481 IO (Decode16, 0x020, 0x020, 0x00, 0x02)
482 IO (Decode16, 0x0A0, 0x0A0, 0x00, 0x02)
483 IO (Decode16, 0x4D0, 0x4D0, 0x00, 0x02)
486 // list of IRQs occupied thus far: 9, 5, 10, 11, 2
495 Name (_HID, EISAID ("PNP0200"))
496 Name (_CRS, ResourceTemplate () {
497 IO (Decode16, 0x00, 0x00, 0, 0x10)
498 IO (Decode16, 0x81, 0x81, 0, 0x03)
499 IO (Decode16, 0x87, 0x87, 0, 0x01)
500 IO (Decode16, 0x89, 0x89, 0, 0x03)
501 IO (Decode16, 0x8f, 0x8f, 0, 0x01)
502 IO (Decode16, 0xc0, 0xc0, 0, 0x20)
503 DMA (Compatibility, NotBusMaster, Transfer8) {4}
511 Name(_HID,EISAID("PNP0100"))
512 Name(_CRS, ResourceTemplate () {
513 IO (Decode16, 0x40, 0x40, 0x00, 0x04)
516 // list of IRQs occupied thus far: 9, 5, 10, 11, 2, 0
525 Name (_HID, EISAID ("PNP0B00"))
526 Name (_CRS, ResourceTemplate () {
527 IO (Decode16, 0x70, 0x70, 0x00, 0x02)
530 // list of IRQs occupied thus far: 9, 5, 10, 11, 2, 0, 8
539 Name (_HID, EISAID("PNP0800"))
540 Name (_CRS, ResourceTemplate () {
541 IO (Decode16, 0x61, 0x61, 0x01, 0x01)
546 // Floating Point Coprocessor
549 Name (_HID, EISAID("PNP0C04"))
550 Name (_CRS, ResourceTemplate () {
551 IO (Decode16, 0xF0, 0xF0, 0x00, 0x10)
554 // list of IRQs occupied thus far: 9, 5, 10, 11, 2, 0, 8, 13
560 // Generic motherboard devices and pieces that don't fit anywhere else
563 Name (_HID, EISAID ("PNP0C02"))
565 Name (_CRS, ResourceTemplate () {
566 IO (Decode16, 0x010, 0x010, 0x00, 0x10)
567 IO (Decode16, 0x022, 0x022, 0x00, 0x1E)
568 IO (Decode16, 0x044, 0x044, 0x00, 0x1C)
569 IO (Decode16, 0x062, 0x062, 0x00, 0x02)
570 IO (Decode16, 0x065, 0x065, 0x00, 0x0B)
571 IO (Decode16, 0x072, 0x072, 0x00, 0x0E)
572 IO (Decode16, 0x080, 0x080, 0x00, 0x01)
573 IO (Decode16, 0x084, 0x084, 0x00, 0x03)
574 IO (Decode16, 0x088, 0x088, 0x00, 0x01)
575 IO (Decode16, 0x08c, 0x08c, 0x00, 0x03)
576 IO (Decode16, 0x090, 0x090, 0x00, 0x10)
577 IO (Decode16, 0x0A2, 0x0A2, 0x00, 0x1E)
578 IO (Decode16, 0x0E0, 0x0E0, 0x00, 0x10)
579 IO (Decode16, 0x1E0, 0x1E0, 0x00, 0x10)
580 IO (Decode16, 0x160, 0x160, 0x00, 0x10)
581 IO (Decode16, 0x278, 0x278, 0x00, 0x08)
582 IO (Decode16, 0x370, 0x370, 0x00, 0x02)
583 IO (Decode16, 0x378, 0x378, 0x00, 0x08)
584 IO (Decode16, 0x402, 0x402, 0x00, 0x01) // QEMU debug console, should use FixedPcdGet16 (PcdDebugIoPort)
585 IO (Decode16, 0x440, 0x440, 0x00, 0x10)
586 IO (Decode16, 0x678, 0x678, 0x00, 0x08)
587 IO (Decode16, 0x778, 0x778, 0x00, 0x08)
588 IO (Decode16, 0xafe0, 0xafe0, 0x00, 0x04) // QEMU GPE0 BLK
589 IO (Decode16, 0xb000, 0xb000, 0x00, 0x40) // PMBLK1
590 Memory32Fixed (ReadOnly, 0xFEC00000, 0x1000) // IO APIC
591 Memory32Fixed (ReadOnly, 0xFEE00000, 0x100000) // LAPIC
596 // PS/2 Keyboard and PC/AT Enhanced Keyboard 101/102
599 Name (_HID, EISAID ("PNP0303"))
600 Name (_CID, EISAID ("PNP030B"))
601 Name(_CRS,ResourceTemplate() {
602 IO (Decode16, 0x60, 0x60, 0x00, 0x01)
603 IO (Decode16, 0x64, 0x64, 0x00, 0x01)
606 // list of IRQs occupied thus far: 9, 5, 10, 11, 2, 0, 8, 13, 1
612 // PS/2 Mouse and Microsoft Mouse
614 Device (PS2M) { // PS/2 stype mouse port
615 Name (_HID, EISAID ("PNP0F03"))
616 Name (_CID, EISAID ("PNP0F13"))
617 Name (_CRS, ResourceTemplate() {
620 // list of IRQs occupied thus far:
621 // 9, 5, 10, 11, 2, 0, 8, 13, 1, 12
627 // UART Serial Port - COM1
630 Name (_HID, EISAID ("PNP0501"))
633 Name(_CRS,ResourceTemplate() {
634 IO (Decode16, 0x3F8, 0x3F8, 0x01, 0x08)
635 IRQ (Edge, ActiveHigh, Exclusive, ) {4}
637 // list of IRQs occupied thus far:
638 // 9, 5, 10, 11, 2, 0, 8, 13, 1, 12, 4
644 // UART Serial Port - COM2
647 Name (_HID, EISAID ("PNP0501"))
650 Name(_CRS,ResourceTemplate() {
651 IO (Decode16, 0x2F8, 0x2F8, 0x01, 0x08)
652 IRQ (Edge, ActiveHigh, Exclusive, ) {3}
654 // list of IRQs occupied thus far:
655 // 9, 5, 10, 11, 2, 0, 8, 13, 1, 12, 4, 3
661 // Floppy Disk Controller
664 Name (_HID, EISAID ("PNP0700"))
665 Name (_CRS,ResourceTemplate() {
666 IO (Decode16, 0x3F0, 0x3F0, 0x01, 0x06)
667 IO (Decode16, 0x3F7, 0x3F7, 0x01, 0x01)
670 // list of IRQs occupied thus far:
671 // 9, 5, 10, 11, 2, 0, 8, 13, 1, 12, 4, 3, 6
673 DMA (Compatibility, NotBusMaster, Transfer8) {2}
678 // parallel port -- no DMA for now
681 Name (_HID, EISAID ("PNP0400"))
684 Name(_CRS, ResourceTemplate() {
685 IO (Decode16, 0x0378, 0x0378, 0x00, 0x08)
688 // list of IRQs occupied thus far:
689 // 9, 5, 10, 11, 2, 0, 8, 13, 1, 12, 4, 3, 6, 7
691 // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13