VirtualBox

source: vbox/trunk/src/VBox/Devices/PC/vbox.dsl@ 12170

Last change on this file since 12170 was 10372, checked in by vboxsync, 16 years ago

disable the floppy controller in the ACPI tables if necessary

  • Property svn:eol-style set to LF
  • Property svn:keywords set to Id
File size: 29.5 KB
Line 
1// $Id: vbox.dsl 10372 2008-07-08 14:14:29Z vboxsync $
2/// @file
3//
4// VirtualBox ACPI
5//
6// Copyright (C) 2006-2007 Sun Microsystems, Inc.
7//
8// This file is part of VirtualBox Open Source Edition (OSE), as
9// available from http://www.virtualbox.org. This file is free software;
10// you can redistribute it and/or modify it under the terms of the GNU
11// General Public License as published by the Free Software Foundation,
12// in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
13// distribution. VirtualBox OSE is distributed in the hope that it will
14// be useful, but WITHOUT ANY WARRANTY of any kind.
15//
16
17DefinitionBlock ("DSDT.aml", "DSDT", 1, "VBOX ", "VBOXBIOS", 2)
18{
19 // Declare debugging ports withing SystemIO
20 OperationRegion(DBG0, SystemIO, 0x3000, 4)
21
22 // Writes to this field Will dump hex char
23 Field (DBG0, ByteAcc, NoLock, Preserve)
24 {
25 DHE1, 8,
26 }
27
28 // Writes to this field Will dump hex word
29 Field (DBG0, WordAcc, NoLock, Preserve)
30 {
31 DHE2, 16,
32 }
33
34 // Writes to this field Will dump hex double word
35 Field (DBG0, DWordAcc, NoLock, Preserve)
36 {
37 DHE4, 32,
38 }
39
40 // Writes to this field will dump ascii char
41 Field (DBG0, ByteAcc, NoLock, Preserve)
42 {
43 Offset (1),
44 DCHR, 8
45 }
46
47 // Shortcuts
48 Method(HEX, 1)
49 {
50 Store (Arg0, DHE1)
51 }
52
53 Method(HEX2, 1)
54 {
55 Store (Arg0, DHE2)
56 }
57
58 Method(HEX4, 1)
59 {
60 Store (Arg0, DHE4)
61 }
62
63 // Code from Microsoft sample
64 // http://www.microsoft.com/whdc/system/pnppwr/powermgmt/_OSI-method.mspx
65
66 //
67 // SLEN(Str) - Returns the length of Str (excluding NULL).
68 //
69 Method(SLEN, 1)
70 {
71 //
72 // Note: The caller must make sure that the argument is a string object.
73 //
74 Store(Arg0, Local0)
75 Return(Sizeof(Local0))
76 }
77
78 Method(S2BF, 1)
79 {
80 //
81 // Note: The caller must make sure that the argument is a string object.
82 //
83 // Local0 contains length of string + NULL.
84 //
85 Store(Arg0, Local0)
86 Add(SLEN(Local0), One, Local0)
87 //
88 // Convert the string object into a buffer object.
89 //
90 Name(BUFF, Buffer(Local0) {})
91 Store(Arg0, BUFF)
92 Return(BUFF)
93 }
94
95 // Convert ASCII string to buffer and store it's contents (char by
96 // char) into DCHR (thus possibly writing the string to console)
97 Method (\DBG, 1, NotSerialized)
98 {
99 Store(Arg0, Local0)
100 Store(S2BF (Local0), Local1)
101 Store(SizeOf (Local1), Local0)
102 Decrement (Local0)
103 Store(Zero, Local2)
104 While (Local0)
105 {
106 Decrement (Local0)
107 Store (DerefOf (Index (Local1, Local2)), DCHR)
108 Increment (Local2)
109 }
110 }
111
112 Name(PICM, 0)
113 Method(_PIC, 1)
114 {
115 DBG ("Pic mode: ")
116 HEX4 (Arg0)
117 Store (Arg0, PICM)
118 }
119
120 // Processor object
121 // #1463: Showing the CPU can make the guest do bad things on it like SpeedStep.
122 // In this case, XP SP2 contains this buggy Intelppm.sys driver which wants to mess
123 // with SpeedStep if it finds a CPU object and when it finds out that it can't, it
124 // tries to unload and crashes (MS probably never tested this code path).
125// Scope (\_PR)
126// {
127// Processor (CPU1, 0x01, 0x00000000, 0x00) {}
128// }
129
130 Scope (\_SB)
131 {
132 OperationRegion (SYSI, SystemIO, 0x4048, 0x08)
133 Field (SYSI, DwordAcc, NoLock, Preserve)
134 {
135 IDX0, 32,
136 DAT0, 32,
137 }
138
139 IndexField (IDX0, DAT0, DwordAcc, NoLock, Preserve)
140 {
141 MEML, 32,
142 UIOA, 32,
143 Offset (0x80),
144 ININ, 32,
145 Offset (0x200),
146 VAIN, 32,
147 }
148
149 Method (_INI, 0, NotSerialized)
150 {
151 Store (0xbadc0de, VAIN)
152 DBG ("MEML: ")
153 HEX4 (MEML)
154 DBG ("UIOA: ")
155 HEX4 (UIOA)
156 }
157
158 // PCI PIC IRQ Routing table
159 // Must match pci.c:pci_slot_get_pirq
160 Name (PR00, Package ()
161 {
162 Package (0x04) {0x0002FFFF, 0x00, LNKB, 0x00,},
163 Package (0x04) {0x0002FFFF, 0x01, LNKC, 0x00,},
164 Package (0x04) {0x0002FFFF, 0x02, LNKD, 0x00,},
165 Package (0x04) {0x0002FFFF, 0x03, LNKA, 0x00,},
166 Package (0x04) {0x0003FFFF, 0x00, LNKC, 0x00,},
167 Package (0x04) {0x0003FFFF, 0x01, LNKD, 0x00,},
168 Package (0x04) {0x0003FFFF, 0x02, LNKA, 0x00,},
169 Package (0x04) {0x0003FFFF, 0x03, LNKB, 0x00,},
170 Package (0x04) {0x0004FFFF, 0x00, LNKD, 0x00,},
171 Package (0x04) {0x0004FFFF, 0x01, LNKA, 0x00,},
172 Package (0x04) {0x0004FFFF, 0x02, LNKB, 0x00,},
173 Package (0x04) {0x0004FFFF, 0x03, LNKC, 0x00,},
174 Package (0x04) {0x0005FFFF, 0x00, LNKA, 0x00,},
175 Package (0x04) {0x0005FFFF, 0x01, LNKB, 0x00,},
176 Package (0x04) {0x0005FFFF, 0x02, LNKC, 0x00,},
177 Package (0x04) {0x0005FFFF, 0x03, LNKD, 0x00,},
178 Package (0x04) {0x0006FFFF, 0x00, LNKB, 0x00,},
179 Package (0x04) {0x0006FFFF, 0x01, LNKC, 0x00,},
180 Package (0x04) {0x0006FFFF, 0x02, LNKD, 0x00,},
181 Package (0x04) {0x0006FFFF, 0x03, LNKA, 0x00,},
182 Package (0x04) {0x0007FFFF, 0x00, LNKC, 0x00,},
183 Package (0x04) {0x0007FFFF, 0x01, LNKD, 0x00,},
184 Package (0x04) {0x0007FFFF, 0x02, LNKA, 0x00,},
185 Package (0x04) {0x0007FFFF, 0x03, LNKB, 0x00,},
186 Package (0x04) {0x0008FFFF, 0x00, LNKD, 0x00,},
187 Package (0x04) {0x0008FFFF, 0x01, LNKA, 0x00,},
188 Package (0x04) {0x0008FFFF, 0x02, LNKB, 0x00,},
189 Package (0x04) {0x0008FFFF, 0x03, LNKC, 0x00,},
190 Package (0x04) {0x0009FFFF, 0x00, LNKA, 0x00,},
191 Package (0x04) {0x0009FFFF, 0x01, LNKB, 0x00,},
192 Package (0x04) {0x0009FFFF, 0x02, LNKC, 0x00,},
193 Package (0x04) {0x0009FFFF, 0x03, LNKD, 0x00,},
194 Package (0x04) {0x000AFFFF, 0x00, LNKB, 0x00,},
195 Package (0x04) {0x000AFFFF, 0x01, LNKC, 0x00,},
196 Package (0x04) {0x000AFFFF, 0x02, LNKD, 0x00,},
197 Package (0x04) {0x000AFFFF, 0x03, LNKA, 0x00,},
198 Package (0x04) {0x000BFFFF, 0x00, LNKC, 0x00,},
199 Package (0x04) {0x000BFFFF, 0x01, LNKD, 0x00,},
200 Package (0x04) {0x000BFFFF, 0x02, LNKA, 0x00,},
201 Package (0x04) {0x000BFFFF, 0x03, LNKB, 0x00,},
202 Package (0x04) {0x000CFFFF, 0x00, LNKD, 0x00,},
203 Package (0x04) {0x000CFFFF, 0x01, LNKA, 0x00,},
204 Package (0x04) {0x000CFFFF, 0x02, LNKB, 0x00,},
205 Package (0x04) {0x000CFFFF, 0x03, LNKC, 0x00,},
206 Package (0x04) {0x000DFFFF, 0x00, LNKA, 0x00,},
207 Package (0x04) {0x000DFFFF, 0x01, LNKB, 0x00,},
208 Package (0x04) {0x000DFFFF, 0x02, LNKC, 0x00,},
209 Package (0x04) {0x000DFFFF, 0x03, LNKD, 0x00,},
210 Package (0x04) {0x000EFFFF, 0x00, LNKB, 0x00,},
211 Package (0x04) {0x000EFFFF, 0x01, LNKC, 0x00,},
212 Package (0x04) {0x000EFFFF, 0x02, LNKD, 0x00,},
213 Package (0x04) {0x000EFFFF, 0x03, LNKA, 0x00,},
214 Package (0x04) {0x000FFFFF, 0x00, LNKC, 0x00,},
215 Package (0x04) {0x000FFFFF, 0x01, LNKD, 0x00,},
216 Package (0x04) {0x000FFFFF, 0x02, LNKA, 0x00,},
217 Package (0x04) {0x000FFFFF, 0x03, LNKB, 0x00,}
218 })
219
220 // PCI I/O APIC IRQ Routing table
221 // Must match pci.c:pci_slot_get_acpi_pirq
222 Name (PR01, Package ()
223 {
224 Package (0x04) {0x0002FFFF, 0x00, 0x00, 0x12,},
225 Package (0x04) {0x0002FFFF, 0x01, 0x00, 0x13,},
226 Package (0x04) {0x0002FFFF, 0x02, 0x00, 0x14,},
227 Package (0x04) {0x0002FFFF, 0x03, 0x00, 0x15,},
228 Package (0x04) {0x0003FFFF, 0x00, 0x00, 0x13,},
229 Package (0x04) {0x0003FFFF, 0x01, 0x00, 0x14,},
230 Package (0x04) {0x0003FFFF, 0x02, 0x00, 0x15,},
231 Package (0x04) {0x0003FFFF, 0x03, 0x00, 0x16,},
232 Package (0x04) {0x0004FFFF, 0x00, 0x00, 0x14,},
233 Package (0x04) {0x0004FFFF, 0x01, 0x00, 0x15,},
234 Package (0x04) {0x0004FFFF, 0x02, 0x00, 0x16,},
235 Package (0x04) {0x0004FFFF, 0x03, 0x00, 0x17,},
236 Package (0x04) {0x0005FFFF, 0x00, 0x00, 0x15,},
237 Package (0x04) {0x0005FFFF, 0x01, 0x00, 0x16,},
238 Package (0x04) {0x0005FFFF, 0x02, 0x00, 0x17,},
239 Package (0x04) {0x0005FFFF, 0x03, 0x00, 0x10,},
240 Package (0x04) {0x0006FFFF, 0x00, 0x00, 0x16,},
241 Package (0x04) {0x0006FFFF, 0x01, 0x00, 0x17,},
242 Package (0x04) {0x0006FFFF, 0x02, 0x00, 0x10,},
243 Package (0x04) {0x0006FFFF, 0x03, 0x00, 0x11,},
244 Package (0x04) {0x0007FFFF, 0x00, 0x00, 0x17,},
245 Package (0x04) {0x0007FFFF, 0x01, 0x00, 0x10,},
246 Package (0x04) {0x0007FFFF, 0x02, 0x00, 0x11,},
247 Package (0x04) {0x0007FFFF, 0x03, 0x00, 0x12,},
248 Package (0x04) {0x0008FFFF, 0x00, 0x00, 0x10,},
249 Package (0x04) {0x0008FFFF, 0x01, 0x00, 0x11,},
250 Package (0x04) {0x0008FFFF, 0x02, 0x00, 0x12,},
251 Package (0x04) {0x0008FFFF, 0x03, 0x00, 0x13,},
252 Package (0x04) {0x0009FFFF, 0x00, 0x00, 0x11,},
253 Package (0x04) {0x0009FFFF, 0x01, 0x00, 0x12,},
254 Package (0x04) {0x0009FFFF, 0x02, 0x00, 0x13,},
255 Package (0x04) {0x0009FFFF, 0x03, 0x00, 0x14,},
256 Package (0x04) {0x000AFFFF, 0x00, 0x00, 0x12,},
257 Package (0x04) {0x000AFFFF, 0x01, 0x00, 0x13,},
258 Package (0x04) {0x000AFFFF, 0x02, 0x00, 0x14,},
259 Package (0x04) {0x000AFFFF, 0x03, 0x00, 0x15,},
260 Package (0x04) {0x000BFFFF, 0x00, 0x00, 0x13,},
261 Package (0x04) {0x000BFFFF, 0x01, 0x00, 0x14,},
262 Package (0x04) {0x000BFFFF, 0x02, 0x00, 0x15,},
263 Package (0x04) {0x000BFFFF, 0x03, 0x00, 0x16,},
264 Package (0x04) {0x000CFFFF, 0x00, 0x00, 0x14,},
265 Package (0x04) {0x000CFFFF, 0x01, 0x00, 0x15,},
266 Package (0x04) {0x000CFFFF, 0x02, 0x00, 0x16,},
267 Package (0x04) {0x000CFFFF, 0x03, 0x00, 0x17,},
268 Package (0x04) {0x000DFFFF, 0x00, 0x00, 0x15,},
269 Package (0x04) {0x000DFFFF, 0x01, 0x00, 0x16,},
270 Package (0x04) {0x000DFFFF, 0x02, 0x00, 0x17,},
271 Package (0x04) {0x000DFFFF, 0x03, 0x00, 0x10,},
272 Package (0x04) {0x000EFFFF, 0x00, 0x00, 0x16,},
273 Package (0x04) {0x000EFFFF, 0x01, 0x00, 0x17,},
274 Package (0x04) {0x000EFFFF, 0x02, 0x00, 0x10,},
275 Package (0x04) {0x000EFFFF, 0x03, 0x00, 0x11,},
276 Package (0x04) {0x000FFFFF, 0x00, 0x00, 0x17,},
277 Package (0x04) {0x000FFFFF, 0x01, 0x00, 0x10,},
278 Package (0x04) {0x000FFFFF, 0x02, 0x00, 0x11,},
279 Package (0x04) {0x000FFFFF, 0x03, 0x00, 0x12,}
280 })
281
282 // Possible resource settings for PCI link A
283 Name (PRSA, ResourceTemplate ()
284 {
285 IRQ (Level, ActiveLow, Shared) {5,9,10,11}
286 })
287
288 // Possible resource settings for PCI link B
289 Name (PRSB, ResourceTemplate ()
290 {
291 IRQ (Level, ActiveLow, Shared) {5,9,10,11}
292 })
293
294 // Possible resource settings for PCI link C
295 Name (PRSC, ResourceTemplate ()
296 {
297 IRQ (Level, ActiveLow, Shared) {5,9,10,11}
298 })
299
300 // Possible resource settings for PCI link D
301 Name (PRSD, ResourceTemplate ()
302 {
303 IRQ (Level, ActiveLow, Shared) {5,9,10,11}
304 })
305
306 // PCI bus 0
307 Device (PCI0)
308 {
309 Name (_HID, EisaId ("PNP0A03"))
310 Name (_ADR, 0x00) // address
311 Name (_BBN, 0x00) // base bus adddress
312 Name (_UID, 0x00)
313
314 // Method that returns routing table
315 Method (_PRT, 0, NotSerialized)
316 {
317 if (LEqual (LAnd (PICM, UIOA), Zero)) {
318 DBG ("RETURNING PIC\n")
319 Store (0x00, \_SB.PCI0.SBRG.APDE)
320 Store (0x00, \_SB.PCI0.SBRG.APAD)
321 Return (PR00)
322 }
323 else {
324 DBG ("RETURNING APIC\n")
325 Store (0xbe, \_SB.PCI0.SBRG.APDE)
326 Store (0xef, \_SB.PCI0.SBRG.APAD)
327 Return (PR01)
328 }
329 }
330
331 Device (SBRG)
332 {
333 // Address of the PIIX3 (device 1 function 0)
334 Name (_ADR, 0x00010000)
335 OperationRegion (PCIC, PCI_Config, 0x00, 0xff)
336
337 Field (PCIC, ByteAcc, NoLock, Preserve)
338 {
339 Offset (0xad),
340 APAD, 8,
341 Offset (0xde),
342 APDE, 8,
343 }
344
345 // Keyboard device
346 Device (PS2K)
347 {
348 Name (_HID, EisaId ("PNP0303"))
349 Method (_STA, 0, NotSerialized)
350 {
351 Return (0x0F)
352 }
353
354 Name (_CRS, ResourceTemplate ()
355 {
356 IO (Decode16, 0x0060, 0x0060, 0x00, 0x01)
357 IO (Decode16, 0x0064, 0x0064, 0x00, 0x01)
358 IRQNoFlags () {1}
359 })
360 }
361
362 // DMA Controller
363 Device (DMAC)
364 {
365 Name (_HID, EisaId ("PNP0200"))
366 Name (_CRS, ResourceTemplate ()
367 {
368 IO (Decode16, 0x0000, 0x0000, 0x01, 0x10)
369 IO (Decode16, 0x0080, 0x0080, 0x01, 0x10)
370 IO (Decode16, 0x00C0, 0x00C0, 0x01, 0x20)
371 DMA (Compatibility, BusMaster, Transfer8_16) {4}
372 })
373 }
374
375 // Floppy disk controller
376 Device (FDC0)
377 {
378 Name (_HID, EisaId ("PNP0700"))
379
380 OperationRegion (CFDC, SystemIO, 0x4054, 0x08)
381 Field (CFDC, DwordAcc, NoLock, Preserve)
382 {
383 FSTA, 32,
384 }
385
386 Method (_STA, 0, NotSerialized)
387 {
388 Return (FSTA)
389 }
390
391 // Current resource settings
392 Name (_CRS, ResourceTemplate ()
393 {
394 IO (Decode16, 0x03F0, 0x03F0, 0x01, 0x06)
395 IO (Decode16, 0x03F7, 0x03F7, 0x01, 0x01)
396 IRQNoFlags () {6}
397 DMA (Compatibility, NotBusMaster, Transfer8) {2}
398 })
399
400 // Possible resource settings
401 Name (_PRS, ResourceTemplate ()
402 {
403 IO (Decode16, 0x03F0, 0x03F0, 0x01, 0x06)
404 IO (Decode16, 0x03F7, 0x03F7, 0x01, 0x01)
405 IRQNoFlags () {6}
406 DMA (Compatibility, NotBusMaster, Transfer8) {2}
407 })
408
409 }
410
411 // Mouse device
412 Device (PS2M)
413 {
414 Name (_HID, EisaId ("PNP0F03"))
415 Method (_STA, 0, NotSerialized)
416 {
417 Return (0x0F)
418 }
419
420 Name (_CRS, ResourceTemplate ()
421 {
422 IO (Decode16, 0x0060, 0x0060, 0x00, 0x01)
423 IO (Decode16, 0x0064, 0x0064, 0x00, 0x01)
424 IRQNoFlags () {12}
425 })
426 }
427
428 // Parallel port
429 Device (LPT)
430 {
431 Name (_HID, EisaId ("PNP0400"))
432 Method (_STA, 0, NotSerialized)
433 {
434 Return (0x0F)
435 }
436 Name (_CRS, ResourceTemplate ()
437 {
438 IO (Decode16, 0x0378, 0x0378, 0x08, 0x08)
439 IO (Decode16, 0x0778, 0x0778, 0x08, 0x08)
440 IRQNoFlags () {7}
441 })
442 }
443 }
444
445 // Control method battery
446 Device (BAT0)
447 {
448 Name (_HID, EisaId ("PNP0C0A"))
449 Name (_UID, 0x00)
450
451 Scope (\_GPE)
452 {
453 // GPE bit 0 handler
454 // GPE.0 must be set and SCI raised when
455 // battery info changed and _BIF must be
456 // re-evaluated
457 Method (_L00, 0, NotSerialized)
458 {
459 Notify (\_SB.PCI0.BAT0, 0x81)
460 }
461 }
462
463 OperationRegion (CBAT, SystemIO, 0x4040, 0x08)
464 Field (CBAT, DwordAcc, NoLock, Preserve)
465 {
466 IDX0, 32,
467 DAT0, 32,
468 }
469
470 IndexField (IDX0, DAT0, DwordAcc, NoLock, Preserve)
471 {
472 STAT, 32,
473 PRAT, 32,
474 RCAP, 32,
475 PVOL, 32,
476
477 UNIT, 32,
478 DCAP, 32,
479 LFCP, 32,
480 BTEC, 32,
481 DVOL, 32,
482 DWRN, 32,
483 DLOW, 32,
484 GRN1, 32,
485 GRN2, 32,
486
487 BSTA, 32,
488 APSR, 32,
489 }
490
491 Method (_STA, 0, NotSerialized)
492 {
493 return (BSTA)
494 }
495
496 Name (PBIF, Package ()
497 {
498 0x01, // Power unit, 1 - mA
499 0x7fffffff, // Design capacity
500 0x7fffffff, // Last full charge capacity
501 0x00, // Battery technology
502 0xffffffff, // Design voltage
503 0x00, // Design capacity of Warning
504 0x00, // Design capacity of Low
505 0x04, // Battery capacity granularity 1
506 0x04, // Battery capacity granularity 2
507 "1", // Model number
508 "0", // Serial number
509 "VBOX", // Battery type
510 "innotek" // OEM Information
511 })
512
513 Name (PBST, Package () {
514 0, // Battery state
515 0x7fffffff, // Battery present rate
516 0x7fffffff, // Battery remaining capacity
517 0x7fffffff // Battery present voltage
518 })
519
520 // Battery information
521 Method (_BIF, 0, NotSerialized)
522 {
523 Store (UNIT, Index (PBIF, 0,))
524 Store (DCAP, Index (PBIF, 1,))
525 Store (LFCP, Index (PBIF, 2,))
526 Store (BTEC, Index (PBIF, 3,))
527 Store (DVOL, Index (PBIF, 4,))
528 Store (DWRN, Index (PBIF, 5,))
529 Store (DLOW, Index (PBIF, 6,))
530 Store (GRN1, Index (PBIF, 7,))
531 Store (GRN2, Index (PBIF, 8,))
532
533 DBG ("_BIF:\n")
534 HEX4 (DerefOf (Index (PBIF, 0,)))
535 HEX4 (DerefOf (Index (PBIF, 1,)))
536 HEX4 (DerefOf (Index (PBIF, 2,)))
537 HEX4 (DerefOf (Index (PBIF, 3,)))
538 HEX4 (DerefOf (Index (PBIF, 4,)))
539 HEX4 (DerefOf (Index (PBIF, 5,)))
540 HEX4 (DerefOf (Index (PBIF, 6,)))
541 HEX4 (DerefOf (Index (PBIF, 7,)))
542 HEX4 (DerefOf (Index (PBIF, 8,)))
543
544 return (PBIF)
545 }
546
547 // Battery status
548 Method (_BST, 0, NotSerialized)
549 {
550 Store (STAT, Index (PBST, 0,))
551 Store (PRAT, Index (PBST, 1,))
552 Store (RCAP, Index (PBST, 2,))
553 Store (PVOL, Index (PBST, 3,))
554/*
555 DBG ("_BST:\n")
556 HEX4 (DerefOf (Index (PBST, 0,)))
557 HEX4 (DerefOf (Index (PBST, 1,)))
558 HEX4 (DerefOf (Index (PBST, 2,)))
559 HEX4 (DerefOf (Index (PBST, 3,)))
560*/
561 return (PBST)
562 }
563 }
564
565 Device (AC)
566 {
567 Name (_HID, "ACPI0003")
568 Name (_UID, 0x00)
569 Name (_PCL, Package (0x01)
570 {
571 \_SB
572 })
573
574 Method (_PSR, 0, NotSerialized)
575 {
576 // DBG ("_PSR:\n")
577 // HEX4 (\_SB.PCI0.BAT0.APSR)
578 return (\_SB.PCI0.BAT0.APSR)
579 }
580
581 Method (_STA, 0, NotSerialized)
582 {
583 return (0x0f)
584 }
585 }
586 }
587 }
588
589 Scope (\_SB)
590 {
591 Scope (PCI0)
592 {
593 // PCI0 current resource settings
594 Name (CRS, ResourceTemplate ()
595 {
596 WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
597 0x0000,
598 0x0000,
599 0x00FF,
600 0x0000,
601 0x0100)
602 IO (Decode16, 0x0CF8, 0x0CF8, 0x01, 0x08)
603 WordIO (ResourceProducer, MinFixed, MaxFixed,
604 PosDecode, EntireRange,
605 0x0000,
606 0x0000,
607 0x0CF7,
608 0x0000,
609 0x0CF8)
610 WordIO (ResourceProducer, MinFixed, MaxFixed,
611 PosDecode, EntireRange,
612 0x0000,
613 0x0D00,
614 0xFFFF,
615 0x0000,
616 0xF300)
617
618 /* Taken from ACPI faq (with some modifications) */
619 DwordMemory( // descriptor for video RAM behind ISA bus
620 ResourceProducer, // bit 0 of general flags is 0
621 PosDecode,
622 MinFixed, // Range is fixed
623 MaxFixed, // Range is Fixed
624 Cacheable,
625 ReadWrite,
626 0x00000000, // Granularity
627 0x000a0000, // Min
628 0x000bffff, // Max
629 0x00000000, // Translation
630 0x00020000 // Range Length
631 )
632
633 DwordMemory( // Consumed-and-produced resource
634 // (all of memory space)
635 ResourceProducer, // bit 0 of general flags is 0
636 PosDecode, // positive Decode
637 MinFixed, // Range is fixed
638 MaxFixed, // Range is fixed
639 Cacheable,
640 ReadWrite,
641 0x00000000, // Granularity
642 0x00000000, // Min (calculated dynamically)
643
644 0xffdfffff, // Max = 4GB - 2MB
645 0x00000000, // Translation
646 0xdfdfffff, // Range Length (calculated
647 // dynamically)
648 , // Optional field left blank
649 , // Optional field left blank
650 MEM3 // Name declaration for this
651 // descriptor
652 )
653 })
654
655 Method (_CRS, 0, NotSerialized)
656 {
657 CreateDwordField (CRS, \_SB.PCI0.MEM3._MIN, RAMT)
658 CreateDwordField (CRS, \_SB.PCI0.MEM3._LEN, RAMR)
659 Store (MEML, RAMT)
660 Subtract (0xffe00000, RAMT, RAMR)
661 Return (CRS)
662 }
663 }
664 }
665
666 Scope (\_SB)
667 {
668 // Fields within PIIX3 configuration[0x60..0x63] with
669 // IRQ mappings
670 Field (\_SB.PCI0.SBRG.PCIC, ByteAcc, NoLock, Preserve)
671 {
672 Offset (0x60),
673 PIRA, 8,
674 PIRB, 8,
675 PIRC, 8,
676 PIRD, 8
677 }
678
679 Name (BUFA, ResourceTemplate ()
680 {
681 IRQ (Level, ActiveLow, Shared) {15}
682 })
683 CreateWordField (BUFA, 0x01, ICRS)
684
685 // Generic status of IRQ routing entry
686 Method (LSTA, 1, NotSerialized)
687 {
688 And (Arg0, 0x80, Local0)
689// DBG ("LSTA: ")
690// HEX (Arg0)
691 If (Local0)
692 {
693 Return (0x09)
694 }
695 Else
696 {
697 Return (0x0B)
698 }
699 }
700
701 // Generic "current resource settings" for routing entry
702 Method (LCRS, 1, NotSerialized)
703 {
704 And (Arg0, 0x0F, Local0)
705 ShiftLeft (0x01, Local0, ICRS)
706// DBG ("LCRS: ")
707// HEX (ICRS)
708 Return (BUFA)
709 }
710
711 // Generic "set resource settings" for routing entry
712 Method (LSRS, 1, NotSerialized)
713 {
714 CreateWordField (Arg0, 0x01, ISRS)
715 FindSetRightBit (ISRS, Local0)
716 Return (Decrement (Local0))
717 }
718
719 // Generic "disable" for routing entry
720 Method (LDIS, 1, NotSerialized)
721 {
722 Return (Or (Arg0, 0x80))
723 }
724
725 // Link A
726 Device (LNKA)
727 {
728 Name (_HID, EisaId ("PNP0C0F"))
729 Name (_UID, 0x01)
730
731 // Status
732 Method (_STA, 0, NotSerialized)
733 {
734 DBG ("LNKA._STA\n")
735 Return (LSTA (PIRA))
736 }
737
738 // Possible resource settings
739 Method (_PRS, 0, NotSerialized)
740 {
741 DBG ("LNKA._PRS\n")
742 Return (PRSA)
743 }
744
745 // Disable
746 Method (_DIS, 0, NotSerialized)
747 {
748 DBG ("LNKA._DIS\n")
749 Store (LDIS (PIRA), PIRA)
750 }
751
752 // Current resource settings
753 Method (_CRS, 0, NotSerialized)
754 {
755 DBG ("LNKA._CRS\n")
756 Return (LCRS (PIRA))
757 }
758
759 // Set resource settings
760 Method (_SRS, 1, NotSerialized)
761 {
762 DBG ("LNKA._SRS: ")
763 HEX (LSRS (Arg0))
764 Store (LSRS (Arg0), PIRA)
765 }
766 }
767
768 // Link B
769 Device (LNKB)
770 {
771 Name (_HID, EisaId ("PNP0C0F"))
772 Name (_UID, 0x02)
773 Method (_STA, 0, NotSerialized)
774 {
775 // DBG ("LNKB._STA\n")
776 Return (LSTA (PIRB))
777 }
778
779 Method (_PRS, 0, NotSerialized)
780 {
781 // DBG ("LNKB._PRS\n")
782 Return (PRSB)
783 }
784
785 Method (_DIS, 0, NotSerialized)
786 {
787 // DBG ("LNKB._DIS\n")
788 Store (LDIS (PIRB), PIRB)
789 }
790
791 Method (_CRS, 0, NotSerialized)
792 {
793 // DBG ("LNKB._CRS\n")
794 Return (LCRS (PIRB))
795 }
796
797 Method (_SRS, 1, NotSerialized)
798 {
799 DBG ("LNKB._SRS: ")
800 HEX (LSRS (Arg0))
801 Store (LSRS (Arg0), PIRB)
802 }
803 }
804
805 // Link C
806 Device (LNKC)
807 {
808 Name (_HID, EisaId ("PNP0C0F"))
809 Name (_UID, 0x03)
810 Method (_STA, 0, NotSerialized)
811 {
812 // DBG ("LNKC._STA\n")
813 Return (LSTA (PIRC))
814 }
815
816 Method (_PRS, 0, NotSerialized)
817 {
818 // DBG ("LNKC._PRS\n")
819 Return (PRSC)
820 }
821
822 Method (_DIS, 0, NotSerialized)
823 {
824 // DBG ("LNKC._DIS\n")
825 Store (LDIS (PIRC), PIRC)
826 }
827
828 Method (_CRS, 0, NotSerialized)
829 {
830 // DBG ("LNKC._CRS\n")
831 Return (LCRS (PIRC))
832 }
833
834 Method (_SRS, 1, NotSerialized)
835 {
836 DBG ("LNKC._SRS: ")
837 HEX (LSRS (Arg0))
838 Store (LSRS (Arg0), PIRC)
839 }
840 }
841
842 // Link D
843 Device (LNKD)
844 {
845 Name (_HID, EisaId ("PNP0C0F"))
846 Name (_UID, 0x04)
847 Method (_STA, 0, NotSerialized)
848 {
849 // DBG ("LNKD._STA\n")
850 Return (LSTA (PIRD))
851 }
852
853 Method (_PRS, 0, NotSerialized)
854 {
855 // DBG ("LNKD._PRS\n")
856 Return (PRSD)
857 }
858
859 Method (_DIS, 0, NotSerialized)
860 {
861 // DBG ("LNKD._DIS\n")
862 Store (LDIS (PIRA), PIRD)
863 }
864
865 Method (_CRS, 0, NotSerialized)
866 {
867 // DBG ("LNKD._CRS\n")
868 Return (LCRS (PIRD))
869 }
870
871 Method (_SRS, 1, NotSerialized)
872 {
873 DBG ("LNKD._SRS: ")
874 HEX (LSRS (Arg0))
875 Store (LSRS (Arg0), PIRD)
876 }
877 }
878 }
879
880 // Sx states
881 Name (_S0, Package (2) {
882 0x00,
883 0x00,
884 })
885
886 Name (_S5, Package (2) {
887 0x05,
888 0x05,
889 })
890
891 Method (_PTS, 1, NotSerialized)
892 {
893 DBG ("Prepare to sleep: ")
894 HEX (Arg0)
895 }
896}
897
898/*
899 * Local Variables:
900 * comment-start: "//"
901 * End:
902 */
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette