VirtualBox

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

最後變更 在這個檔案從25164是 25164,由 vboxsync 提交於 15 年 前

ACPI: moved RTC and SMC to southbridge, and enabled RTC unconditionally (watch for regressions!)

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

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