VirtualBox

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

Last change on this file since 23973 was 23473, checked in by vboxsync, 15 years ago

OSE header fixes

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