VirtualBox

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

Last change on this file since 21205 was 20679, checked in by vboxsync, 15 years ago

ACPI: fix problem with certain Windows ACPI impls (such as XP) mistreating CPU objects - make them all of the same size and control behavior entirely by patching

  • Property svn:eol-style set to LF
  • Property svn:keywords set to Id
File size: 49.4 KB
Line 
1// $Id: vbox.dsl 20679 2009-06-18 10:38:52Z 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 // So we enable this ACPI object only for certain guests, which do need it,
126 // if by accident Windows guest seen enabled CPU object, just boot from latest
127 // known good configuration, as it remembers state, even if ACPI object gets disabled.
128 Scope (\_PR)
129 {
130 Processor (CPU0, /* Name */
131 0x00, /* Id */
132 0x0, /* Processor IO ports range start */
133 0x0 /* Processor IO ports range length */
134 )
135 {
136 }
137 Processor (CPU1, /* Name */
138 0x01, /* Id */
139 0x0, /* Processor IO ports range start */
140 0x0 /* Processor IO ports range length */
141 )
142 {
143 }
144 Processor (CPU2, /* Name */
145 0x02, /* Id */
146 0x0, /* Processor IO ports range start */
147 0x0 /* Processor IO ports range length */
148 )
149 {
150 }
151 Processor (CPU3, /* Name */
152 0x03, /* Id */
153 0x0, /* Processor IO ports range start */
154 0x0 /* Processor IO ports range length */
155 )
156 {
157 }
158 Processor (CPU4, /* Name */
159 0x04, /* Id */
160 0x0, /* Processor IO ports range start */
161 0x0 /* Processor IO ports range length */
162 )
163 {
164 }
165 Processor (CPU5, /* Name */
166 0x05, /* Id */
167 0x0, /* Processor IO ports range start */
168 0x0 /* Processor IO ports range length */
169 )
170 {
171 }
172 Processor (CPU6, /* Name */
173 0x06, /* Id */
174 0x0, /* Processor IO ports range start */
175 0x0 /* Processor IO ports range length */
176 )
177 {
178 }
179 Processor (CPU7, /* Name */
180 0x07, /* Id */
181 0x0, /* Processor IO ports range start */
182 0x0 /* Processor IO ports range length */
183 )
184 {
185 }
186 Processor (CPU8, /* Name */
187 0x08, /* Id */
188 0x0, /* Processor IO ports range start */
189 0x0 /* Processor IO ports range length */
190 )
191 {
192 }
193 Processor (CPU9, /* Name */
194 0x09, /* Id */
195 0x0, /* Processor IO ports range start */
196 0x0 /* Processor IO ports range length */
197 )
198 {
199 }
200 Processor (CPUA, /* Name */
201 0x0a, /* Id */
202 0x0, /* Processor IO ports range start */
203 0x0 /* Processor IO ports range length */
204 )
205 {
206 }
207 Processor (CPUB, /* Name */
208 0x0b, /* Id */
209 0x0, /* Processor IO ports range start */
210 0x0 /* Processor IO ports range length */
211 )
212 {
213 }
214 Processor (CPUC, /* Name */
215 0x0c, /* Id */
216 0x0, /* Processor IO ports range start */
217 0x0 /* Processor IO ports range length */
218 )
219 {
220 }
221 Processor (CPUD, /* Name */
222 0x0d, /* Id */
223 0x0, /* Processor IO ports range start */
224 0x0 /* Processor IO ports range length */
225 )
226 {
227 }
228 Processor (CPUE, /* Name */
229 0x0e, /* Id */
230 0x0, /* Processor IO ports range start */
231 0x0 /* Processor IO ports range length */
232 )
233 {
234 }
235 Processor (CPUF, /* Name */
236 0x0f, /* Id */
237 0x0, /* Processor IO ports range start */
238 0x0 /* Processor IO ports range length */
239 )
240 {
241 }
242 Processor (CPUG, /* Name */
243 0x10, /* Id */
244 0x0, /* Processor IO ports range start */
245 0x0 /* Processor IO ports range length */
246 )
247 {
248 }
249 Processor (CPUH, /* Name */
250 0x11, /* Id */
251 0x0, /* Processor IO ports range start */
252 0x0 /* Processor IO ports range length */
253 )
254 {
255 }
256 Processor (CPUI, /* Name */
257 0x12, /* Id */
258 0x0, /* Processor IO ports range start */
259 0x0 /* Processor IO ports range length */
260 )
261 {
262 }
263 Processor (CPUJ, /* Name */
264 0x13, /* Id */
265 0x0, /* Processor IO ports range start */
266 0x0 /* Processor IO ports range length */
267 )
268 {
269 }
270 Processor (CPUK, /* Name */
271 0x14, /* Id */
272 0x0, /* Processor IO ports range start */
273 0x0 /* Processor IO ports range length */
274 )
275 {
276 }
277 Processor (CPUL, /* Name */
278 0x15, /* Id */
279 0x0, /* Processor IO ports range start */
280 0x0 /* Processor IO ports range length */
281 )
282 {
283 }
284 Processor (CPUM, /* Name */
285 0x16, /* Id */
286 0x0, /* Processor IO ports range start */
287 0x0 /* Processor IO ports range length */
288 )
289 {
290 }
291 Processor (CPUN, /* Name */
292 0x17, /* Id */
293 0x0, /* Processor IO ports range start */
294 0x0 /* Processor IO ports range length */
295 )
296 {
297 }
298 Processor (CPUO, /* Name */
299 0x18, /* Id */
300 0x0, /* Processor IO ports range start */
301 0x0 /* Processor IO ports range length */
302 )
303 {
304 }
305 Processor (CPUP, /* Name */
306 0x19, /* Id */
307 0x0, /* Processor IO ports range start */
308 0x0 /* Processor IO ports range length */
309 )
310 {
311 }
312 Processor (CPUQ, /* Name */
313 0x1a, /* Id */
314 0x0, /* Processor IO ports range start */
315 0x0 /* Processor IO ports range length */
316 )
317 {
318 }
319 Processor (CPUR, /* Name */
320 0x1b, /* Id */
321 0x0, /* Processor IO ports range start */
322 0x0 /* Processor IO ports range length */
323 )
324 {
325 }
326 Processor (CPUS, /* Name */
327 0x1c, /* Id */
328 0x0, /* Processor IO ports range start */
329 0x0 /* Processor IO ports range length */
330 )
331 {
332 }
333 Processor (CPUT, /* Name */
334 0x1d, /* Id */
335 0x0, /* Processor IO ports range start */
336 0x0 /* Processor IO ports range length */
337 )
338 {
339 }
340 Processor (CPUU, /* Name */
341 0x1e, /* Id */
342 0x0, /* Processor IO ports range start */
343 0x0 /* Processor IO ports range length */
344 )
345 {
346 }
347 Processor (CPUV, /* Name */
348 0x1f, /* Id */
349 0x0, /* Processor IO ports range start */
350 0x0 /* Processor IO ports range length */
351 )
352 {
353 }
354
355 }
356
357 Scope (\_SB)
358 {
359 OperationRegion (SYSI, SystemIO, 0x4048, 0x08)
360 Field (SYSI, DwordAcc, NoLock, Preserve)
361 {
362 IDX0, 32,
363 DAT0, 32,
364 }
365
366 IndexField (IDX0, DAT0, DwordAcc, NoLock, Preserve)
367 {
368 MEML, 32,
369 UIOA, 32,
370 UHPT, 32,
371 USMC, 32,
372 UFDC, 32,
373 // @todo: maybe make it bitmask instead?
374 UCP0, 32,
375 UCP1, 32,
376 UCP2, 32,
377 UCP3, 32,
378 MEMH, 32,
379 URTC, 32,
380 Offset (0x80),
381 ININ, 32,
382 Offset (0x200),
383 VAIN, 32,
384 }
385
386 Method (_INI, 0, NotSerialized)
387 {
388 Store (0xbadc0de, VAIN)
389 DBG ("MEML: ")
390 HEX4 (MEML)
391 DBG ("UIOA: ")
392 HEX4 (UIOA)
393 DBG ("UHPT: ")
394 HEX4 (UHPT)
395 DBG ("USMC: ")
396 HEX4 (USMC)
397 DBG ("UFDC: ")
398 HEX4 (UFDC)
399 DBG ("UCP0: ")
400 HEX4 (UCP0)
401 DBG ("MEMH: ")
402 HEX4 (MEMH)
403 }
404
405 // PCI PIC IRQ Routing table
406 // Must match pci.c:pci_slot_get_pirq
407 Name (PR00, Package ()
408 {
409 Package (0x04) {0x0002FFFF, 0x00, LNKB, 0x00,},
410 Package (0x04) {0x0002FFFF, 0x01, LNKC, 0x00,},
411 Package (0x04) {0x0002FFFF, 0x02, LNKD, 0x00,},
412 Package (0x04) {0x0002FFFF, 0x03, LNKA, 0x00,},
413
414 Package (0x04) {0x0003FFFF, 0x00, LNKC, 0x00,},
415 Package (0x04) {0x0003FFFF, 0x01, LNKD, 0x00,},
416 Package (0x04) {0x0003FFFF, 0x02, LNKA, 0x00,},
417 Package (0x04) {0x0003FFFF, 0x03, LNKB, 0x00,},
418
419 Package (0x04) {0x0004FFFF, 0x00, LNKD, 0x00,},
420 Package (0x04) {0x0004FFFF, 0x01, LNKA, 0x00,},
421 Package (0x04) {0x0004FFFF, 0x02, LNKB, 0x00,},
422 Package (0x04) {0x0004FFFF, 0x03, LNKC, 0x00,},
423
424 Package (0x04) {0x0005FFFF, 0x00, LNKA, 0x00,},
425 Package (0x04) {0x0005FFFF, 0x01, LNKB, 0x00,},
426 Package (0x04) {0x0005FFFF, 0x02, LNKC, 0x00,},
427 Package (0x04) {0x0005FFFF, 0x03, LNKD, 0x00,},
428
429 Package (0x04) {0x0006FFFF, 0x00, LNKB, 0x00,},
430 Package (0x04) {0x0006FFFF, 0x01, LNKC, 0x00,},
431 Package (0x04) {0x0006FFFF, 0x02, LNKD, 0x00,},
432 Package (0x04) {0x0006FFFF, 0x03, LNKA, 0x00,},
433
434 Package (0x04) {0x0007FFFF, 0x00, LNKC, 0x00,},
435 Package (0x04) {0x0007FFFF, 0x01, LNKD, 0x00,},
436 Package (0x04) {0x0007FFFF, 0x02, LNKA, 0x00,},
437 Package (0x04) {0x0007FFFF, 0x03, LNKB, 0x00,},
438
439 Package (0x04) {0x0008FFFF, 0x00, LNKD, 0x00,},
440 Package (0x04) {0x0008FFFF, 0x01, LNKA, 0x00,},
441 Package (0x04) {0x0008FFFF, 0x02, LNKB, 0x00,},
442 Package (0x04) {0x0008FFFF, 0x03, LNKC, 0x00,},
443
444 Package (0x04) {0x0009FFFF, 0x00, LNKA, 0x00,},
445 Package (0x04) {0x0009FFFF, 0x01, LNKB, 0x00,},
446 Package (0x04) {0x0009FFFF, 0x02, LNKC, 0x00,},
447 Package (0x04) {0x0009FFFF, 0x03, LNKD, 0x00,},
448
449 Package (0x04) {0x000AFFFF, 0x00, LNKB, 0x00,},
450 Package (0x04) {0x000AFFFF, 0x01, LNKC, 0x00,},
451 Package (0x04) {0x000AFFFF, 0x02, LNKD, 0x00,},
452 Package (0x04) {0x000AFFFF, 0x03, LNKA, 0x00,},
453
454 Package (0x04) {0x000BFFFF, 0x00, LNKC, 0x00,},
455 Package (0x04) {0x000BFFFF, 0x01, LNKD, 0x00,},
456 Package (0x04) {0x000BFFFF, 0x02, LNKA, 0x00,},
457 Package (0x04) {0x000BFFFF, 0x03, LNKB, 0x00,},
458
459 Package (0x04) {0x000CFFFF, 0x00, LNKD, 0x00,},
460 Package (0x04) {0x000CFFFF, 0x01, LNKA, 0x00,},
461 Package (0x04) {0x000CFFFF, 0x02, LNKB, 0x00,},
462 Package (0x04) {0x000CFFFF, 0x03, LNKC, 0x00,},
463
464 Package (0x04) {0x000DFFFF, 0x00, LNKA, 0x00,},
465 Package (0x04) {0x000DFFFF, 0x01, LNKB, 0x00,},
466 Package (0x04) {0x000DFFFF, 0x02, LNKC, 0x00,},
467 Package (0x04) {0x000DFFFF, 0x03, LNKD, 0x00,},
468
469 Package (0x04) {0x000EFFFF, 0x00, LNKB, 0x00,},
470 Package (0x04) {0x000EFFFF, 0x01, LNKC, 0x00,},
471 Package (0x04) {0x000EFFFF, 0x02, LNKD, 0x00,},
472 Package (0x04) {0x000EFFFF, 0x03, LNKA, 0x00,},
473
474 Package (0x04) {0x000FFFFF, 0x00, LNKC, 0x00,},
475 Package (0x04) {0x000FFFFF, 0x01, LNKD, 0x00,},
476 Package (0x04) {0x000FFFFF, 0x02, LNKA, 0x00,},
477 Package (0x04) {0x000FFFFF, 0x03, LNKB, 0x00,},
478
479 Package (0x04) {0x0010FFFF, 0x00, LNKD, 0x00,},
480 Package (0x04) {0x0010FFFF, 0x01, LNKA, 0x00,},
481 Package (0x04) {0x0010FFFF, 0x02, LNKB, 0x00,},
482 Package (0x04) {0x0010FFFF, 0x03, LNKC, 0x00,},
483
484 Package (0x04) {0x0011FFFF, 0x00, LNKA, 0x00,},
485 Package (0x04) {0x0011FFFF, 0x01, LNKB, 0x00,},
486 Package (0x04) {0x0011FFFF, 0x02, LNKC, 0x00,},
487 Package (0x04) {0x0011FFFF, 0x03, LNKD, 0x00,},
488
489 Package (0x04) {0x0012FFFF, 0x00, LNKB, 0x00,},
490 Package (0x04) {0x0012FFFF, 0x01, LNKC, 0x00,},
491 Package (0x04) {0x0012FFFF, 0x02, LNKD, 0x00,},
492 Package (0x04) {0x0012FFFF, 0x03, LNKA, 0x00,},
493
494 Package (0x04) {0x0013FFFF, 0x00, LNKC, 0x00,},
495 Package (0x04) {0x0013FFFF, 0x01, LNKD, 0x00,},
496 Package (0x04) {0x0013FFFF, 0x02, LNKA, 0x00,},
497 Package (0x04) {0x0013FFFF, 0x03, LNKB, 0x00,},
498
499 Package (0x04) {0x0014FFFF, 0x00, LNKD, 0x00,},
500 Package (0x04) {0x0014FFFF, 0x01, LNKA, 0x00,},
501 Package (0x04) {0x0014FFFF, 0x02, LNKB, 0x00,},
502 Package (0x04) {0x0014FFFF, 0x03, LNKC, 0x00,},
503
504 Package (0x04) {0x0015FFFF, 0x00, LNKA, 0x00,},
505 Package (0x04) {0x0015FFFF, 0x01, LNKB, 0x00,},
506 Package (0x04) {0x0015FFFF, 0x02, LNKC, 0x00,},
507 Package (0x04) {0x0015FFFF, 0x03, LNKD, 0x00,},
508
509 Package (0x04) {0x0016FFFF, 0x00, LNKB, 0x00,},
510 Package (0x04) {0x0016FFFF, 0x01, LNKC, 0x00,},
511 Package (0x04) {0x0016FFFF, 0x02, LNKD, 0x00,},
512 Package (0x04) {0x0016FFFF, 0x03, LNKA, 0x00,},
513
514 Package (0x04) {0x0017FFFF, 0x00, LNKC, 0x00,},
515 Package (0x04) {0x0017FFFF, 0x01, LNKD, 0x00,},
516 Package (0x04) {0x0017FFFF, 0x02, LNKA, 0x00,},
517 Package (0x04) {0x0017FFFF, 0x03, LNKB, 0x00,},
518
519 Package (0x04) {0x0018FFFF, 0x00, LNKD, 0x00,},
520 Package (0x04) {0x0018FFFF, 0x01, LNKA, 0x00,},
521 Package (0x04) {0x0018FFFF, 0x02, LNKB, 0x00,},
522 Package (0x04) {0x0018FFFF, 0x03, LNKC, 0x00,},
523
524 Package (0x04) {0x0019FFFF, 0x00, LNKA, 0x00,},
525 Package (0x04) {0x0019FFFF, 0x01, LNKB, 0x00,},
526 Package (0x04) {0x0019FFFF, 0x02, LNKC, 0x00,},
527 Package (0x04) {0x0019FFFF, 0x03, LNKD, 0x00,},
528
529 Package (0x04) {0x001AFFFF, 0x00, LNKB, 0x00,},
530 Package (0x04) {0x001AFFFF, 0x01, LNKC, 0x00,},
531 Package (0x04) {0x001AFFFF, 0x02, LNKD, 0x00,},
532 Package (0x04) {0x001AFFFF, 0x03, LNKA, 0x00,},
533
534 Package (0x04) {0x001BFFFF, 0x00, LNKC, 0x00,},
535 Package (0x04) {0x001BFFFF, 0x01, LNKD, 0x00,},
536 Package (0x04) {0x001BFFFF, 0x02, LNKA, 0x00,},
537 Package (0x04) {0x001BFFFF, 0x03, LNKB, 0x00,},
538
539 Package (0x04) {0x001CFFFF, 0x00, LNKD, 0x00,},
540 Package (0x04) {0x001CFFFF, 0x01, LNKA, 0x00,},
541 Package (0x04) {0x001CFFFF, 0x02, LNKB, 0x00,},
542 Package (0x04) {0x001CFFFF, 0x03, LNKC, 0x00,},
543
544 Package (0x04) {0x001DFFFF, 0x00, LNKA, 0x00,},
545 Package (0x04) {0x001DFFFF, 0x01, LNKB, 0x00,},
546 Package (0x04) {0x001DFFFF, 0x02, LNKC, 0x00,},
547 Package (0x04) {0x001DFFFF, 0x03, LNKD, 0x00,},
548
549 Package (0x04) {0x001EFFFF, 0x00, LNKB, 0x00,},
550 Package (0x04) {0x001EFFFF, 0x01, LNKC, 0x00,},
551 Package (0x04) {0x001EFFFF, 0x02, LNKD, 0x00,},
552 Package (0x04) {0x001EFFFF, 0x03, LNKA, 0x00,},
553
554 Package (0x04) {0x001FFFFF, 0x00, LNKC, 0x00,},
555 Package (0x04) {0x001FFFFF, 0x01, LNKD, 0x00,},
556 Package (0x04) {0x001FFFFF, 0x02, LNKA, 0x00,},
557 Package (0x04) {0x001FFFFF, 0x03, LNKB, 0x00,}
558 })
559
560 // PCI I/O APIC IRQ Routing table
561 // Must match pci.c:pci_slot_get_acpi_pirq
562 Name (PR01, Package ()
563 {
564 Package (0x04) {0x0002FFFF, 0x00, 0x00, 0x12,},
565 Package (0x04) {0x0002FFFF, 0x01, 0x00, 0x13,},
566 Package (0x04) {0x0002FFFF, 0x02, 0x00, 0x14,},
567 Package (0x04) {0x0002FFFF, 0x03, 0x00, 0x15,},
568
569 Package (0x04) {0x0003FFFF, 0x00, 0x00, 0x13,},
570 Package (0x04) {0x0003FFFF, 0x01, 0x00, 0x14,},
571 Package (0x04) {0x0003FFFF, 0x02, 0x00, 0x15,},
572 Package (0x04) {0x0003FFFF, 0x03, 0x00, 0x16,},
573
574 Package (0x04) {0x0004FFFF, 0x00, 0x00, 0x14,},
575 Package (0x04) {0x0004FFFF, 0x01, 0x00, 0x15,},
576 Package (0x04) {0x0004FFFF, 0x02, 0x00, 0x16,},
577 Package (0x04) {0x0004FFFF, 0x03, 0x00, 0x17,},
578
579 Package (0x04) {0x0005FFFF, 0x00, 0x00, 0x15,},
580 Package (0x04) {0x0005FFFF, 0x01, 0x00, 0x16,},
581 Package (0x04) {0x0005FFFF, 0x02, 0x00, 0x17,},
582 Package (0x04) {0x0005FFFF, 0x03, 0x00, 0x10,},
583
584 Package (0x04) {0x0006FFFF, 0x00, 0x00, 0x16,},
585 Package (0x04) {0x0006FFFF, 0x01, 0x00, 0x17,},
586 Package (0x04) {0x0006FFFF, 0x02, 0x00, 0x10,},
587 Package (0x04) {0x0006FFFF, 0x03, 0x00, 0x11,},
588
589 Package (0x04) {0x0007FFFF, 0x00, 0x00, 0x17,},
590 Package (0x04) {0x0007FFFF, 0x01, 0x00, 0x10,},
591 Package (0x04) {0x0007FFFF, 0x02, 0x00, 0x11,},
592 Package (0x04) {0x0007FFFF, 0x03, 0x00, 0x12,},
593
594 Package (0x04) {0x0008FFFF, 0x00, 0x00, 0x10,},
595 Package (0x04) {0x0008FFFF, 0x01, 0x00, 0x11,},
596 Package (0x04) {0x0008FFFF, 0x02, 0x00, 0x12,},
597 Package (0x04) {0x0008FFFF, 0x03, 0x00, 0x13,},
598
599 Package (0x04) {0x0009FFFF, 0x00, 0x00, 0x11,},
600 Package (0x04) {0x0009FFFF, 0x01, 0x00, 0x12,},
601 Package (0x04) {0x0009FFFF, 0x02, 0x00, 0x13,},
602 Package (0x04) {0x0009FFFF, 0x03, 0x00, 0x14,},
603
604 Package (0x04) {0x000AFFFF, 0x00, 0x00, 0x12,},
605 Package (0x04) {0x000AFFFF, 0x01, 0x00, 0x13,},
606 Package (0x04) {0x000AFFFF, 0x02, 0x00, 0x14,},
607 Package (0x04) {0x000AFFFF, 0x03, 0x00, 0x15,},
608
609 Package (0x04) {0x000BFFFF, 0x00, 0x00, 0x13,},
610 Package (0x04) {0x000BFFFF, 0x01, 0x00, 0x14,},
611 Package (0x04) {0x000BFFFF, 0x02, 0x00, 0x15,},
612 Package (0x04) {0x000BFFFF, 0x03, 0x00, 0x16,},
613
614 Package (0x04) {0x000CFFFF, 0x00, 0x00, 0x14,},
615 Package (0x04) {0x000CFFFF, 0x01, 0x00, 0x15,},
616 Package (0x04) {0x000CFFFF, 0x02, 0x00, 0x16,},
617 Package (0x04) {0x000CFFFF, 0x03, 0x00, 0x17,},
618
619 Package (0x04) {0x000DFFFF, 0x00, 0x00, 0x15,},
620 Package (0x04) {0x000DFFFF, 0x01, 0x00, 0x16,},
621 Package (0x04) {0x000DFFFF, 0x02, 0x00, 0x17,},
622 Package (0x04) {0x000DFFFF, 0x03, 0x00, 0x10,},
623
624 Package (0x04) {0x000EFFFF, 0x00, 0x00, 0x16,},
625 Package (0x04) {0x000EFFFF, 0x01, 0x00, 0x17,},
626 Package (0x04) {0x000EFFFF, 0x02, 0x00, 0x10,},
627 Package (0x04) {0x000EFFFF, 0x03, 0x00, 0x11,},
628
629 Package (0x04) {0x000FFFFF, 0x00, 0x00, 0x17,},
630 Package (0x04) {0x000FFFFF, 0x01, 0x00, 0x10,},
631 Package (0x04) {0x000FFFFF, 0x02, 0x00, 0x11,},
632 Package (0x04) {0x000FFFFF, 0x03, 0x00, 0x12,},
633
634 Package (0x04) {0x0010FFFF, 0x00, 0x00, 0x10,},
635 Package (0x04) {0x0010FFFF, 0x01, 0x00, 0x11,},
636 Package (0x04) {0x0010FFFF, 0x02, 0x00, 0x12,},
637 Package (0x04) {0x0010FFFF, 0x03, 0x00, 0x13,},
638
639 Package (0x04) {0x0011FFFF, 0x00, 0x00, 0x11,},
640 Package (0x04) {0x0011FFFF, 0x01, 0x00, 0x12,},
641 Package (0x04) {0x0011FFFF, 0x02, 0x00, 0x13,},
642 Package (0x04) {0x0011FFFF, 0x03, 0x00, 0x14,},
643
644 Package (0x04) {0x0012FFFF, 0x00, 0x00, 0x12,},
645 Package (0x04) {0x0012FFFF, 0x01, 0x00, 0x13,},
646 Package (0x04) {0x0012FFFF, 0x02, 0x00, 0x14,},
647 Package (0x04) {0x0012FFFF, 0x03, 0x00, 0x15,},
648
649 Package (0x04) {0x0013FFFF, 0x00, 0x00, 0x13,},
650 Package (0x04) {0x0013FFFF, 0x01, 0x00, 0x14,},
651 Package (0x04) {0x0013FFFF, 0x02, 0x00, 0x15,},
652 Package (0x04) {0x0013FFFF, 0x03, 0x00, 0x16,},
653
654 Package (0x04) {0x0014FFFF, 0x00, 0x00, 0x14,},
655 Package (0x04) {0x0014FFFF, 0x01, 0x00, 0x15,},
656 Package (0x04) {0x0014FFFF, 0x02, 0x00, 0x16,},
657 Package (0x04) {0x0014FFFF, 0x03, 0x00, 0x17,},
658
659 Package (0x04) {0x0015FFFF, 0x00, 0x00, 0x15,},
660 Package (0x04) {0x0015FFFF, 0x01, 0x00, 0x16,},
661 Package (0x04) {0x0015FFFF, 0x02, 0x00, 0x17,},
662 Package (0x04) {0x0015FFFF, 0x03, 0x00, 0x10,},
663
664 Package (0x04) {0x0016FFFF, 0x00, 0x00, 0x16,},
665 Package (0x04) {0x0016FFFF, 0x01, 0x00, 0x17,},
666 Package (0x04) {0x0016FFFF, 0x02, 0x00, 0x10,},
667 Package (0x04) {0x0016FFFF, 0x03, 0x00, 0x11,},
668
669 Package (0x04) {0x0017FFFF, 0x00, 0x00, 0x17,},
670 Package (0x04) {0x0017FFFF, 0x01, 0x00, 0x10,},
671 Package (0x04) {0x0017FFFF, 0x02, 0x00, 0x11,},
672 Package (0x04) {0x0017FFFF, 0x03, 0x00, 0x12,},
673
674 Package (0x04) {0x0018FFFF, 0x00, 0x00, 0x10,},
675 Package (0x04) {0x0018FFFF, 0x01, 0x00, 0x11,},
676 Package (0x04) {0x0018FFFF, 0x02, 0x00, 0x12,},
677 Package (0x04) {0x0018FFFF, 0x03, 0x00, 0x13,},
678
679 Package (0x04) {0x0019FFFF, 0x00, 0x00, 0x11,},
680 Package (0x04) {0x0019FFFF, 0x01, 0x00, 0x12,},
681 Package (0x04) {0x0019FFFF, 0x02, 0x00, 0x13,},
682 Package (0x04) {0x0019FFFF, 0x03, 0x00, 0x14,},
683
684 Package (0x04) {0x001AFFFF, 0x00, 0x00, 0x12,},
685 Package (0x04) {0x001AFFFF, 0x01, 0x00, 0x13,},
686 Package (0x04) {0x001AFFFF, 0x02, 0x00, 0x14,},
687 Package (0x04) {0x001AFFFF, 0x03, 0x00, 0x15,},
688
689 Package (0x04) {0x001BFFFF, 0x00, 0x00, 0x13,},
690 Package (0x04) {0x001BFFFF, 0x01, 0x00, 0x14,},
691 Package (0x04) {0x001BFFFF, 0x02, 0x00, 0x15,},
692 Package (0x04) {0x001BFFFF, 0x03, 0x00, 0x16,},
693
694 Package (0x04) {0x001CFFFF, 0x00, 0x00, 0x14,},
695 Package (0x04) {0x001CFFFF, 0x01, 0x00, 0x15,},
696 Package (0x04) {0x001CFFFF, 0x02, 0x00, 0x16,},
697 Package (0x04) {0x001CFFFF, 0x03, 0x00, 0x17,},
698
699 Package (0x04) {0x001DFFFF, 0x00, 0x00, 0x15,},
700 Package (0x04) {0x001DFFFF, 0x01, 0x00, 0x16,},
701 Package (0x04) {0x001DFFFF, 0x02, 0x00, 0x17,},
702 Package (0x04) {0x001DFFFF, 0x03, 0x00, 0x10,},
703
704 Package (0x04) {0x001EFFFF, 0x00, 0x00, 0x16,},
705 Package (0x04) {0x001EFFFF, 0x01, 0x00, 0x17,},
706 Package (0x04) {0x001EFFFF, 0x02, 0x00, 0x10,},
707 Package (0x04) {0x001EFFFF, 0x03, 0x00, 0x11,},
708
709 Package (0x04) {0x001FFFFF, 0x00, 0x00, 0x17,},
710 Package (0x04) {0x001FFFFF, 0x01, 0x00, 0x10,},
711 Package (0x04) {0x001FFFFF, 0x02, 0x00, 0x11,},
712 Package (0x04) {0x001FFFFF, 0x03, 0x00, 0x12,}
713 })
714
715 // Possible resource settings for PCI link A
716 Name (PRSA, ResourceTemplate ()
717 {
718 IRQ (Level, ActiveLow, Shared) {5,9,10,11}
719 })
720
721 // Possible resource settings for PCI link B
722 Name (PRSB, ResourceTemplate ()
723 {
724 IRQ (Level, ActiveLow, Shared) {5,9,10,11}
725 })
726
727 // Possible resource settings for PCI link C
728 Name (PRSC, ResourceTemplate ()
729 {
730 IRQ (Level, ActiveLow, Shared) {5,9,10,11}
731 })
732
733 // Possible resource settings for PCI link D
734 Name (PRSD, ResourceTemplate ()
735 {
736 IRQ (Level, ActiveLow, Shared) {5,9,10,11}
737 })
738
739 // PCI bus 0
740 Device (PCI0)
741 {
742 Name (_HID, EisaId ("PNP0A03"))
743 Name (_ADR, 0x00) // address
744 Name (_BBN, 0x00) // base bus adddress
745 Name (_UID, 0x00)
746
747 // Method that returns routing table
748 Method (_PRT, 0, NotSerialized)
749 {
750 if (LEqual (LAnd (PICM, UIOA), Zero)) {
751 DBG ("RETURNING PIC\n")
752 Store (0x00, \_SB.PCI0.SBRG.APDE)
753 Store (0x00, \_SB.PCI0.SBRG.APAD)
754 Return (PR00)
755 }
756 else {
757 DBG ("RETURNING APIC\n")
758 Store (0xbe, \_SB.PCI0.SBRG.APDE)
759 Store (0xef, \_SB.PCI0.SBRG.APAD)
760 Return (PR01)
761 }
762 }
763
764 Device (SBRG)
765 {
766 // Address of the PIIX3 (device 1 function 0)
767 Name (_ADR, 0x00010000)
768 OperationRegion (PCIC, PCI_Config, 0x00, 0xff)
769
770 Field (PCIC, ByteAcc, NoLock, Preserve)
771 {
772 Offset (0xad),
773 APAD, 8,
774 Offset (0xde),
775 APDE, 8,
776 }
777
778 // Keyboard device
779 Device (PS2K)
780 {
781 Name (_HID, EisaId ("PNP0303"))
782 Method (_STA, 0, NotSerialized)
783 {
784 Return (0x0F)
785 }
786
787 Name (_CRS, ResourceTemplate ()
788 {
789 IO (Decode16, 0x0060, 0x0060, 0x00, 0x01)
790 IO (Decode16, 0x0064, 0x0064, 0x00, 0x01)
791 IRQNoFlags () {1}
792 })
793 }
794
795 // DMA Controller
796 Device (DMAC)
797 {
798 Name (_HID, EisaId ("PNP0200"))
799 Name (_CRS, ResourceTemplate ()
800 {
801 IO (Decode16, 0x0000, 0x0000, 0x01, 0x10)
802 IO (Decode16, 0x0080, 0x0080, 0x01, 0x10)
803 IO (Decode16, 0x00C0, 0x00C0, 0x01, 0x20)
804 DMA (Compatibility, BusMaster, Transfer8_16) {4}
805 })
806 }
807
808 // Floppy disk controller
809 Device (FDC0)
810 {
811 Name (_HID, EisaId ("PNP0700"))
812
813 Method (_STA, 0, NotSerialized)
814 {
815 Return (UFDC)
816 }
817
818 // Current resource settings
819 Name (_CRS, ResourceTemplate ()
820 {
821 IO (Decode16, 0x03F0, 0x03F0, 0x01, 0x06)
822 IO (Decode16, 0x03F7, 0x03F7, 0x01, 0x01)
823 IRQNoFlags () {6}
824 DMA (Compatibility, NotBusMaster, Transfer8) {2}
825 })
826
827 // Possible resource settings
828 Name (_PRS, ResourceTemplate ()
829 {
830 IO (Decode16, 0x03F0, 0x03F0, 0x01, 0x06)
831 IO (Decode16, 0x03F7, 0x03F7, 0x01, 0x01)
832 IRQNoFlags () {6}
833 DMA (Compatibility, NotBusMaster, Transfer8) {2}
834 })
835
836 }
837
838 // Mouse device
839 Device (PS2M)
840 {
841 Name (_HID, EisaId ("PNP0F03"))
842 Method (_STA, 0, NotSerialized)
843 {
844 Return (0x0F)
845 }
846
847 Name (_CRS, ResourceTemplate ()
848 {
849 IO (Decode16, 0x0060, 0x0060, 0x00, 0x01)
850 IO (Decode16, 0x0064, 0x0064, 0x00, 0x01)
851 IRQNoFlags () {12}
852 })
853 }
854
855 // Parallel port
856 Device (LPT)
857 {
858 Name (_HID, EisaId ("PNP0400"))
859 Method (_STA, 0, NotSerialized)
860 {
861 Return (0x0F)
862 }
863 Name (_CRS, ResourceTemplate ()
864 {
865 IO (Decode16, 0x0378, 0x0378, 0x08, 0x08)
866 IO (Decode16, 0x0778, 0x0778, 0x08, 0x08)
867 IRQNoFlags () {7}
868 })
869 }
870 }
871
872 // Control method battery
873 Device (BAT0)
874 {
875 Name (_HID, EisaId ("PNP0C0A"))
876 Name (_UID, 0x00)
877
878 Scope (\_GPE)
879 {
880 // GPE bit 0 handler
881 // GPE.0 must be set and SCI raised when
882 // battery info changed and _BIF must be
883 // re-evaluated
884 Method (_L00, 0, NotSerialized)
885 {
886 Notify (\_SB.PCI0.BAT0, 0x81)
887 }
888 }
889
890 OperationRegion (CBAT, SystemIO, 0x4040, 0x08)
891 Field (CBAT, DwordAcc, NoLock, Preserve)
892 {
893 IDX0, 32,
894 DAT0, 32,
895 }
896
897 IndexField (IDX0, DAT0, DwordAcc, NoLock, Preserve)
898 {
899 STAT, 32,
900 PRAT, 32,
901 RCAP, 32,
902 PVOL, 32,
903
904 UNIT, 32,
905 DCAP, 32,
906 LFCP, 32,
907 BTEC, 32,
908 DVOL, 32,
909 DWRN, 32,
910 DLOW, 32,
911 GRN1, 32,
912 GRN2, 32,
913
914 BSTA, 32,
915 APSR, 32,
916 }
917
918 Method (_STA, 0, NotSerialized)
919 {
920 return (BSTA)
921 }
922
923 Name (PBIF, Package ()
924 {
925 0x01, // Power unit, 1 - mA
926 0x7fffffff, // Design capacity
927 0x7fffffff, // Last full charge capacity
928 0x00, // Battery technology
929 0xffffffff, // Design voltage
930 0x00, // Design capacity of Warning
931 0x00, // Design capacity of Low
932 0x04, // Battery capacity granularity 1
933 0x04, // Battery capacity granularity 2
934 "1", // Model number
935 "0", // Serial number
936 "VBOX", // Battery type
937 "innotek" // OEM Information
938 })
939
940 Name (PBST, Package () {
941 0, // Battery state
942 0x7fffffff, // Battery present rate
943 0x7fffffff, // Battery remaining capacity
944 0x7fffffff // Battery present voltage
945 })
946
947 // Battery information
948 Method (_BIF, 0, NotSerialized)
949 {
950 Store (UNIT, Index (PBIF, 0,))
951 Store (DCAP, Index (PBIF, 1,))
952 Store (LFCP, Index (PBIF, 2,))
953 Store (BTEC, Index (PBIF, 3,))
954 Store (DVOL, Index (PBIF, 4,))
955 Store (DWRN, Index (PBIF, 5,))
956 Store (DLOW, Index (PBIF, 6,))
957 Store (GRN1, Index (PBIF, 7,))
958 Store (GRN2, Index (PBIF, 8,))
959
960 DBG ("_BIF:\n")
961 HEX4 (DerefOf (Index (PBIF, 0,)))
962 HEX4 (DerefOf (Index (PBIF, 1,)))
963 HEX4 (DerefOf (Index (PBIF, 2,)))
964 HEX4 (DerefOf (Index (PBIF, 3,)))
965 HEX4 (DerefOf (Index (PBIF, 4,)))
966 HEX4 (DerefOf (Index (PBIF, 5,)))
967 HEX4 (DerefOf (Index (PBIF, 6,)))
968 HEX4 (DerefOf (Index (PBIF, 7,)))
969 HEX4 (DerefOf (Index (PBIF, 8,)))
970
971 return (PBIF)
972 }
973
974 // Battery status
975 Method (_BST, 0, NotSerialized)
976 {
977 Store (STAT, Index (PBST, 0,))
978 Store (PRAT, Index (PBST, 1,))
979 Store (RCAP, Index (PBST, 2,))
980 Store (PVOL, Index (PBST, 3,))
981/*
982 DBG ("_BST:\n")
983 HEX4 (DerefOf (Index (PBST, 0,)))
984 HEX4 (DerefOf (Index (PBST, 1,)))
985 HEX4 (DerefOf (Index (PBST, 2,)))
986 HEX4 (DerefOf (Index (PBST, 3,)))
987*/
988 return (PBST)
989 }
990 }
991
992 Device (AC)
993 {
994 Name (_HID, "ACPI0003")
995 Name (_UID, 0x00)
996 Name (_PCL, Package (0x01)
997 {
998 \_SB
999 })
1000
1001 Method (_PSR, 0, NotSerialized)
1002 {
1003 // DBG ("_PSR:\n")
1004 // HEX4 (\_SB.PCI0.BAT0.APSR)
1005 return (\_SB.PCI0.BAT0.APSR)
1006 }
1007
1008 Method (_STA, 0, NotSerialized)
1009 {
1010 return (0x0f)
1011 }
1012 }
1013 }
1014 }
1015
1016 Scope (\_SB)
1017 {
1018 Scope (PCI0)
1019 {
1020 // PCI0 current resource settings
1021 Name (CRS, ResourceTemplate ()
1022 {
1023 WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
1024 0x0000,
1025 0x0000,
1026 0x00FF,
1027 0x0000,
1028 0x0100)
1029 IO (Decode16, 0x0CF8, 0x0CF8, 0x01, 0x08)
1030 WordIO (ResourceProducer, MinFixed, MaxFixed,
1031 PosDecode, EntireRange,
1032 0x0000,
1033 0x0000,
1034 0x0CF7,
1035 0x0000,
1036 0x0CF8)
1037 WordIO (ResourceProducer, MinFixed, MaxFixed,
1038 PosDecode, EntireRange,
1039 0x0000,
1040 0x0D00,
1041 0xFFFF,
1042 0x0000,
1043 0xF300)
1044
1045 /* Taken from ACPI faq (with some modifications) */
1046 DwordMemory( // descriptor for video RAM behind ISA bus
1047 ResourceProducer, // bit 0 of general flags is 0
1048 PosDecode,
1049 MinFixed, // Range is fixed
1050 MaxFixed, // Range is Fixed
1051 Cacheable,
1052 ReadWrite,
1053 0x00000000, // Granularity
1054 0x000a0000, // Min
1055 0x000bffff, // Max
1056 0x00000000, // Translation
1057 0x00020000 // Range Length
1058 )
1059
1060 DwordMemory( // Consumed-and-produced resource
1061 // (all of low memory space)
1062 ResourceProducer, // bit 0 of general flags is 0
1063 PosDecode, // positive Decode
1064 MinFixed, // Range is fixed
1065 MaxFixed, // Range is fixed
1066 Cacheable,
1067 ReadWrite,
1068 0x00000000, // Granularity
1069 0x00000000, // Min (calculated dynamically)
1070
1071 0xffdfffff, // Max = 4GB - 2MB
1072 0x00000000, // Translation
1073 0xdfdfffff, // Range Length (calculated
1074 // dynamically)
1075 , // Optional field left blank
1076 , // Optional field left blank
1077 MEM3 // Name declaration for this
1078 // descriptor
1079 )
1080 })
1081
1082// Name (TOM, ResourceTemplate () // Memory above 4GB (aka high), appended when needed.
1083// {
1084// QWORDMemory(
1085// ResourceProducer, // bit 0 of general flags is 0
1086// PosDecode, // positive Decode
1087// MinFixed, // Range is fixed
1088// MaxFixed, // Range is fixed
1089// Cacheable,
1090// ReadWrite,
1091// 0x0000000000000000, // _GRA: Granularity.
1092// 0 /*0x0000000100000000*/, // _MIN: Min address, 4GB.
1093// 0 /*0x00000fffffffffff*/, // _MAX: Max possible address, 16TB.
1094// 0x0000000000000000, // _TRA: Translation
1095// 0x0000000000000000, // _LEN: Range length (calculated dynamically)
1096// , // ResourceSourceIndex: Optional field left blank
1097// , // ResourceSource: Optional field left blank
1098// MEM4 // Name declaration for this descriptor.
1099// )
1100// })
1101
1102 Method (_CRS, 0, NotSerialized)
1103 {
1104 CreateDwordField (CRS, \_SB.PCI0.MEM3._MIN, RAMT)
1105 CreateDwordField (CRS, \_SB.PCI0.MEM3._LEN, RAMR)
1106// CreateQwordField (TOM, \_SB.PCI0.MEM4._LEN, TM4L)
1107// CreateQwordField (TOM, \_SB.PCI0.MEM4._LEN, TM4N)
1108// CreateQwordField (TOM, \_SB.PCI0.MEM4._LEN, TM4X)
1109
1110 Store (MEML, RAMT)
1111 Subtract (0xffe00000, RAMT, RAMR)
1112
1113// If (LNotEqual (MEMH, 0x00000000))
1114// {
1115// //
1116// // Update the TOM resource template and append it to CRS.
1117// // This way old < 4GB guest doesn't see anything different.
1118// // (MEMH is the memory above 4GB specified in 64KB units.)
1119// //
1120// // Note: ACPI v2 doesn't do 32-bit integers. IASL may fail on
1121// // seeing 64-bit constants and the code probably wont work.
1122// //
1123// Store (1, TM4N)
1124// ShiftLeft (TM4N, 32, TM4N)
1125//
1126// Store (0x00000fff, TM4X)
1127// ShiftLeft (TM4X, 32, TM4X)
1128// Or (TM4X, 0xffffffff, TM4X)
1129//
1130// Store (MEMH, TM4L)
1131// ShiftLeft (TM4L, 16, TM4L)
1132//
1133// ConcatenateResTemplate (CRS, TOM, Local2)
1134// Return (Local2)
1135// }
1136
1137 Return (CRS)
1138 }
1139 }
1140 }
1141
1142 Scope (\_SB)
1143 {
1144 // High Precision Event Timer
1145 Device(HPET) {
1146 Name(_HID, EISAID("PNP0103"))
1147 Name (_CID, 0x010CD041)
1148 Name(_UID, 0)
1149 Method (_STA, 0, NotSerialized) {
1150 Return(UHPT)
1151 }
1152 Name(_CRS, ResourceTemplate() {
1153 DWordMemory(
1154 ResourceConsumer, PosDecode, MinFixed, MaxFixed,
1155 NonCacheable, ReadWrite,
1156 0x00000000,
1157 0xFED00000,
1158 0xFED003FF,
1159 0x00000000,
1160 0x00000400 /* 1K memory: FED00000 - FED003FF */
1161 )
1162 })
1163 }
1164
1165 // Conditionally enabled, as lead to hang of Windows 7 and Vista guests
1166 Device (RTC) {
1167 Name (_HID, EisaId ("PNP0B00"))
1168 Name (_CRS, ResourceTemplate ()
1169 {
1170 IO (Decode16,
1171 0x0070, // Range Minimum
1172 0x0070, // Range Maximum
1173 0x01, // Alignment
1174 0x08, // Length
1175 )
1176 })
1177 Method (_STA, 0, NotSerialized)
1178 {
1179 Return (URTC)
1180 }
1181 }
1182
1183 // System Management Controller
1184 Device (SMC)
1185 {
1186 Name (_HID, EisaId ("APP0001"))
1187 Name (_CID, "smc-napa")
1188
1189 Method (_STA, 0, NotSerialized)
1190 {
1191 Return (USMC)
1192 }
1193 Name (_CRS, ResourceTemplate ()
1194 {
1195 IO (Decode16,
1196 0x0300, // Range Minimum
1197 0x0300, // Range Maximum
1198 0x01, // Alignment
1199 0x20, // Length
1200 )
1201 // This line seriously confuses Windows ACPI driver, so not even try to
1202 // enable SMC for Windows guests
1203 IRQNoFlags () {8}
1204 })
1205 }
1206
1207 // Fields within PIIX3 configuration[0x60..0x63] with
1208 // IRQ mappings
1209 Field (\_SB.PCI0.SBRG.PCIC, ByteAcc, NoLock, Preserve)
1210 {
1211 Offset (0x60),
1212 PIRA, 8,
1213 PIRB, 8,
1214 PIRC, 8,
1215 PIRD, 8
1216 }
1217
1218 Name (BUFA, ResourceTemplate ()
1219 {
1220 IRQ (Level, ActiveLow, Shared) {15}
1221 })
1222 CreateWordField (BUFA, 0x01, ICRS)
1223
1224 // Generic status of IRQ routing entry
1225 Method (LSTA, 1, NotSerialized)
1226 {
1227 And (Arg0, 0x80, Local0)
1228// DBG ("LSTA: ")
1229// HEX (Arg0)
1230 If (Local0)
1231 {
1232 Return (0x09)
1233 }
1234 Else
1235 {
1236 Return (0x0B)
1237 }
1238 }
1239
1240 // Generic "current resource settings" for routing entry
1241 Method (LCRS, 1, NotSerialized)
1242 {
1243 And (Arg0, 0x0F, Local0)
1244 ShiftLeft (0x01, Local0, ICRS)
1245// DBG ("LCRS: ")
1246// HEX (ICRS)
1247 Return (BUFA)
1248 }
1249
1250 // Generic "set resource settings" for routing entry
1251 Method (LSRS, 1, NotSerialized)
1252 {
1253 CreateWordField (Arg0, 0x01, ISRS)
1254 FindSetRightBit (ISRS, Local0)
1255 Return (Decrement (Local0))
1256 }
1257
1258 // Generic "disable" for routing entry
1259 Method (LDIS, 1, NotSerialized)
1260 {
1261 Return (Or (Arg0, 0x80))
1262 }
1263
1264 // Link A
1265 Device (LNKA)
1266 {
1267 Name (_HID, EisaId ("PNP0C0F"))
1268 Name (_UID, 0x01)
1269
1270 // Status
1271 Method (_STA, 0, NotSerialized)
1272 {
1273 DBG ("LNKA._STA\n")
1274 Return (LSTA (PIRA))
1275 }
1276
1277 // Possible resource settings
1278 Method (_PRS, 0, NotSerialized)
1279 {
1280 DBG ("LNKA._PRS\n")
1281 Return (PRSA)
1282 }
1283
1284 // Disable
1285 Method (_DIS, 0, NotSerialized)
1286 {
1287 DBG ("LNKA._DIS\n")
1288 Store (LDIS (PIRA), PIRA)
1289 }
1290
1291 // Current resource settings
1292 Method (_CRS, 0, NotSerialized)
1293 {
1294 DBG ("LNKA._CRS\n")
1295 Return (LCRS (PIRA))
1296 }
1297
1298 // Set resource settings
1299 Method (_SRS, 1, NotSerialized)
1300 {
1301 DBG ("LNKA._SRS: ")
1302 HEX (LSRS (Arg0))
1303 Store (LSRS (Arg0), PIRA)
1304 }
1305 }
1306
1307 // Link B
1308 Device (LNKB)
1309 {
1310 Name (_HID, EisaId ("PNP0C0F"))
1311 Name (_UID, 0x02)
1312 Method (_STA, 0, NotSerialized)
1313 {
1314 // DBG ("LNKB._STA\n")
1315 Return (LSTA (PIRB))
1316 }
1317
1318 Method (_PRS, 0, NotSerialized)
1319 {
1320 // DBG ("LNKB._PRS\n")
1321 Return (PRSB)
1322 }
1323
1324 Method (_DIS, 0, NotSerialized)
1325 {
1326 // DBG ("LNKB._DIS\n")
1327 Store (LDIS (PIRB), PIRB)
1328 }
1329
1330 Method (_CRS, 0, NotSerialized)
1331 {
1332 // DBG ("LNKB._CRS\n")
1333 Return (LCRS (PIRB))
1334 }
1335
1336 Method (_SRS, 1, NotSerialized)
1337 {
1338 DBG ("LNKB._SRS: ")
1339 HEX (LSRS (Arg0))
1340 Store (LSRS (Arg0), PIRB)
1341 }
1342 }
1343
1344 // Link C
1345 Device (LNKC)
1346 {
1347 Name (_HID, EisaId ("PNP0C0F"))
1348 Name (_UID, 0x03)
1349 Method (_STA, 0, NotSerialized)
1350 {
1351 // DBG ("LNKC._STA\n")
1352 Return (LSTA (PIRC))
1353 }
1354
1355 Method (_PRS, 0, NotSerialized)
1356 {
1357 // DBG ("LNKC._PRS\n")
1358 Return (PRSC)
1359 }
1360
1361 Method (_DIS, 0, NotSerialized)
1362 {
1363 // DBG ("LNKC._DIS\n")
1364 Store (LDIS (PIRC), PIRC)
1365 }
1366
1367 Method (_CRS, 0, NotSerialized)
1368 {
1369 // DBG ("LNKC._CRS\n")
1370 Return (LCRS (PIRC))
1371 }
1372
1373 Method (_SRS, 1, NotSerialized)
1374 {
1375 DBG ("LNKC._SRS: ")
1376 HEX (LSRS (Arg0))
1377 Store (LSRS (Arg0), PIRC)
1378 }
1379 }
1380
1381 // Link D
1382 Device (LNKD)
1383 {
1384 Name (_HID, EisaId ("PNP0C0F"))
1385 Name (_UID, 0x04)
1386 Method (_STA, 0, NotSerialized)
1387 {
1388 // DBG ("LNKD._STA\n")
1389 Return (LSTA (PIRD))
1390 }
1391
1392 Method (_PRS, 0, NotSerialized)
1393 {
1394 // DBG ("LNKD._PRS\n")
1395 Return (PRSD)
1396 }
1397
1398 Method (_DIS, 0, NotSerialized)
1399 {
1400 // DBG ("LNKD._DIS\n")
1401 Store (LDIS (PIRA), PIRD)
1402 }
1403
1404 Method (_CRS, 0, NotSerialized)
1405 {
1406 // DBG ("LNKD._CRS\n")
1407 Return (LCRS (PIRD))
1408 }
1409
1410 Method (_SRS, 1, NotSerialized)
1411 {
1412 DBG ("LNKD._SRS: ")
1413 HEX (LSRS (Arg0))
1414 Store (LSRS (Arg0), PIRD)
1415 }
1416 }
1417 }
1418
1419 // Sx states
1420 Name (_S0, Package (2) {
1421 0x00,
1422 0x00,
1423 })
1424
1425 Name (_S5, Package (2) {
1426 0x05,
1427 0x05,
1428 })
1429
1430 Method (_PTS, 1, NotSerialized)
1431 {
1432 DBG ("Prepare to sleep: ")
1433 HEX (Arg0)
1434 }
1435}
1436
1437/*
1438 * Local Variables:
1439 * comment-start: "//"
1440 * End:
1441 */
Note: See TracBrowser for help on using the repository browser.

© 2023 Oracle
ContactPrivacy policyTerms of Use