VirtualBox

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

Last change on this file since 25536 was 25328, checked in by vboxsync, 15 years ago

vbox.dsl: Avoid conflicting PS/2 kbd/mouse port assignment; fixes S9/S10GA keyboard support.

  • Property svn:eol-style set to LF
  • Property svn:keywords set to Id
File size: 49.7 KB
Line 
1// $Id: vbox.dsl 25328 2009-12-11 13:49:48Z 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 IRQNoFlags () {12}
853 })
854 }
855
856 // Parallel port
857 Device (LPT)
858 {
859 Name (_HID, EisaId ("PNP0400"))
860 Method (_STA, 0, NotSerialized)
861 {
862 Return (0x0F)
863 }
864 Name (_CRS, ResourceTemplate ()
865 {
866 IO (Decode16, 0x0378, 0x0378, 0x08, 0x08)
867 IO (Decode16, 0x0778, 0x0778, 0x08, 0x08)
868 IRQNoFlags () {7}
869 })
870 }
871
872 // RTC and CMOS
873 Device (RTC)
874 {
875 Name (_HID, EisaId ("PNP0B00"))
876 Name (_CRS, ResourceTemplate ()
877 {
878 IO (Decode16,
879 0x0070, // Range Minimum
880 0x0070, // Range Maximum
881 0x01, // Alignment
882 0x02, // Length
883 )
884 })
885 Method (_STA, 0, NotSerialized)
886 {
887 Return (0x0f)
888 }
889 }
890
891 // System Management Controller
892 Device (SMC)
893 {
894 Name (_HID, EisaId ("APP0001"))
895 Name (_CID, "smc-napa")
896
897 Method (_STA, 0, NotSerialized)
898 {
899 Return (USMC)
900 }
901 Name (_CRS, ResourceTemplate ()
902 {
903 IO (Decode16,
904 0x0300, // Range Minimum
905 0x0300, // Range Maximum
906 0x01, // Alignment
907 0x20, // Length
908 )
909 // This line seriously confuses Windows ACPI driver, so not even try to
910 // enable SMC for Windows guests
911 IRQNoFlags () {8}
912 })
913 }
914 }
915
916 // Control method battery
917 Device (BAT0)
918 {
919 Name (_HID, EisaId ("PNP0C0A"))
920 Name (_UID, 0x00)
921
922 Scope (\_GPE)
923 {
924 // GPE bit 0 handler
925 // GPE.0 must be set and SCI raised when
926 // battery info changed and _BIF must be
927 // re-evaluated
928 Method (_L00, 0, NotSerialized)
929 {
930 Notify (\_SB.PCI0.BAT0, 0x81)
931 }
932 }
933
934 OperationRegion (CBAT, SystemIO, 0x4040, 0x08)
935 Field (CBAT, DwordAcc, NoLock, Preserve)
936 {
937 IDX0, 32,
938 DAT0, 32,
939 }
940
941 IndexField (IDX0, DAT0, DwordAcc, NoLock, Preserve)
942 {
943 STAT, 32,
944 PRAT, 32,
945 RCAP, 32,
946 PVOL, 32,
947
948 UNIT, 32,
949 DCAP, 32,
950 LFCP, 32,
951 BTEC, 32,
952 DVOL, 32,
953 DWRN, 32,
954 DLOW, 32,
955 GRN1, 32,
956 GRN2, 32,
957
958 BSTA, 32,
959 APSR, 32,
960 }
961
962 Method (_STA, 0, NotSerialized)
963 {
964 return (BSTA)
965 }
966
967 Name (PBIF, Package ()
968 {
969 0x01, // Power unit, 1 - mA
970 0x7fffffff, // Design capacity
971 0x7fffffff, // Last full charge capacity
972 0x00, // Battery technology
973 0xffffffff, // Design voltage
974 0x00, // Design capacity of Warning
975 0x00, // Design capacity of Low
976 0x04, // Battery capacity granularity 1
977 0x04, // Battery capacity granularity 2
978 "1", // Model number
979 "0", // Serial number
980 "VBOX", // Battery type
981 "innotek" // OEM Information
982 })
983
984 Name (PBST, Package () {
985 0, // Battery state
986 0x7fffffff, // Battery present rate
987 0x7fffffff, // Battery remaining capacity
988 0x7fffffff // Battery present voltage
989 })
990
991 // Battery information
992 Method (_BIF, 0, NotSerialized)
993 {
994 Store (UNIT, Index (PBIF, 0,))
995 Store (DCAP, Index (PBIF, 1,))
996 Store (LFCP, Index (PBIF, 2,))
997 Store (BTEC, Index (PBIF, 3,))
998 Store (DVOL, Index (PBIF, 4,))
999 Store (DWRN, Index (PBIF, 5,))
1000 Store (DLOW, Index (PBIF, 6,))
1001 Store (GRN1, Index (PBIF, 7,))
1002 Store (GRN2, Index (PBIF, 8,))
1003
1004 DBG ("_BIF:\n")
1005 HEX4 (DerefOf (Index (PBIF, 0,)))
1006 HEX4 (DerefOf (Index (PBIF, 1,)))
1007 HEX4 (DerefOf (Index (PBIF, 2,)))
1008 HEX4 (DerefOf (Index (PBIF, 3,)))
1009 HEX4 (DerefOf (Index (PBIF, 4,)))
1010 HEX4 (DerefOf (Index (PBIF, 5,)))
1011 HEX4 (DerefOf (Index (PBIF, 6,)))
1012 HEX4 (DerefOf (Index (PBIF, 7,)))
1013 HEX4 (DerefOf (Index (PBIF, 8,)))
1014
1015 return (PBIF)
1016 }
1017
1018 // Battery status
1019 Method (_BST, 0, NotSerialized)
1020 {
1021 Store (STAT, Index (PBST, 0,))
1022 Store (PRAT, Index (PBST, 1,))
1023 Store (RCAP, Index (PBST, 2,))
1024 Store (PVOL, Index (PBST, 3,))
1025/*
1026 DBG ("_BST:\n")
1027 HEX4 (DerefOf (Index (PBST, 0,)))
1028 HEX4 (DerefOf (Index (PBST, 1,)))
1029 HEX4 (DerefOf (Index (PBST, 2,)))
1030 HEX4 (DerefOf (Index (PBST, 3,)))
1031*/
1032 return (PBST)
1033 }
1034 }
1035
1036 Device (AC)
1037 {
1038 Name (_HID, "ACPI0003")
1039 Name (_UID, 0x00)
1040 Name (_PCL, Package (0x01)
1041 {
1042 \_SB
1043 })
1044
1045 Method (_PSR, 0, NotSerialized)
1046 {
1047 // DBG ("_PSR:\n")
1048 // HEX4 (\_SB.PCI0.BAT0.APSR)
1049 return (\_SB.PCI0.BAT0.APSR)
1050 }
1051
1052 Method (_STA, 0, NotSerialized)
1053 {
1054 return (0x0f)
1055 }
1056 }
1057 }
1058 }
1059
1060 Scope (\_SB)
1061 {
1062 Scope (PCI0)
1063 {
1064 // PCI0 current resource settings
1065 Name (CRS, ResourceTemplate ()
1066 {
1067 WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
1068 0x0000,
1069 0x0000,
1070 0x00FF,
1071 0x0000,
1072 0x0100)
1073 IO (Decode16, 0x0CF8, 0x0CF8, 0x01, 0x08)
1074 WordIO (ResourceProducer, MinFixed, MaxFixed,
1075 PosDecode, EntireRange,
1076 0x0000,
1077 0x0000,
1078 0x0CF7,
1079 0x0000,
1080 0x0CF8)
1081 WordIO (ResourceProducer, MinFixed, MaxFixed,
1082 PosDecode, EntireRange,
1083 0x0000,
1084 0x0D00,
1085 0xFFFF,
1086 0x0000,
1087 0xF300)
1088
1089 /* Taken from ACPI faq (with some modifications) */
1090 DwordMemory( // descriptor for video RAM behind ISA bus
1091 ResourceProducer, // bit 0 of general flags is 0
1092 PosDecode,
1093 MinFixed, // Range is fixed
1094 MaxFixed, // Range is Fixed
1095 Cacheable,
1096 ReadWrite,
1097 0x00000000, // Granularity
1098 0x000a0000, // Min
1099 0x000bffff, // Max
1100 0x00000000, // Translation
1101 0x00020000 // Range Length
1102 )
1103
1104 DwordMemory( // Consumed-and-produced resource
1105 // (all of low memory space)
1106 ResourceProducer, // bit 0 of general flags is 0
1107 PosDecode, // positive Decode
1108 MinFixed, // Range is fixed
1109 MaxFixed, // Range is fixed
1110 Cacheable,
1111 ReadWrite,
1112 0x00000000, // Granularity
1113 0x00000000, // Min (calculated dynamically)
1114
1115 0xffdfffff, // Max = 4GB - 2MB
1116 0x00000000, // Translation
1117 0xdfdfffff, // Range Length (calculated
1118 // dynamically)
1119 , // Optional field left blank
1120 , // Optional field left blank
1121 MEM3 // Name declaration for this
1122 // descriptor
1123 )
1124 })
1125
1126// Name (TOM, ResourceTemplate () // Memory above 4GB (aka high), appended when needed.
1127// {
1128// QWORDMemory(
1129// ResourceProducer, // bit 0 of general flags is 0
1130// PosDecode, // positive Decode
1131// MinFixed, // Range is fixed
1132// MaxFixed, // Range is fixed
1133// Cacheable,
1134// ReadWrite,
1135// 0x0000000000000000, // _GRA: Granularity.
1136// 0 /*0x0000000100000000*/, // _MIN: Min address, 4GB.
1137// 0 /*0x00000fffffffffff*/, // _MAX: Max possible address, 16TB.
1138// 0x0000000000000000, // _TRA: Translation
1139// 0x0000000000000000, // _LEN: Range length (calculated dynamically)
1140// , // ResourceSourceIndex: Optional field left blank
1141// , // ResourceSource: Optional field left blank
1142// MEM4 // Name declaration for this descriptor.
1143// )
1144// })
1145
1146 Method (_CRS, 0, NotSerialized)
1147 {
1148 CreateDwordField (CRS, \_SB.PCI0.MEM3._MIN, RAMT)
1149 CreateDwordField (CRS, \_SB.PCI0.MEM3._LEN, RAMR)
1150// CreateQwordField (TOM, \_SB.PCI0.MEM4._LEN, TM4L)
1151// CreateQwordField (TOM, \_SB.PCI0.MEM4._LEN, TM4N)
1152// CreateQwordField (TOM, \_SB.PCI0.MEM4._LEN, TM4X)
1153
1154 Store (MEML, RAMT)
1155 Subtract (0xffe00000, RAMT, RAMR)
1156
1157// If (LNotEqual (MEMH, 0x00000000))
1158// {
1159// //
1160// // Update the TOM resource template and append it to CRS.
1161// // This way old < 4GB guest doesn't see anything different.
1162// // (MEMH is the memory above 4GB specified in 64KB units.)
1163// //
1164// // Note: ACPI v2 doesn't do 32-bit integers. IASL may fail on
1165// // seeing 64-bit constants and the code probably wont work.
1166// //
1167// Store (1, TM4N)
1168// ShiftLeft (TM4N, 32, TM4N)
1169//
1170// Store (0x00000fff, TM4X)
1171// ShiftLeft (TM4X, 32, TM4X)
1172// Or (TM4X, 0xffffffff, TM4X)
1173//
1174// Store (MEMH, TM4L)
1175// ShiftLeft (TM4L, 16, TM4L)
1176//
1177// ConcatenateResTemplate (CRS, TOM, Local2)
1178// Return (Local2)
1179// }
1180
1181 Return (CRS)
1182 }
1183 }
1184 }
1185
1186 Scope (\_SB)
1187 {
1188 // High Precision Event Timer
1189 Device(HPET) {
1190 Name(_HID, EISAID("PNP0103"))
1191 Name (_CID, 0x010CD041)
1192 Name(_UID, 0)
1193 Method (_STA, 0, NotSerialized) {
1194 Return(UHPT)
1195 }
1196 Name(_CRS, ResourceTemplate() {
1197 DWordMemory(
1198 ResourceConsumer, PosDecode, MinFixed, MaxFixed,
1199 NonCacheable, ReadWrite,
1200 0x00000000,
1201 0xFED00000,
1202 0xFED003FF,
1203 0x00000000,
1204 0x00000400 /* 1K memory: FED00000 - FED003FF */
1205 )
1206 })
1207 }
1208
1209 // Fields within PIIX3 configuration[0x60..0x63] with
1210 // IRQ mappings
1211 Field (\_SB.PCI0.SBRG.PCIC, ByteAcc, NoLock, Preserve)
1212 {
1213 Offset (0x60),
1214 PIRA, 8,
1215 PIRB, 8,
1216 PIRC, 8,
1217 PIRD, 8
1218 }
1219
1220 Name (BUFA, ResourceTemplate ()
1221 {
1222 IRQ (Level, ActiveLow, Shared) {15}
1223 })
1224 CreateWordField (BUFA, 0x01, ICRS)
1225
1226 // Generic status of IRQ routing entry
1227 Method (LSTA, 1, NotSerialized)
1228 {
1229 And (Arg0, 0x80, Local0)
1230// DBG ("LSTA: ")
1231// HEX (Arg0)
1232 If (Local0)
1233 {
1234 Return (0x09)
1235 }
1236 Else
1237 {
1238 Return (0x0B)
1239 }
1240 }
1241
1242 // Generic "current resource settings" for routing entry
1243 Method (LCRS, 1, NotSerialized)
1244 {
1245 And (Arg0, 0x0F, Local0)
1246 ShiftLeft (0x01, Local0, ICRS)
1247// DBG ("LCRS: ")
1248// HEX (ICRS)
1249 Return (BUFA)
1250 }
1251
1252 // Generic "set resource settings" for routing entry
1253 Method (LSRS, 1, NotSerialized)
1254 {
1255 CreateWordField (Arg0, 0x01, ISRS)
1256 FindSetRightBit (ISRS, Local0)
1257 Return (Decrement (Local0))
1258 }
1259
1260 // Generic "disable" for routing entry
1261 Method (LDIS, 1, NotSerialized)
1262 {
1263 Return (Or (Arg0, 0x80))
1264 }
1265
1266 // Link A
1267 Device (LNKA)
1268 {
1269 Name (_HID, EisaId ("PNP0C0F"))
1270 Name (_UID, 0x01)
1271
1272 // Status
1273 Method (_STA, 0, NotSerialized)
1274 {
1275 DBG ("LNKA._STA\n")
1276 Return (LSTA (PIRA))
1277 }
1278
1279 // Possible resource settings
1280 Method (_PRS, 0, NotSerialized)
1281 {
1282 DBG ("LNKA._PRS\n")
1283 Return (PRSA)
1284 }
1285
1286 // Disable
1287 Method (_DIS, 0, NotSerialized)
1288 {
1289 DBG ("LNKA._DIS\n")
1290 Store (LDIS (PIRA), PIRA)
1291 }
1292
1293 // Current resource settings
1294 Method (_CRS, 0, NotSerialized)
1295 {
1296 DBG ("LNKA._CRS\n")
1297 Return (LCRS (PIRA))
1298 }
1299
1300 // Set resource settings
1301 Method (_SRS, 1, NotSerialized)
1302 {
1303 DBG ("LNKA._SRS: ")
1304 HEX (LSRS (Arg0))
1305 Store (LSRS (Arg0), PIRA)
1306 }
1307 }
1308
1309 // Link B
1310 Device (LNKB)
1311 {
1312 Name (_HID, EisaId ("PNP0C0F"))
1313 Name (_UID, 0x02)
1314 Method (_STA, 0, NotSerialized)
1315 {
1316 // DBG ("LNKB._STA\n")
1317 Return (LSTA (PIRB))
1318 }
1319
1320 Method (_PRS, 0, NotSerialized)
1321 {
1322 // DBG ("LNKB._PRS\n")
1323 Return (PRSB)
1324 }
1325
1326 Method (_DIS, 0, NotSerialized)
1327 {
1328 // DBG ("LNKB._DIS\n")
1329 Store (LDIS (PIRB), PIRB)
1330 }
1331
1332 Method (_CRS, 0, NotSerialized)
1333 {
1334 // DBG ("LNKB._CRS\n")
1335 Return (LCRS (PIRB))
1336 }
1337
1338 Method (_SRS, 1, NotSerialized)
1339 {
1340 DBG ("LNKB._SRS: ")
1341 HEX (LSRS (Arg0))
1342 Store (LSRS (Arg0), PIRB)
1343 }
1344 }
1345
1346 // Link C
1347 Device (LNKC)
1348 {
1349 Name (_HID, EisaId ("PNP0C0F"))
1350 Name (_UID, 0x03)
1351 Method (_STA, 0, NotSerialized)
1352 {
1353 // DBG ("LNKC._STA\n")
1354 Return (LSTA (PIRC))
1355 }
1356
1357 Method (_PRS, 0, NotSerialized)
1358 {
1359 // DBG ("LNKC._PRS\n")
1360 Return (PRSC)
1361 }
1362
1363 Method (_DIS, 0, NotSerialized)
1364 {
1365 // DBG ("LNKC._DIS\n")
1366 Store (LDIS (PIRC), PIRC)
1367 }
1368
1369 Method (_CRS, 0, NotSerialized)
1370 {
1371 // DBG ("LNKC._CRS\n")
1372 Return (LCRS (PIRC))
1373 }
1374
1375 Method (_SRS, 1, NotSerialized)
1376 {
1377 DBG ("LNKC._SRS: ")
1378 HEX (LSRS (Arg0))
1379 Store (LSRS (Arg0), PIRC)
1380 }
1381 }
1382
1383 // Link D
1384 Device (LNKD)
1385 {
1386 Name (_HID, EisaId ("PNP0C0F"))
1387 Name (_UID, 0x04)
1388 Method (_STA, 0, NotSerialized)
1389 {
1390 // DBG ("LNKD._STA\n")
1391 Return (LSTA (PIRD))
1392 }
1393
1394 Method (_PRS, 0, NotSerialized)
1395 {
1396 // DBG ("LNKD._PRS\n")
1397 Return (PRSD)
1398 }
1399
1400 Method (_DIS, 0, NotSerialized)
1401 {
1402 // DBG ("LNKD._DIS\n")
1403 Store (LDIS (PIRA), PIRD)
1404 }
1405
1406 Method (_CRS, 0, NotSerialized)
1407 {
1408 // DBG ("LNKD._CRS\n")
1409 Return (LCRS (PIRD))
1410 }
1411
1412 Method (_SRS, 1, NotSerialized)
1413 {
1414 DBG ("LNKD._SRS: ")
1415 HEX (LSRS (Arg0))
1416 Store (LSRS (Arg0), PIRD)
1417 }
1418 }
1419 }
1420
1421 // Sx states
1422 Name (_S0, Package (2) {
1423 0x00,
1424 0x00,
1425 })
1426
1427 Name (_S5, Package (2) {
1428 0x05,
1429 0x05,
1430 })
1431
1432 Method (_PTS, 1, NotSerialized)
1433 {
1434 DBG ("Prepare to sleep: ")
1435 HEX (Arg0)
1436 }
1437}
1438
1439/*
1440 * Local Variables:
1441 * comment-start: "//"
1442 * End:
1443 */
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