VirtualBox

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

Last change on this file since 95664 was 93115, checked in by vboxsync, 3 years ago

scm --update-copyright-year

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id Revision
File size: 67.3 KB
Line 
1/* $Id: vbox.dsl 93115 2022-01-01 11:31:46Z vboxsync $ */
2/** @file
3 * VirtualBox ACPI
4 */
5
6/*
7 * Copyright (C) 2006-2022 Oracle Corporation
8 *
9 * This file is part of VirtualBox Open Source Edition (OSE), as
10 * available from http://www.virtualbox.org. This file is free software;
11 * you can redistribute it and/or modify it under the terms of the GNU
12 * General Public License (GPL) as published by the Free Software
13 * Foundation, in version 2 as it comes in the "COPYING" file of the
14 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16 */
17
18DefinitionBlock ("DSDT.aml", "DSDT", 2, "VBOX ", "VBOXBIOS", 2)
19{
20 // Declare debugging ports withing SystemIO
21 OperationRegion(DBG0, SystemIO, 0x3000, 4)
22
23 // Writes to this field Will dump hex char
24 Field (DBG0, ByteAcc, NoLock, Preserve)
25 {
26 DHE1, 8,
27 }
28
29 // Writes to this field Will dump hex word
30 Field (DBG0, WordAcc, NoLock, Preserve)
31 {
32 DHE2, 16,
33 }
34
35 // Writes to this field Will dump hex double word
36 Field (DBG0, DWordAcc, NoLock, Preserve)
37 {
38 DHE4, 32,
39 }
40
41 // Writes to this field will dump ascii char
42 Field (DBG0, ByteAcc, NoLock, Preserve)
43 {
44 Offset (1),
45 DCHR, 8
46 }
47
48 // Shortcuts
49 Method(HEX, 1)
50 {
51 Store (Arg0, DHE1)
52 }
53
54 Method(HEX2, 1)
55 {
56 Store (Arg0, DHE2)
57 }
58
59 Method(HEX4, 1)
60 {
61 Store (Arg0, DHE4)
62 }
63
64 // Code from Microsoft sample
65 // http://www.microsoft.com/whdc/system/pnppwr/powermgmt/_OSI-method.mspx
66
67 //
68 // SLEN(Str) - Returns the length of Str (excluding NULL).
69 //
70 Method(SLEN, 1)
71 {
72 //
73 // Note: The caller must make sure that the argument is a string object.
74 //
75 Store(Arg0, Local0)
76 Return(Sizeof(Local0))
77 }
78
79
80 //
81 // S2BF(Str) - Convert a string object into a buffer object.
82 //
83 Method(S2BF, 1, Serialized)
84 {
85 //
86 // Note: The caller must make sure that the argument is a string object.
87 //
88 // Local0 contains length of string + NULL.
89 //
90 Store(Arg0, Local0)
91 Add(SLEN(Local0), One, Local0)
92 //
93 // Convert the string object into a buffer object.
94 //
95 Name(BUFF, Buffer(Local0) {})
96 Store(Arg0, BUFF)
97 Return(BUFF)
98 }
99
100 //
101 // MIN(Int1, Int2) - Returns the minimum of Int1 or Int2.
102 //
103 //
104 Method(MIN, 2)
105 {
106 //
107 // Note: The caller must make sure that both arguments are integer objects.
108 //
109 If (LLess(Arg0, Arg1))
110 {
111 Return(Arg0)
112 }
113 Else
114 {
115 Return(Arg1)
116 }
117 }
118
119 //
120 // SCMP(Str1, Str2) - Compare Str1 and Str2.
121 // Returns One if Str1 > Str2
122 // Returns Zero if Str1 == Str2
123 // Returns Ones if Str1 < Str2
124 //
125 Method(SCMP, 2)
126 {
127 //
128 // Note: The caller must make sure that both arguments are string objects.
129 //
130 // Local0 is a buffer of Str1.
131 // Local1 is a buffer of Str2.
132 // Local2 is the indexed byte of Str1.
133 // Local3 is the indexed byte of Str2.
134 // Local4 is the index to both Str1 and Str2.
135 // Local5 is the length of Str1.
136 // Local6 is the length of Str2.
137 // Local7 is the minimum of Str1 or Str2 length.
138 //
139
140 Store(Arg0, Local0)
141 Store(S2BF(Local0), Local0)
142
143 Store(S2BF(Arg1), Local1)
144 Store(Zero, Local4)
145
146 Store(SLEN(Arg0), Local5)
147 Store(SLEN(Arg1), Local6)
148 Store(MIN(Local5, Local6), Local7)
149
150 While (LLess(Local4, Local7))
151 {
152 Store(Derefof(Index(Local0, Local4)), Local2)
153 Store(Derefof(Index(Local1, Local4)), Local3)
154 If (LGreater(Local2, Local3))
155 {
156 Return(One)
157 }
158 Else
159 {
160 If (LLess(Local2, Local3))
161 {
162 Return(Ones)
163 }
164 }
165
166 Increment(Local4)
167 }
168
169 If (LLess(Local4, Local5))
170 {
171 Return(One)
172 }
173 Else
174 {
175 If (LLess(Local4, Local6))
176 {
177 Return(Ones)
178 }
179 Else
180 {
181 Return(Zero)
182 }
183 }
184 }
185
186 // Return one if strings match, zero otherwise. Wrapper around SCMP
187 Method (MTCH, 2)
188 {
189 Store(Arg0, Local0)
190 Store(Arg1, Local1)
191 Store(SCMP(Local0, Local1), Local2)
192 Return(LNot(Local2))
193 }
194
195 // Convert ASCII string to buffer and store it's contents (char by
196 // char) into DCHR (thus possibly writing the string to console)
197 Method (\DBG, 1, NotSerialized)
198 {
199 Store(Arg0, Local0)
200 Store(S2BF (Local0), Local1)
201 Store(SizeOf (Local1), Local0)
202 Decrement (Local0)
203 Store(Zero, Local2)
204 While (Local0)
205 {
206 Decrement (Local0)
207 Store (DerefOf (Index (Local1, Local2)), DCHR)
208 Increment (Local2)
209 }
210 }
211
212 // Microsoft Windows version indicator
213 Name(MSWV, Ones)
214
215 //
216 // Return Windows version. Detect non-Microsoft OSes.
217 //
218 // 0 : Not Windows OS
219 // 2 : Windows Me
220 // 3 : Windows 2000 (NT pre-XP)
221 // 4 : Windows XP
222 // 5 : Windows Server 2003
223 // 6 : Windows Vista
224 // 7 : Windows 7
225 // 8 : Windows 8
226 // 9 : Windows 8.1
227 // 10 : Windows 10
228 Method(MSWN, 0, NotSerialized)
229 {
230 If (LNotEqual(MSWV, Ones))
231 {
232 Return(MSWV)
233 }
234
235 Store(0x00, MSWV)
236 DBG("_OS: ")
237 DBG(_OS)
238 DBG("\n")
239
240 // Does OS provide the _OSI method?
241 If (CondRefOf(_OSI))
242 {
243 DBG("_OSI exists\n")
244 // OS returns non-zero value in response to _OSI query if it
245 // supports the interface. Newer Windows releases support older
246 // versions of the ACPI interface.
247 If (_OSI("Windows 2001"))
248 {
249 Store(4, MSWV) // XP
250 }
251 If (_OSI("Windows 2001.1"))
252 {
253 Store(5, MSWV) // Server 2003
254 }
255 If (_OSI("Windows 2006"))
256 {
257 Store(6, MSWV) // Vista
258 }
259 If (_OSI("Windows 2009"))
260 {
261 Store(7, MSWV) // Windows 7
262 }
263 If (_OSI("Windows 2012"))
264 {
265 Store(8, MSWV) // Windows 8
266 }
267 If (_OSI("Windows 2013"))
268 {
269 Store(9, MSWV) // Windows 8.1
270 }
271 If (_OSI("Windows 2015"))
272 {
273 Store(10, MSWV) // Windows 10
274 }
275
276 // This must come last and is a trap. No version of Windows
277 // reports this!
278 If (_OSI("Windows 2006 SP2"))
279 {
280 DBG("Windows 2006 SP2 supported\n")
281 // Not a Microsoft OS
282 Store(0, MSWV)
283 }
284 }
285 Else
286 {
287 // No _OSI, could be older NT or Windows 9x
288 If (MTCH(_OS, "Microsoft Windows NT"))
289 {
290 Store(3, MSWV)
291 }
292 If (MTCH(_OS, "Microsoft WindowsME: Millennium Edition"))
293 {
294 Store(2, MSWV)
295 }
296 }
297
298 // Does OS provide the _REV method?
299 If (CondRefOf(_REV))
300 {
301 DBG("_REV: ")
302 HEX4(_REV)
303
304 // Defeat most Linuxes and other non-Microsoft OSes. Microsoft Windows
305 // up to Server 2003 reports ACPI 1.0 support, Vista up to Windows 10
306 // reports ACPI 2.0 support. Anything pretending to be a Windows OS
307 // with higher ACPI revision support is a fake.
308 If (LAnd(LGreater(MSWV, 0),LGreater(_REV, 2)))
309 {
310 If (LLess(MSWV,8))
311 {
312 DBG("ACPI rev mismatch, not a Microsoft OS\n")
313 Store(0, MSWV)
314 }
315 }
316 }
317
318 DBG("Determined MSWV: ")
319 HEX4(MSWV)
320
321 Return(MSWV)
322 }
323
324 Name(PICM, 0)
325 Method(_PIC, 1)
326 {
327 DBG ("Pic mode: ")
328 HEX4 (Arg0)
329 Store (Arg0, PICM)
330 }
331
332 // Declare indexed registers used for reading configuration information
333 OperationRegion (SYSI, SystemIO, 0x4048, 0x08)
334 Field (SYSI, DwordAcc, NoLock, Preserve)
335 {
336 IDX0, 32,
337 DAT0, 32,
338 }
339
340 IndexField (IDX0, DAT0, DwordAcc, NoLock, Preserve)
341 {
342 MEML, 32, // low-memory length (64KB units)
343 UIOA, 32, // if IO APIC enabled
344 UHPT, 32, // if HPET enabled
345 USMC, 32, // if SMC enabled
346 UFDC, 32, // if floppy controller enabled
347 SL2B, 32, // Serial2 base IO address
348 SL2I, 32, // Serial2 IRQ
349 SL3B, 32, // Serial3 base IO address
350 SL3I, 32, // Serial3 IRQ
351 PMNN, 32, // start of 64-bit prefetch window (64KB units)
352 URTC, 32, // if RTC shown in tables
353 CPUL, 32, // flag of CPU lock state
354 CPUC, 32, // CPU to check lock status
355 CPET, 32, // type of CPU hotplug event
356 CPEV, 32, // id of CPU event targets
357 NICA, 32, // Primary NIC PCI address
358 HDAA, 32, // HDA PCI address
359 PWRS, 32, // power states
360 IOCA, 32, // southbridge IO controller PCI address
361 HBCA, 32, // host bus controller address
362 PCIB, 32, // PCI MCFG base start
363 PCIL, 32, // PCI MCFG length
364 SL0B, 32, // Serial0 base IO address
365 SL0I, 32, // Serial0 IRQ
366 SL1B, 32, // Serial1 base IO address
367 SL1I, 32, // Serial1 IRQ
368 PP0B, 32, // Parallel0 base IO address
369 PP0I, 32, // Parallel0 IRQ
370 PP1B, 32, // Parallel1 base IO address
371 PP1I, 32, // Parallel1 IRQ
372 PMNX, 32, // limit of 64-bit prefetch window (64KB units)
373 NVMA, 32, // Primary NVMe controller PCI address
374 IOMA, 32, // AMD IOMMU
375 SIOA, 32, // Southbridge IO APIC (when AMD IOMMU is present)
376 Offset (0x200),
377 VAIN, 32,
378 }
379
380 Scope (\_SB)
381 {
382 Method (_INI, 0, NotSerialized)
383 {
384 Store (0xbadc0de, VAIN)
385 DBG ("MEML: ")
386 HEX4 (MEML)
387 DBG ("UIOA: ")
388 HEX4 (UIOA)
389 DBG ("UHPT: ")
390 HEX4 (UHPT)
391 DBG ("USMC: ")
392 HEX4 (USMC)
393 DBG ("UFDC: ")
394 HEX4 (UFDC)
395 DBG ("PMNN: ")
396 HEX4 (PMNN)
397 }
398
399 // PCI PIC IRQ Routing table
400 // Must match pci.c:pci_slot_get_pirq
401 Name (PR00, Package ()
402 {
403/** @todo add devices 0/1 to be complete */
404 Package (0x04) {0x0002FFFF, 0x00, LNKB, 0x00,},
405 Package (0x04) {0x0002FFFF, 0x01, LNKC, 0x00,},
406 Package (0x04) {0x0002FFFF, 0x02, LNKD, 0x00,},
407 Package (0x04) {0x0002FFFF, 0x03, LNKA, 0x00,},
408
409 Package (0x04) {0x0003FFFF, 0x00, LNKC, 0x00,},
410 Package (0x04) {0x0003FFFF, 0x01, LNKD, 0x00,},
411 Package (0x04) {0x0003FFFF, 0x02, LNKA, 0x00,},
412 Package (0x04) {0x0003FFFF, 0x03, LNKB, 0x00,},
413
414 Package (0x04) {0x0004FFFF, 0x00, LNKD, 0x00,},
415 Package (0x04) {0x0004FFFF, 0x01, LNKA, 0x00,},
416 Package (0x04) {0x0004FFFF, 0x02, LNKB, 0x00,},
417 Package (0x04) {0x0004FFFF, 0x03, LNKC, 0x00,},
418
419 Package (0x04) {0x0005FFFF, 0x00, LNKA, 0x00,},
420 Package (0x04) {0x0005FFFF, 0x01, LNKB, 0x00,},
421 Package (0x04) {0x0005FFFF, 0x02, LNKC, 0x00,},
422 Package (0x04) {0x0005FFFF, 0x03, LNKD, 0x00,},
423
424 Package (0x04) {0x0006FFFF, 0x00, LNKB, 0x00,},
425 Package (0x04) {0x0006FFFF, 0x01, LNKC, 0x00,},
426 Package (0x04) {0x0006FFFF, 0x02, LNKD, 0x00,},
427 Package (0x04) {0x0006FFFF, 0x03, LNKA, 0x00,},
428
429 Package (0x04) {0x0007FFFF, 0x00, LNKC, 0x00,},
430 Package (0x04) {0x0007FFFF, 0x01, LNKD, 0x00,},
431 Package (0x04) {0x0007FFFF, 0x02, LNKA, 0x00,},
432 Package (0x04) {0x0007FFFF, 0x03, LNKB, 0x00,},
433
434 Package (0x04) {0x0008FFFF, 0x00, LNKD, 0x00,},
435 Package (0x04) {0x0008FFFF, 0x01, LNKA, 0x00,},
436 Package (0x04) {0x0008FFFF, 0x02, LNKB, 0x00,},
437 Package (0x04) {0x0008FFFF, 0x03, LNKC, 0x00,},
438
439 Package (0x04) {0x0009FFFF, 0x00, LNKA, 0x00,},
440 Package (0x04) {0x0009FFFF, 0x01, LNKB, 0x00,},
441 Package (0x04) {0x0009FFFF, 0x02, LNKC, 0x00,},
442 Package (0x04) {0x0009FFFF, 0x03, LNKD, 0x00,},
443
444 Package (0x04) {0x000AFFFF, 0x00, LNKB, 0x00,},
445 Package (0x04) {0x000AFFFF, 0x01, LNKC, 0x00,},
446 Package (0x04) {0x000AFFFF, 0x02, LNKD, 0x00,},
447 Package (0x04) {0x000AFFFF, 0x03, LNKA, 0x00,},
448
449 Package (0x04) {0x000BFFFF, 0x00, LNKC, 0x00,},
450 Package (0x04) {0x000BFFFF, 0x01, LNKD, 0x00,},
451 Package (0x04) {0x000BFFFF, 0x02, LNKA, 0x00,},
452 Package (0x04) {0x000BFFFF, 0x03, LNKB, 0x00,},
453
454 Package (0x04) {0x000CFFFF, 0x00, LNKD, 0x00,},
455 Package (0x04) {0x000CFFFF, 0x01, LNKA, 0x00,},
456 Package (0x04) {0x000CFFFF, 0x02, LNKB, 0x00,},
457 Package (0x04) {0x000CFFFF, 0x03, LNKC, 0x00,},
458
459 Package (0x04) {0x000DFFFF, 0x00, LNKA, 0x00,},
460 Package (0x04) {0x000DFFFF, 0x01, LNKB, 0x00,},
461 Package (0x04) {0x000DFFFF, 0x02, LNKC, 0x00,},
462 Package (0x04) {0x000DFFFF, 0x03, LNKD, 0x00,},
463
464 Package (0x04) {0x000EFFFF, 0x00, LNKB, 0x00,},
465 Package (0x04) {0x000EFFFF, 0x01, LNKC, 0x00,},
466 Package (0x04) {0x000EFFFF, 0x02, LNKD, 0x00,},
467 Package (0x04) {0x000EFFFF, 0x03, LNKA, 0x00,},
468
469 Package (0x04) {0x000FFFFF, 0x00, LNKC, 0x00,},
470 Package (0x04) {0x000FFFFF, 0x01, LNKD, 0x00,},
471 Package (0x04) {0x000FFFFF, 0x02, LNKA, 0x00,},
472 Package (0x04) {0x000FFFFF, 0x03, LNKB, 0x00,},
473
474 Package (0x04) {0x0010FFFF, 0x00, LNKD, 0x00,},
475 Package (0x04) {0x0010FFFF, 0x01, LNKA, 0x00,},
476 Package (0x04) {0x0010FFFF, 0x02, LNKB, 0x00,},
477 Package (0x04) {0x0010FFFF, 0x03, LNKC, 0x00,},
478
479 Package (0x04) {0x0011FFFF, 0x00, LNKA, 0x00,},
480 Package (0x04) {0x0011FFFF, 0x01, LNKB, 0x00,},
481 Package (0x04) {0x0011FFFF, 0x02, LNKC, 0x00,},
482 Package (0x04) {0x0011FFFF, 0x03, LNKD, 0x00,},
483
484 Package (0x04) {0x0012FFFF, 0x00, LNKB, 0x00,},
485 Package (0x04) {0x0012FFFF, 0x01, LNKC, 0x00,},
486 Package (0x04) {0x0012FFFF, 0x02, LNKD, 0x00,},
487 Package (0x04) {0x0012FFFF, 0x03, LNKA, 0x00,},
488
489 Package (0x04) {0x0013FFFF, 0x00, LNKC, 0x00,},
490 Package (0x04) {0x0013FFFF, 0x01, LNKD, 0x00,},
491 Package (0x04) {0x0013FFFF, 0x02, LNKA, 0x00,},
492 Package (0x04) {0x0013FFFF, 0x03, LNKB, 0x00,},
493
494 Package (0x04) {0x0014FFFF, 0x00, LNKD, 0x00,},
495 Package (0x04) {0x0014FFFF, 0x01, LNKA, 0x00,},
496 Package (0x04) {0x0014FFFF, 0x02, LNKB, 0x00,},
497 Package (0x04) {0x0014FFFF, 0x03, LNKC, 0x00,},
498
499 Package (0x04) {0x0015FFFF, 0x00, LNKA, 0x00,},
500 Package (0x04) {0x0015FFFF, 0x01, LNKB, 0x00,},
501 Package (0x04) {0x0015FFFF, 0x02, LNKC, 0x00,},
502 Package (0x04) {0x0015FFFF, 0x03, LNKD, 0x00,},
503
504 Package (0x04) {0x0016FFFF, 0x00, LNKB, 0x00,},
505 Package (0x04) {0x0016FFFF, 0x01, LNKC, 0x00,},
506 Package (0x04) {0x0016FFFF, 0x02, LNKD, 0x00,},
507 Package (0x04) {0x0016FFFF, 0x03, LNKA, 0x00,},
508
509 Package (0x04) {0x0017FFFF, 0x00, LNKC, 0x00,},
510 Package (0x04) {0x0017FFFF, 0x01, LNKD, 0x00,},
511 Package (0x04) {0x0017FFFF, 0x02, LNKA, 0x00,},
512 Package (0x04) {0x0017FFFF, 0x03, LNKB, 0x00,},
513
514 Package (0x04) {0x0018FFFF, 0x00, LNKD, 0x00,},
515 Package (0x04) {0x0018FFFF, 0x01, LNKA, 0x00,},
516 Package (0x04) {0x0018FFFF, 0x02, LNKB, 0x00,},
517 Package (0x04) {0x0018FFFF, 0x03, LNKC, 0x00,},
518
519 Package (0x04) {0x0019FFFF, 0x00, LNKA, 0x00,},
520 Package (0x04) {0x0019FFFF, 0x01, LNKB, 0x00,},
521 Package (0x04) {0x0019FFFF, 0x02, LNKC, 0x00,},
522 Package (0x04) {0x0019FFFF, 0x03, LNKD, 0x00,},
523
524 Package (0x04) {0x001AFFFF, 0x00, LNKB, 0x00,},
525 Package (0x04) {0x001AFFFF, 0x01, LNKC, 0x00,},
526 Package (0x04) {0x001AFFFF, 0x02, LNKD, 0x00,},
527 Package (0x04) {0x001AFFFF, 0x03, LNKA, 0x00,},
528
529 Package (0x04) {0x001BFFFF, 0x00, LNKC, 0x00,},
530 Package (0x04) {0x001BFFFF, 0x01, LNKD, 0x00,},
531 Package (0x04) {0x001BFFFF, 0x02, LNKA, 0x00,},
532 Package (0x04) {0x001BFFFF, 0x03, LNKB, 0x00,},
533
534 Package (0x04) {0x001CFFFF, 0x00, LNKD, 0x00,},
535 Package (0x04) {0x001CFFFF, 0x01, LNKA, 0x00,},
536 Package (0x04) {0x001CFFFF, 0x02, LNKB, 0x00,},
537 Package (0x04) {0x001CFFFF, 0x03, LNKC, 0x00,},
538
539 Package (0x04) {0x001DFFFF, 0x00, LNKA, 0x00,},
540 Package (0x04) {0x001DFFFF, 0x01, LNKB, 0x00,},
541 Package (0x04) {0x001DFFFF, 0x02, LNKC, 0x00,},
542 Package (0x04) {0x001DFFFF, 0x03, LNKD, 0x00,},
543
544 Package (0x04) {0x001EFFFF, 0x00, LNKB, 0x00,},
545 Package (0x04) {0x001EFFFF, 0x01, LNKC, 0x00,},
546 Package (0x04) {0x001EFFFF, 0x02, LNKD, 0x00,},
547 Package (0x04) {0x001EFFFF, 0x03, LNKA, 0x00,},
548
549 Package (0x04) {0x001FFFFF, 0x00, LNKC, 0x00,},
550 Package (0x04) {0x001FFFFF, 0x01, LNKD, 0x00,},
551 Package (0x04) {0x001FFFFF, 0x02, LNKA, 0x00,},
552 Package (0x04) {0x001FFFFF, 0x03, LNKB, 0x00,}
553 })
554
555 // PCI I/O APIC IRQ Routing table
556 // Must match pci.c:pci_slot_get_acpi_pirq
557 Name (PR01, Package ()
558 {
559/** @todo add devices 0/1 to be complete */
560 Package (0x04) {0x0002FFFF, 0x00, 0x00, 0x12,},
561 Package (0x04) {0x0002FFFF, 0x01, 0x00, 0x13,},
562 Package (0x04) {0x0002FFFF, 0x02, 0x00, 0x14,},
563 Package (0x04) {0x0002FFFF, 0x03, 0x00, 0x15,},
564
565 Package (0x04) {0x0003FFFF, 0x00, 0x00, 0x13,},
566 Package (0x04) {0x0003FFFF, 0x01, 0x00, 0x14,},
567 Package (0x04) {0x0003FFFF, 0x02, 0x00, 0x15,},
568 Package (0x04) {0x0003FFFF, 0x03, 0x00, 0x16,},
569
570 Package (0x04) {0x0004FFFF, 0x00, 0x00, 0x14,},
571 Package (0x04) {0x0004FFFF, 0x01, 0x00, 0x15,},
572 Package (0x04) {0x0004FFFF, 0x02, 0x00, 0x16,},
573 Package (0x04) {0x0004FFFF, 0x03, 0x00, 0x17,},
574
575 Package (0x04) {0x0005FFFF, 0x00, 0x00, 0x15,},
576 Package (0x04) {0x0005FFFF, 0x01, 0x00, 0x16,},
577 Package (0x04) {0x0005FFFF, 0x02, 0x00, 0x17,},
578 Package (0x04) {0x0005FFFF, 0x03, 0x00, 0x10,},
579
580 Package (0x04) {0x0006FFFF, 0x00, 0x00, 0x16,},
581 Package (0x04) {0x0006FFFF, 0x01, 0x00, 0x17,},
582 Package (0x04) {0x0006FFFF, 0x02, 0x00, 0x10,},
583 Package (0x04) {0x0006FFFF, 0x03, 0x00, 0x11,},
584
585 Package (0x04) {0x0007FFFF, 0x00, 0x00, 0x17,},
586 Package (0x04) {0x0007FFFF, 0x01, 0x00, 0x10,},
587 Package (0x04) {0x0007FFFF, 0x02, 0x00, 0x11,},
588 Package (0x04) {0x0007FFFF, 0x03, 0x00, 0x12,},
589
590 Package (0x04) {0x0008FFFF, 0x00, 0x00, 0x10,},
591 Package (0x04) {0x0008FFFF, 0x01, 0x00, 0x11,},
592 Package (0x04) {0x0008FFFF, 0x02, 0x00, 0x12,},
593 Package (0x04) {0x0008FFFF, 0x03, 0x00, 0x13,},
594
595 Package (0x04) {0x0009FFFF, 0x00, 0x00, 0x11,},
596 Package (0x04) {0x0009FFFF, 0x01, 0x00, 0x12,},
597 Package (0x04) {0x0009FFFF, 0x02, 0x00, 0x13,},
598 Package (0x04) {0x0009FFFF, 0x03, 0x00, 0x14,},
599
600 Package (0x04) {0x000AFFFF, 0x00, 0x00, 0x12,},
601 Package (0x04) {0x000AFFFF, 0x01, 0x00, 0x13,},
602 Package (0x04) {0x000AFFFF, 0x02, 0x00, 0x14,},
603 Package (0x04) {0x000AFFFF, 0x03, 0x00, 0x15,},
604
605 Package (0x04) {0x000BFFFF, 0x00, 0x00, 0x13,},
606 Package (0x04) {0x000BFFFF, 0x01, 0x00, 0x14,},
607 Package (0x04) {0x000BFFFF, 0x02, 0x00, 0x15,},
608 Package (0x04) {0x000BFFFF, 0x03, 0x00, 0x16,},
609
610 Package (0x04) {0x000CFFFF, 0x00, 0x00, 0x14,},
611 Package (0x04) {0x000CFFFF, 0x01, 0x00, 0x15,},
612 Package (0x04) {0x000CFFFF, 0x02, 0x00, 0x16,},
613 Package (0x04) {0x000CFFFF, 0x03, 0x00, 0x17,},
614
615 Package (0x04) {0x000DFFFF, 0x00, 0x00, 0x15,},
616 Package (0x04) {0x000DFFFF, 0x01, 0x00, 0x16,},
617 Package (0x04) {0x000DFFFF, 0x02, 0x00, 0x17,},
618 Package (0x04) {0x000DFFFF, 0x03, 0x00, 0x10,},
619
620 Package (0x04) {0x000EFFFF, 0x00, 0x00, 0x16,},
621 Package (0x04) {0x000EFFFF, 0x01, 0x00, 0x17,},
622 Package (0x04) {0x000EFFFF, 0x02, 0x00, 0x10,},
623 Package (0x04) {0x000EFFFF, 0x03, 0x00, 0x11,},
624
625 Package (0x04) {0x000FFFFF, 0x00, 0x00, 0x17,},
626 Package (0x04) {0x000FFFFF, 0x01, 0x00, 0x10,},
627 Package (0x04) {0x000FFFFF, 0x02, 0x00, 0x11,},
628 Package (0x04) {0x000FFFFF, 0x03, 0x00, 0x12,},
629
630 Package (0x04) {0x0010FFFF, 0x00, 0x00, 0x10,},
631 Package (0x04) {0x0010FFFF, 0x01, 0x00, 0x11,},
632 Package (0x04) {0x0010FFFF, 0x02, 0x00, 0x12,},
633 Package (0x04) {0x0010FFFF, 0x03, 0x00, 0x13,},
634
635 Package (0x04) {0x0011FFFF, 0x00, 0x00, 0x11,},
636 Package (0x04) {0x0011FFFF, 0x01, 0x00, 0x12,},
637 Package (0x04) {0x0011FFFF, 0x02, 0x00, 0x13,},
638 Package (0x04) {0x0011FFFF, 0x03, 0x00, 0x14,},
639
640 Package (0x04) {0x0012FFFF, 0x00, 0x00, 0x12,},
641 Package (0x04) {0x0012FFFF, 0x01, 0x00, 0x13,},
642 Package (0x04) {0x0012FFFF, 0x02, 0x00, 0x14,},
643 Package (0x04) {0x0012FFFF, 0x03, 0x00, 0x15,},
644
645 Package (0x04) {0x0013FFFF, 0x00, 0x00, 0x13,},
646 Package (0x04) {0x0013FFFF, 0x01, 0x00, 0x14,},
647 Package (0x04) {0x0013FFFF, 0x02, 0x00, 0x15,},
648 Package (0x04) {0x0013FFFF, 0x03, 0x00, 0x16,},
649
650 Package (0x04) {0x0014FFFF, 0x00, 0x00, 0x14,},
651 Package (0x04) {0x0014FFFF, 0x01, 0x00, 0x15,},
652 Package (0x04) {0x0014FFFF, 0x02, 0x00, 0x16,},
653 Package (0x04) {0x0014FFFF, 0x03, 0x00, 0x17,},
654
655 Package (0x04) {0x0015FFFF, 0x00, 0x00, 0x15,},
656 Package (0x04) {0x0015FFFF, 0x01, 0x00, 0x16,},
657 Package (0x04) {0x0015FFFF, 0x02, 0x00, 0x17,},
658 Package (0x04) {0x0015FFFF, 0x03, 0x00, 0x10,},
659
660 Package (0x04) {0x0016FFFF, 0x00, 0x00, 0x16,},
661 Package (0x04) {0x0016FFFF, 0x01, 0x00, 0x17,},
662 Package (0x04) {0x0016FFFF, 0x02, 0x00, 0x10,},
663 Package (0x04) {0x0016FFFF, 0x03, 0x00, 0x11,},
664
665 Package (0x04) {0x0017FFFF, 0x00, 0x00, 0x17,},
666 Package (0x04) {0x0017FFFF, 0x01, 0x00, 0x10,},
667 Package (0x04) {0x0017FFFF, 0x02, 0x00, 0x11,},
668 Package (0x04) {0x0017FFFF, 0x03, 0x00, 0x12,},
669
670 Package (0x04) {0x0018FFFF, 0x00, 0x00, 0x10,},
671 Package (0x04) {0x0018FFFF, 0x01, 0x00, 0x11,},
672 Package (0x04) {0x0018FFFF, 0x02, 0x00, 0x12,},
673 Package (0x04) {0x0018FFFF, 0x03, 0x00, 0x13,},
674
675 Package (0x04) {0x0019FFFF, 0x00, 0x00, 0x11,},
676 Package (0x04) {0x0019FFFF, 0x01, 0x00, 0x12,},
677 Package (0x04) {0x0019FFFF, 0x02, 0x00, 0x13,},
678 Package (0x04) {0x0019FFFF, 0x03, 0x00, 0x14,},
679
680 Package (0x04) {0x001AFFFF, 0x00, 0x00, 0x12,},
681 Package (0x04) {0x001AFFFF, 0x01, 0x00, 0x13,},
682 Package (0x04) {0x001AFFFF, 0x02, 0x00, 0x14,},
683 Package (0x04) {0x001AFFFF, 0x03, 0x00, 0x15,},
684
685 Package (0x04) {0x001BFFFF, 0x00, 0x00, 0x13,},
686 Package (0x04) {0x001BFFFF, 0x01, 0x00, 0x14,},
687 Package (0x04) {0x001BFFFF, 0x02, 0x00, 0x15,},
688 Package (0x04) {0x001BFFFF, 0x03, 0x00, 0x16,},
689
690 Package (0x04) {0x001CFFFF, 0x00, 0x00, 0x14,},
691 Package (0x04) {0x001CFFFF, 0x01, 0x00, 0x15,},
692 Package (0x04) {0x001CFFFF, 0x02, 0x00, 0x16,},
693 Package (0x04) {0x001CFFFF, 0x03, 0x00, 0x17,},
694
695 Package (0x04) {0x001DFFFF, 0x00, 0x00, 0x15,},
696 Package (0x04) {0x001DFFFF, 0x01, 0x00, 0x16,},
697 Package (0x04) {0x001DFFFF, 0x02, 0x00, 0x17,},
698 Package (0x04) {0x001DFFFF, 0x03, 0x00, 0x10,},
699
700 Package (0x04) {0x001EFFFF, 0x00, 0x00, 0x16,},
701 Package (0x04) {0x001EFFFF, 0x01, 0x00, 0x17,},
702 Package (0x04) {0x001EFFFF, 0x02, 0x00, 0x10,},
703 Package (0x04) {0x001EFFFF, 0x03, 0x00, 0x11,},
704
705 Package (0x04) {0x001FFFFF, 0x00, 0x00, 0x17,},
706 Package (0x04) {0x001FFFFF, 0x01, 0x00, 0x10,},
707 Package (0x04) {0x001FFFFF, 0x02, 0x00, 0x11,},
708 Package (0x04) {0x001FFFFF, 0x03, 0x00, 0x12,}
709 })
710
711 // Possible resource settings for PCI link A
712 Name (PRSA, ResourceTemplate ()
713 {
714 IRQ (Level, ActiveLow, Shared) {5,9,10,11}
715 })
716
717 // Possible resource settings for PCI link B
718 Name (PRSB, ResourceTemplate ()
719 {
720 IRQ (Level, ActiveLow, Shared) {5,9,10,11}
721 })
722
723 // Possible resource settings for PCI link C
724 Name (PRSC, ResourceTemplate ()
725 {
726 IRQ (Level, ActiveLow, Shared) {5,9,10,11}
727 })
728
729 // Possible resource settings for PCI link D
730 Name (PRSD, ResourceTemplate ()
731 {
732 IRQ (Level, ActiveLow, Shared) {5,9,10,11}
733 })
734
735 // PCI bus 0
736 Device (PCI0)
737 {
738
739 Name (_HID, EisaId ("PNP0A03")) // PCI bus PNP id
740 Method(_ADR, 0, NotSerialized) // PCI address
741 {
742 Return (HBCA)
743 }
744 Name (_BBN, 0x00) // base bus address (bus number)
745 Name (_UID, 0x00)
746
747 // Method that returns routing table; also opens PCI to I/O APIC
748 // interrupt routing backdoor by writing 0xdead 0xbeef signature
749 // to ISA bridge config space. See DevPCI.cpp/pciSetIrqInternal().
750 Method (_PRT, 0, NotSerialized)
751 {
752 if (LEqual (LAnd (PICM, UIOA), Zero)) {
753 DBG ("RETURNING PIC\n")
754 Store (0x00, \_SB.PCI0.SBRG.APDE)
755 Store (0x00, \_SB.PCI0.SBRG.APAD)
756 Return (PR00)
757 }
758 else {
759 DBG ("RETURNING APIC\n")
760 Store (0xbe, \_SB.PCI0.SBRG.APDE)
761 Store (0xef, \_SB.PCI0.SBRG.APAD)
762 Return (PR01)
763 }
764 }
765
766 Device (SBRG)
767 {
768 // Address of the southbridge device (PIIX or ICH9)
769 Method(_ADR, 0, NotSerialized)
770 {
771 Return (IOCA)
772 }
773 OperationRegion (PCIC, PCI_Config, 0x00, 0xff)
774
775 Field (PCIC, ByteAcc, NoLock, Preserve)
776 {
777 Offset (0xad),
778 APAD, 8,
779 Offset (0xde),
780 APDE, 8,
781 }
782
783 // PCI MCFG MMIO ranges
784 Device (^PCIE)
785 {
786 Name (_HID, EisaId ("PNP0C02"))
787 Name (_UID, 0x11)
788 Name (CRS, ResourceTemplate ()
789 {
790 Memory32Fixed (ReadOnly,
791 0xdc000000, // Address Base
792 0x4000000, // Address Length
793 _Y13)
794 })
795 Method (_CRS, 0, NotSerialized)
796 {
797 CreateDWordField (CRS, \_SB.PCI0.PCIE._Y13._BAS, BAS1)
798 CreateDWordField (CRS, \_SB.PCI0.PCIE._Y13._LEN, LEN1)
799 Store (PCIB, BAS1)
800 Store (PCIL, LEN1)
801 Return (CRS)
802 }
803 Method (_STA, 0, NotSerialized)
804 {
805 if (LEqual (PCIB, Zero)) {
806 Return (0x00)
807 }
808 else {
809 Return (0x0F)
810 }
811 }
812 }
813
814 // Keyboard device
815 Device (PS2K)
816 {
817 Name (_HID, EisaId ("PNP0303"))
818 Method (_STA, 0, NotSerialized)
819 {
820 Return (0x0F)
821 }
822
823 Name (_CRS, ResourceTemplate ()
824 {
825 IO (Decode16, 0x0060, 0x0060, 0x00, 0x01)
826 IO (Decode16, 0x0064, 0x0064, 0x00, 0x01)
827 IRQNoFlags () {1}
828 })
829 }
830
831 // DMA Controller
832 Device (DMAC)
833 {
834 Name (_HID, EisaId ("PNP0200"))
835 Name (_CRS, ResourceTemplate ()
836 {
837 IO (Decode16, 0x0000, 0x0000, 0x01, 0x10)
838 IO (Decode16, 0x0080, 0x0080, 0x01, 0x10)
839 IO (Decode16, 0x00C0, 0x00C0, 0x01, 0x20)
840 DMA (Compatibility, BusMaster, Transfer8_16) {4}
841 })
842 }
843
844 // Floppy disk controller
845 Device (FDC0)
846 {
847 Name (_HID, EisaId ("PNP0700"))
848
849 Method (_STA, 0, NotSerialized)
850 {
851 Return (UFDC)
852 }
853
854 // Current resource settings
855 Name (_CRS, ResourceTemplate ()
856 {
857 IO (Decode16, 0x03F0, 0x03F0, 0x01, 0x06)
858 IO (Decode16, 0x03F7, 0x03F7, 0x01, 0x01)
859 IRQNoFlags () {6}
860 DMA (Compatibility, NotBusMaster, Transfer8) {2}
861 })
862
863 // Possible resource settings
864 Name (_PRS, ResourceTemplate ()
865 {
866 IO (Decode16, 0x03F0, 0x03F0, 0x01, 0x06)
867 IO (Decode16, 0x03F7, 0x03F7, 0x01, 0x01)
868 IRQNoFlags () {6}
869 DMA (Compatibility, NotBusMaster, Transfer8) {2}
870 })
871
872 }
873
874 // Mouse device
875 Device (PS2M)
876 {
877 Name (_HID, EisaId ("PNP0F03"))
878 Method (_STA, 0, NotSerialized)
879 {
880 Return (0x0F)
881 }
882
883 Name (_CRS, ResourceTemplate ()
884 {
885 IRQNoFlags () {12}
886 })
887 }
888
889 // Parallel port 0
890 Device (^LPT0)
891 {
892 Name (_HID, EisaId ("PNP0400"))
893 Name (_UID, 0x01)
894 Method (_STA, 0, NotSerialized)
895 {
896 If (LEqual (PP0B, Zero))
897 {
898 Return (0x00)
899 }
900 Else
901 {
902 Return (0x0F)
903 }
904 }
905 Name (CRS, ResourceTemplate ()
906 {
907 IO (Decode16, 0x0378, 0x0378, 0x08, 0x08, _Y18)
908 IRQNoFlags (_Y19) {7}
909 })
910 Method (_CRS, 0, NotSerialized)
911 {
912 CreateWordField (CRS, \_SB.PCI0.LPT0._Y18._MIN, PMI0)
913 CreateWordField (CRS, \_SB.PCI0.LPT0._Y18._MAX, PMA0)
914 CreateWordField (CRS, \_SB.PCI0.LPT0._Y18._ALN, PAL0)
915 CreateWordField (CRS, \_SB.PCI0.LPT0._Y18._LEN, PLE0)
916 CreateWordField (CRS, \_SB.PCI0.LPT0._Y19._INT, PIQ0)
917 Store (PP0B, PMI0)
918 Store (PP0B, PMA0)
919 If (LEqual (0x3BC, PP0B)) {
920 Store (0x04, PAL0)
921 Store (0x04, PLE0)
922 }
923 ShiftLeft (0x01, PP0I, PIQ0)
924 Return (CRS)
925 }
926 }
927
928 // Parallel port 1
929 Device (^LPT1)
930 {
931 Name (_HID, EisaId ("PNP0400"))
932 Name (_UID, 0x02)
933 Method (_STA, 0, NotSerialized)
934 {
935 If (LEqual (PP1B, Zero))
936 {
937 Return (0x00)
938 }
939 Else
940 {
941 Return (0x0F)
942 }
943 }
944 Name (CRS, ResourceTemplate ()
945 {
946 IO (Decode16, 0x0278, 0x0278, 0x08, 0x08, _Y20)
947 IRQNoFlags (_Y21) {5}
948 })
949 Method (_CRS, 0, NotSerialized)
950 {
951 CreateWordField (CRS, \_SB.PCI0.LPT1._Y20._MIN, PMI1)
952 CreateWordField (CRS, \_SB.PCI0.LPT1._Y20._MAX, PMA1)
953 CreateWordField (CRS, \_SB.PCI0.LPT1._Y20._ALN, PAL1)
954 CreateWordField (CRS, \_SB.PCI0.LPT1._Y20._LEN, PLE1)
955 CreateWordField (CRS, \_SB.PCI0.LPT1._Y21._INT, PIQ1)
956 Store (PP1B, PMI1)
957 Store (PP1B, PMA1)
958 If (LEqual (0x3BC, PP1B)) {
959 Store (0x04, PAL1)
960 Store (0x04, PLE1)
961 }
962 ShiftLeft (0x01, PP1I, PIQ1)
963 Return (CRS)
964 }
965 }
966
967
968 // Serial port 0
969 Device (^SRL0)
970 {
971 Name (_HID, EisaId ("PNP0501"))
972 Name (_UID, 0x01)
973 Method (_STA, 0, NotSerialized)
974 {
975 If (LEqual (SL0B, Zero))
976 {
977 Return (0x00)
978 }
979 Else
980 {
981 Return (0x0F)
982 }
983 }
984 Name (CRS, ResourceTemplate ()
985 {
986 IO (Decode16, 0x03F8, 0x03F8, 0x01, 0x08, _Y14)
987 IRQNoFlags (_Y15) {4}
988 })
989 Method (_CRS, 0, NotSerialized)
990 {
991 CreateWordField (CRS, \_SB.PCI0.SRL0._Y14._MIN, MIN0)
992 CreateWordField (CRS, \_SB.PCI0.SRL0._Y14._MAX, MAX0)
993 CreateWordField (CRS, \_SB.PCI0.SRL0._Y15._INT, IRQ0)
994 Store (SL0B, MIN0)
995 Store (SL0B, MAX0)
996 ShiftLeft (0x01, SL0I, IRQ0)
997 Return (CRS)
998 }
999 }
1000
1001 // Serial port 1
1002 Device (^SRL1)
1003 {
1004 Name (_HID, EisaId ("PNP0501"))
1005 Name (_UID, 0x02)
1006 Method (_STA, 0, NotSerialized)
1007 {
1008 If (LEqual (SL1B, Zero))
1009 {
1010 Return (0x00)
1011 }
1012 Else
1013 {
1014 Return (0x0F)
1015 }
1016 }
1017 Name (CRS, ResourceTemplate ()
1018 {
1019 IO (Decode16, 0x02F8, 0x02F8, 0x01, 0x08, _Y16)
1020 IRQNoFlags (_Y17) {3}
1021 })
1022 Method (_CRS, 0, NotSerialized)
1023 {
1024 CreateWordField (CRS, \_SB.PCI0.SRL1._Y16._MIN, MIN1)
1025 CreateWordField (CRS, \_SB.PCI0.SRL1._Y16._MAX, MAX1)
1026 CreateWordField (CRS, \_SB.PCI0.SRL1._Y17._INT, IRQ1)
1027 Store (SL1B, MIN1)
1028 Store (SL1B, MAX1)
1029 ShiftLeft (0x01, SL1I, IRQ1)
1030 Return (CRS)
1031 }
1032 }
1033
1034 // Serial port 2
1035 Device (^SRL2)
1036 {
1037 Name (_HID, EisaId ("PNP0501"))
1038 Name (_UID, 0x03)
1039 Method (_STA, 0, NotSerialized)
1040 {
1041 If (LEqual (SL2B, Zero))
1042 {
1043 Return (0x00)
1044 }
1045 Else
1046 {
1047 Return (0x0F)
1048 }
1049 }
1050 Name (CRS, ResourceTemplate ()
1051 {
1052 IO (Decode16, 0x03E8, 0x03E8, 0x01, 0x08, _Y22)
1053 IRQNoFlags (_Y23) {3}
1054 })
1055 Method (_CRS, 0, NotSerialized)
1056 {
1057 CreateWordField (CRS, \_SB.PCI0.SRL2._Y22._MIN, MIN1)
1058 CreateWordField (CRS, \_SB.PCI0.SRL2._Y22._MAX, MAX1)
1059 CreateWordField (CRS, \_SB.PCI0.SRL2._Y23._INT, IRQ1)
1060 Store (SL2B, MIN1)
1061 Store (SL2B, MAX1)
1062 ShiftLeft (0x01, SL2I, IRQ1)
1063 Return (CRS)
1064 }
1065 }
1066
1067 // Serial port 3
1068 Device (^SRL3)
1069 {
1070 Name (_HID, EisaId ("PNP0501"))
1071 Name (_UID, 0x04)
1072 Method (_STA, 0, NotSerialized)
1073 {
1074 If (LEqual (SL3B, Zero))
1075 {
1076 Return (0x00)
1077 }
1078 Else
1079 {
1080 Return (0x0F)
1081 }
1082 }
1083 Name (CRS, ResourceTemplate ()
1084 {
1085 IO (Decode16, 0x02E8, 0x02E8, 0x01, 0x08, _Y24)
1086 IRQNoFlags (_Y25) {3}
1087 })
1088 Method (_CRS, 0, NotSerialized)
1089 {
1090 CreateWordField (CRS, \_SB.PCI0.SRL3._Y24._MIN, MIN1)
1091 CreateWordField (CRS, \_SB.PCI0.SRL3._Y24._MAX, MAX1)
1092 CreateWordField (CRS, \_SB.PCI0.SRL3._Y25._INT, IRQ1)
1093 Store (SL3B, MIN1)
1094 Store (SL3B, MAX1)
1095 ShiftLeft (0x01, SL3I, IRQ1)
1096 Return (CRS)
1097 }
1098 }
1099
1100 // Programmable Interval Timer (i8254)
1101 Device (TIMR)
1102 {
1103 Name (_HID, EisaId ("PNP0100"))
1104 Name (_CRS, ResourceTemplate ()
1105 {
1106 IO (Decode16,
1107 0x0040, // Range Minimum
1108 0x0040, // Range Maximum
1109 0x00, // Alignment
1110 0x04, // Length
1111 )
1112 IO (Decode16,
1113 0x0050, // Range Minimum
1114 0x0050, // Range Maximum
1115 0x10, // Alignment
1116 0x04, // Length
1117 )
1118 })
1119 }
1120
1121 // Programmable Interrupt Controller (i8259)
1122 Device (PIC)
1123 {
1124 Name (_HID, EisaId ("PNP0000"))
1125 Name (_CRS, ResourceTemplate ()
1126 {
1127 IO (Decode16,
1128 0x0020, // Range Minimum
1129 0x0020, // Range Maximum
1130 0x00, // Alignment
1131 0x02, // Length
1132 )
1133 IO (Decode16,
1134 0x00A0, // Range Minimum
1135 0x00A0, // Range Maximum
1136 0x00, // Alignment
1137 0x02, // Length
1138 )
1139 // because in APIC configs PIC connected to pin 0,
1140 // and ISA IRQ0 rerouted to pin 2
1141 IRQNoFlags ()
1142 {2}
1143 })
1144 }
1145
1146
1147 // Real Time Clock and CMOS (MC146818)
1148 Device (RTC)
1149 {
1150 Name (_HID, EisaId ("PNP0B00"))
1151 Name (_CRS, ResourceTemplate ()
1152 {
1153 IO (Decode16,
1154 0x0070, // Range Minimum
1155 0x0070, // Range Maximum
1156 0x01, // Alignment
1157 0x02, // Length
1158 )
1159 })
1160 Method (_STA, 0, NotSerialized)
1161 {
1162 Return (URTC)
1163 }
1164 }
1165
1166 // High Precision Event Timer
1167 Device(HPET)
1168 {
1169 Name (_HID, EISAID("PNP0103"))
1170 Name (_CID, EISAID("PNP0C01"))
1171 Name(_UID, 0)
1172
1173 Method (_STA, 0, NotSerialized)
1174 {
1175 Return(UHPT)
1176 }
1177
1178 Name(CRS, ResourceTemplate()
1179 {
1180 IRQNoFlags ()
1181 {0}
1182 IRQNoFlags ()
1183 {8}
1184 Memory32Fixed (ReadWrite,
1185 0xFED00000, // Address Base
1186 0x00000400 // Address Length
1187 )
1188 })
1189
1190 Method (_CRS, 0, NotSerialized)
1191 {
1192 Return (CRS)
1193 }
1194 }
1195
1196 // AMD IOMMU (AMD-Vi), I/O Virtualization Reporting Structure
1197 Device (IVRS)
1198 {
1199 Method(_ADR, 0, NotSerialized)
1200 {
1201 Return (IOMA)
1202 }
1203 Method (_STA, 0, NotSerialized)
1204 {
1205 if (LEqual (IOMA, Zero)) {
1206 Return (0x00)
1207 }
1208 else {
1209 Return (0x0F)
1210 }
1211 }
1212 }
1213
1214 // System Management Controller
1215 Device (SMC)
1216 {
1217 Name (_HID, EisaId ("APP0001"))
1218 Name (_CID, "smc-napa")
1219
1220 Method (_STA, 0, NotSerialized)
1221 {
1222 Return (USMC)
1223 }
1224 Name (CRS, ResourceTemplate ()
1225 {
1226 IO (Decode16,
1227 0x0300, // Range Minimum
1228 0x0300, // Range Maximum
1229 0x01, // Alignment
1230 0x20) // Length
1231 IRQNoFlags ()
1232 {6}
1233
1234 })
1235 Method (_CRS, 0, NotSerialized)
1236 {
1237 Return (CRS)
1238 }
1239 }
1240 }
1241
1242 // NVMe controller. Required to convince OS X that
1243 // the controller is an internal (built-in) device.
1244 Device (SSD0)
1245 {
1246 Method(_ADR, 0, NotSerialized)
1247 {
1248 Return (NVMA)
1249 }
1250 Method (_STA, 0, NotSerialized)
1251 {
1252 if (LEqual (NVMA, Zero)) {
1253 Return (0x00)
1254 }
1255 else {
1256 Return (0x0F)
1257 }
1258 }
1259 // Port 0
1260 Device (PRT0)
1261 {
1262 Name (_ADR, 0xffff)
1263 }
1264 }
1265
1266 // NIC
1267 Device (GIGE)
1268 {
1269 /**
1270 * Generic NIC, according to
1271 * http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/devids.txt
1272 * Needed by some Windows guests.
1273 */
1274 Name (_HID, EisaId ("PNP8390"))
1275
1276 Method(_ADR, 0, NotSerialized)
1277 {
1278 Return (NICA)
1279 }
1280 /* Name (_PRW, Package (0x02)
1281 {
1282 0x09,
1283 0x04
1284 }) */
1285
1286 /* Wake up on LAN? */
1287 /* Method (EWOL, 1, NotSerialized)
1288 {
1289 Return (0x00)
1290 } */
1291
1292 Method (_STA, 0, NotSerialized)
1293 {
1294 if (LEqual (NICA, Zero)) {
1295 Return (0x00)
1296 }
1297 else {
1298 Return (0x0F)
1299 }
1300 }
1301 }
1302
1303 // Graphics device
1304 Device (GFX0)
1305 {
1306 Name (_ADR, 0x00020000)
1307
1308 // Windows releases older than Windows 8 (starting with Windows 2000)
1309 // get confused by this and lose the monitor device node. One of
1310 // the consequences is that color management is not available.
1311 // For Windows 2000 - Windows 7, disable this device (while keeping
1312 // it enabled for non-Microsoft OSes).
1313 Method (_STA, 0, NotSerialized)
1314 {
1315 If (LAnd (LGreater (MSWN(), 0x00), LLess (MSWN(), 0x08)))
1316 {
1317 Return(0x00)
1318 }
1319 Else
1320 {
1321 Return(0x0F)
1322 }
1323 }
1324
1325 Scope (\_GPE)
1326 {
1327 // GPE bit 2 handler
1328 // GPE.2 must be set and SCI raised when
1329 // display information changes.
1330 Method (_L02, 0, NotSerialized)
1331 {
1332 Notify (\_SB.PCI0.GFX0, 0x81)
1333 }
1334 }
1335
1336 Method (_DOS, 1) { }
1337
1338 Method (_DOD, 0, NotSerialized)
1339 {
1340 Return (Package()
1341 {
1342 0x80000100
1343 })
1344 }
1345
1346 Device (VGA)
1347 {
1348 Method (_ADR, 0, Serialized)
1349 {
1350 Return (0x0100)
1351 }
1352 }
1353 }
1354
1355 // HDA Audio card
1356 Device (HDEF)
1357 {
1358 Method(_DSM, 4, NotSerialized)
1359 {
1360 Store (Package (0x04)
1361 {
1362 "layout-id",
1363 Buffer (0x04)
1364 {
1365 /* 04 */ 0x04, 0x00, 0x00, 0x00
1366 },
1367
1368 "PinConfigurations",
1369 Buffer (Zero) {}
1370 }, Local0)
1371 if (LEqual (Arg0, ToUUID("a0b5b7c6-1318-441c-b0c9-fe695eaf949b")))
1372 {
1373 If (LEqual (Arg1, One))
1374 {
1375 if (LEqual(Arg2, Zero))
1376 {
1377 Store (Buffer (0x01)
1378 {
1379 0x03
1380 }
1381 , Local0)
1382 Return (Local0)
1383 }
1384 if (LEqual(Arg2, One))
1385 {
1386 Return (Local0)
1387 }
1388 }
1389 }
1390 Store (Buffer (0x01)
1391 {
1392 0x0
1393 }
1394 , Local0)
1395 Return (Local0)
1396 }
1397
1398 Method(_ADR, 0, NotSerialized)
1399 {
1400 Return (HDAA)
1401 }
1402
1403 Method (_STA, 0, NotSerialized)
1404 {
1405 if (LEqual (HDAA, Zero)) {
1406 Return (0x00)
1407 }
1408 else {
1409 Return (0x0F)
1410 }
1411 }
1412 }
1413
1414
1415 // Control method battery
1416 Device (BAT0)
1417 {
1418 Name (_HID, EisaId ("PNP0C0A"))
1419 Name (_UID, 0x00)
1420
1421 Scope (\_GPE)
1422 {
1423 // GPE bit 0 handler
1424 // GPE.0 must be set and SCI raised when battery info
1425 // changed. Do NOT re-evaluate _BIF (battery info, never
1426 // changes) but DO re-evaluate _BST (dynamic state). Also
1427 // re-evaluate the AC adapter status.
1428 Method (_L00, 0, NotSerialized)
1429 {
1430 // _BST must be re-evaluated (battery state)
1431 Notify (\_SB.PCI0.BAT0, 0x80)
1432 // _PSR must be re-evaluated (AC adapter status)
1433 Notify (\_SB.PCI0.AC, 0x80)
1434 }
1435 }
1436
1437 OperationRegion (CBAT, SystemIO, 0x4040, 0x08)
1438 Field (CBAT, DwordAcc, NoLock, Preserve)
1439 {
1440 IDX0, 32,
1441 DAT0, 32,
1442 }
1443
1444 IndexField (IDX0, DAT0, DwordAcc, NoLock, Preserve)
1445 {
1446 STAT, 32,
1447 PRAT, 32,
1448 RCAP, 32,
1449 PVOL, 32,
1450
1451 UNIT, 32,
1452 DCAP, 32,
1453 LFCP, 32,
1454 BTEC, 32,
1455 DVOL, 32,
1456 DWRN, 32,
1457 DLOW, 32,
1458 GRN1, 32,
1459 GRN2, 32,
1460
1461 BSTA, 32,
1462 APSR, 32,
1463 }
1464
1465 Method (_STA, 0, NotSerialized)
1466 {
1467 return (BSTA)
1468 }
1469
1470 Name (PBIF, Package ()
1471 {
1472 0x01, // Power unit, 1 - mA
1473 0x7fffffff, // Design capacity
1474 0x7fffffff, // Last full charge capacity
1475 0x00, // Battery technology
1476 0xffffffff, // Design voltage
1477 0x00, // Design capacity of Warning
1478 0x00, // Design capacity of Low
1479 0x04, // Battery capacity granularity 1
1480 0x04, // Battery capacity granularity 2
1481 "1", // Model number
1482 "0", // Serial number
1483 "VBOX", // Battery type
1484 "innotek" // OEM Information
1485 })
1486
1487 Name (PBST, Package () {
1488 0, // Battery state
1489 0x7fffffff, // Battery present rate
1490 0x7fffffff, // Battery remaining capacity
1491 0x7fffffff // Battery present voltage
1492 })
1493
1494 // Battery information
1495 Method (_BIF, 0, NotSerialized)
1496 {
1497 Store (UNIT, Index (PBIF, 0,))
1498 Store (DCAP, Index (PBIF, 1,))
1499 Store (LFCP, Index (PBIF, 2,))
1500 Store (BTEC, Index (PBIF, 3,))
1501 Store (DVOL, Index (PBIF, 4,))
1502 Store (DWRN, Index (PBIF, 5,))
1503 Store (DLOW, Index (PBIF, 6,))
1504 Store (GRN1, Index (PBIF, 7,))
1505 Store (GRN2, Index (PBIF, 8,))
1506
1507 DBG ("_BIF:\n")
1508 HEX4 (DerefOf (Index (PBIF, 0,)))
1509 HEX4 (DerefOf (Index (PBIF, 1,)))
1510 HEX4 (DerefOf (Index (PBIF, 2,)))
1511 HEX4 (DerefOf (Index (PBIF, 3,)))
1512 HEX4 (DerefOf (Index (PBIF, 4,)))
1513 HEX4 (DerefOf (Index (PBIF, 5,)))
1514 HEX4 (DerefOf (Index (PBIF, 6,)))
1515 HEX4 (DerefOf (Index (PBIF, 7,)))
1516 HEX4 (DerefOf (Index (PBIF, 8,)))
1517
1518 return (PBIF)
1519 }
1520
1521 // Battery status
1522 Method (_BST, 0, NotSerialized)
1523 {
1524 Store (STAT, Index (PBST, 0,))
1525 Store (PRAT, Index (PBST, 1,))
1526 Store (RCAP, Index (PBST, 2,))
1527 Store (PVOL, Index (PBST, 3,))
1528/*
1529 DBG ("_BST:\n")
1530 HEX4 (DerefOf (Index (PBST, 0,)))
1531 HEX4 (DerefOf (Index (PBST, 1,)))
1532 HEX4 (DerefOf (Index (PBST, 2,)))
1533 HEX4 (DerefOf (Index (PBST, 3,)))
1534*/
1535 return (PBST)
1536 }
1537 }
1538
1539 Device (AC)
1540 {
1541 Name (_HID, "ACPI0003")
1542 Name (_UID, 0x00)
1543 Name (_PCL, Package (0x01)
1544 {
1545 \_SB
1546 })
1547
1548 Method (_PSR, 0, NotSerialized)
1549 {
1550 // DBG ("_PSR:\n")
1551 // HEX4 (\_SB.PCI0.BAT0.APSR)
1552 return (\_SB.PCI0.BAT0.APSR)
1553 }
1554
1555 Method (_STA, 0, NotSerialized)
1556 {
1557 return (0x0f)
1558 }
1559 }
1560 }
1561 }
1562
1563 Scope (\_SB)
1564 {
1565 Scope (PCI0)
1566 {
1567 // PCI0 current resource settings
1568 Name (CRS, ResourceTemplate ()
1569 {
1570 WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
1571 0x0000,
1572 0x0000,
1573 0x00FF,
1574 0x0000,
1575 0x0100)
1576 IO (Decode16, 0x0CF8, 0x0CF8, 0x01, 0x08)
1577 WordIO (ResourceProducer, MinFixed, MaxFixed,
1578 PosDecode, EntireRange,
1579 0x0000,
1580 0x0000,
1581 0x0CF7,
1582 0x0000,
1583 0x0CF8)
1584 WordIO (ResourceProducer, MinFixed, MaxFixed,
1585 PosDecode, EntireRange,
1586 0x0000,
1587 0x0D00,
1588 0xFFFF,
1589 0x0000,
1590 0xF300)
1591
1592 /* Taken from ACPI faq (with some modifications) */
1593 DwordMemory( // descriptor for video RAM behind ISA bus
1594 ResourceProducer, // bit 0 of general flags is 0
1595 PosDecode,
1596 MinFixed, // Range is fixed
1597 MaxFixed, // Range is Fixed
1598 Cacheable,
1599 ReadWrite,
1600 0x00000000, // Granularity
1601 0x000a0000, // Min
1602 0x000bffff, // Max
1603 0x00000000, // Translation
1604 0x00020000 // Range Length
1605 )
1606
1607 DwordMemory( // Consumed-and-produced resource
1608 // (all of low memory space)
1609 ResourceProducer, // bit 0 of general flags is 0
1610 PosDecode, // positive Decode
1611 MinFixed, // Range is fixed
1612 MaxFixed, // Range is fixed
1613 Cacheable,
1614 ReadWrite,
1615 0x00000000, // Granularity
1616 0xe0000000, // Min (calculated dynamically)
1617
1618 0xfdffffff, // Max = 4GB - 32MB
1619 0x00000000, // Translation
1620 0x1e000000, // Range Length (calculated
1621 // dynamically)
1622 , // Optional field left blank
1623 , // Optional field left blank
1624 MEM3 // Name declaration for this
1625 // descriptor
1626 )
1627 })
1628
1629 Name (TOM, ResourceTemplate ()
1630 {
1631 QwordMemory(
1632 ResourceProducer, // bit 0 of general flags is 0
1633 PosDecode, // positive Decode
1634 MinFixed, // Range is fixed
1635 MaxFixed, // Range is fixed
1636 Prefetchable,
1637 ReadWrite,
1638 0x0000000000000000, // _GRA: Granularity.
1639 0x0000000100000000, // _MIN: Min address, def. 4GB, will be overwritten.
1640 0x0000000fffffffff, // _MAX: Max address, def. 64GB-1, will be overwritten.
1641 0x0000000000000000, // _TRA: Translation
1642 0x0000000f00000000, // _LEN: Range length (_MAX-_MIN+1)
1643 , // ResourceSourceIndex: Optional field left blank
1644 , // ResourceSource: Optional field left blank
1645 MEM4 // Name declaration for this descriptor.
1646 )
1647 })
1648
1649 Method (_CRS, 0, NotSerialized)
1650 {
1651 CreateDwordField (CRS, \_SB.PCI0.MEM3._MIN, RAMT)
1652 CreateDwordField (CRS, \_SB.PCI0.MEM3._LEN, RAMR)
1653
1654 Store (MEML, RAMT)
1655 Subtract (0xfe000000, RAMT, RAMR)
1656
1657 if (LNotEqual (PMNN, 0x00000000))
1658 {
1659 // Not for Windows < 7!
1660 If (LOr (LLess (MSWN(), 0x01), LGreater (MSWN(), 0x06)))
1661 {
1662 CreateQwordField (TOM, \_SB.PCI0.MEM4._MIN, TM4N)
1663 CreateQwordField (TOM, \_SB.PCI0.MEM4._MAX, TM4X)
1664 CreateQwordField (TOM, \_SB.PCI0.MEM4._LEN, TM4L)
1665
1666 Multiply (PMNN, 0x10000, TM4N) // PMNN in units of 64KB
1667 Subtract (Multiply (PMNX, 0x10000), 1, TM4X) // PMNX in units of 64KB
1668 Add (Subtract (TM4X, TM4N), 1, TM4L) // determine LEN, MAX is already there
1669
1670 ConcatenateResTemplate (CRS, TOM, Local2)
1671
1672 Return (Local2)
1673 }
1674 }
1675
1676 Return (CRS)
1677 }
1678
1679 /* Defined in PCI Firmware Specification 3.0 and ACPI 3.0, with both specs
1680 * referencing each other. The _OSC method must be present to make Linux happy,
1681 * but needs to prevent the OS from taking much control so as to not upset Windows.
1682 * NB: The first DWORD is defined in the ACPI spec but not the PCI FW spec.
1683 */
1684 Method (_OSC, 4)
1685 {
1686 Name(SUPP, 0) // Support field value
1687 Name(CTRL, 0) // Control field value
1688
1689 // Break down the input capabilities buffer into individual DWORDs
1690 CreateDWordField(Arg3, 0, CDW1)
1691 CreateDWordField(Arg3, 4, CDW2)
1692 CreateDWordField(Arg3, 8, CDW3)
1693
1694 If (LEqual (Arg0, ToUUID("33db4d5b-1ff7-401c-9657-7441c03dd766")))
1695 {
1696 // Stash the Support and Control fields
1697 Store(CDW2, SUPP)
1698 Store(CDW3, CTRL)
1699
1700 DBG("_OSC: SUPP=")
1701 HEX4(SUPP)
1702 DBG(" CTRL=")
1703 HEX4(CTRL)
1704 DBG("\n")
1705
1706 // Mask off the PCI Express Capability Structure control
1707 // Not emulated well enough to satisfy Windows (Vista and later)
1708 And(CTRL, 0x0F, CTRL)
1709
1710 // If capabilities were masked, set the Capabilities Masked flag (bit 4)
1711 If (LNotEqual(CDW3, CTRL))
1712 {
1713 Or(CDW1, 0x10, CDW1)
1714 }
1715
1716 // Update the Control field and return
1717 Store(CTRL, CDW3)
1718 Return(Arg3)
1719 }
1720 Else
1721 {
1722 // UUID not known, set Unrecognized UUID flag (bit 2)
1723 Or(CDW1, 0x04, CDW1)
1724 Return(Arg3)
1725 }
1726 }
1727 }
1728 }
1729
1730 Scope (\_SB)
1731 {
1732 // Fields within PIIX3 configuration[0x60..0x63] with
1733 // IRQ mappings
1734 Field (\_SB.PCI0.SBRG.PCIC, ByteAcc, NoLock, Preserve)
1735 {
1736 Offset (0x60),
1737 PIRA, 8,
1738 PIRB, 8,
1739 PIRC, 8,
1740 PIRD, 8
1741 }
1742
1743 Name (BUFA, ResourceTemplate ()
1744 {
1745 IRQ (Level, ActiveLow, Shared) {15}
1746 })
1747 CreateWordField (BUFA, 0x01, ICRS)
1748
1749 // Generic status of IRQ routing entry
1750 Method (LSTA, 1, NotSerialized)
1751 {
1752 And (Arg0, 0x80, Local0)
1753// DBG ("LSTA: ")
1754// HEX (Arg0)
1755 If (Local0)
1756 {
1757 Return (0x09)
1758 }
1759 Else
1760 {
1761 Return (0x0B)
1762 }
1763 }
1764
1765 // Generic "current resource settings" for routing entry
1766 Method (LCRS, 1, NotSerialized)
1767 {
1768 And (Arg0, 0x0F, Local0)
1769 ShiftLeft (0x01, Local0, ICRS)
1770// DBG ("LCRS: ")
1771// HEX (ICRS)
1772 Return (BUFA)
1773 }
1774
1775 // Generic "set resource settings" for routing entry
1776 Method (LSRS, 1, NotSerialized)
1777 {
1778 CreateWordField (Arg0, 0x01, ISRS)
1779 FindSetRightBit (ISRS, Local0)
1780 Return (Decrement (Local0))
1781 }
1782
1783 // Generic "disable" for routing entry
1784 Method (LDIS, 1, NotSerialized)
1785 {
1786 Return (Or (Arg0, 0x80))
1787 }
1788
1789 // Link A
1790 Device (LNKA)
1791 {
1792 Name (_HID, EisaId ("PNP0C0F"))
1793 Name (_UID, 0x01)
1794
1795 // Status
1796 Method (_STA, 0, NotSerialized)
1797 {
1798 DBG ("LNKA._STA\n")
1799 Return (LSTA (PIRA))
1800 }
1801
1802 // Possible resource settings
1803 Method (_PRS, 0, NotSerialized)
1804 {
1805 DBG ("LNKA._PRS\n")
1806 Return (PRSA)
1807 }
1808
1809 // Disable
1810 Method (_DIS, 0, NotSerialized)
1811 {
1812 DBG ("LNKA._DIS\n")
1813 Store (LDIS (PIRA), PIRA)
1814 }
1815
1816 // Current resource settings
1817 Method (_CRS, 0, NotSerialized)
1818 {
1819 DBG ("LNKA._CRS\n")
1820 Return (LCRS (PIRA))
1821 }
1822
1823 // Set resource settings
1824 Method (_SRS, 1, NotSerialized)
1825 {
1826 DBG ("LNKA._SRS: ")
1827 HEX (LSRS (Arg0))
1828 Store (LSRS (Arg0), PIRA)
1829 }
1830 }
1831
1832 // Link B
1833 Device (LNKB)
1834 {
1835 Name (_HID, EisaId ("PNP0C0F"))
1836 Name (_UID, 0x02)
1837 Method (_STA, 0, NotSerialized)
1838 {
1839 // DBG ("LNKB._STA\n")
1840 Return (LSTA (PIRB))
1841 }
1842
1843 Method (_PRS, 0, NotSerialized)
1844 {
1845 // DBG ("LNKB._PRS\n")
1846 Return (PRSB)
1847 }
1848
1849 Method (_DIS, 0, NotSerialized)
1850 {
1851 // DBG ("LNKB._DIS\n")
1852 Store (LDIS (PIRB), PIRB)
1853 }
1854
1855 Method (_CRS, 0, NotSerialized)
1856 {
1857 // DBG ("LNKB._CRS\n")
1858 Return (LCRS (PIRB))
1859 }
1860
1861 Method (_SRS, 1, NotSerialized)
1862 {
1863 DBG ("LNKB._SRS: ")
1864 HEX (LSRS (Arg0))
1865 Store (LSRS (Arg0), PIRB)
1866 }
1867 }
1868
1869 // Link C
1870 Device (LNKC)
1871 {
1872 Name (_HID, EisaId ("PNP0C0F"))
1873 Name (_UID, 0x03)
1874 Method (_STA, 0, NotSerialized)
1875 {
1876 // DBG ("LNKC._STA\n")
1877 Return (LSTA (PIRC))
1878 }
1879
1880 Method (_PRS, 0, NotSerialized)
1881 {
1882 // DBG ("LNKC._PRS\n")
1883 Return (PRSC)
1884 }
1885
1886 Method (_DIS, 0, NotSerialized)
1887 {
1888 // DBG ("LNKC._DIS\n")
1889 Store (LDIS (PIRC), PIRC)
1890 }
1891
1892 Method (_CRS, 0, NotSerialized)
1893 {
1894 // DBG ("LNKC._CRS\n")
1895 Return (LCRS (PIRC))
1896 }
1897
1898 Method (_SRS, 1, NotSerialized)
1899 {
1900 DBG ("LNKC._SRS: ")
1901 HEX (LSRS (Arg0))
1902 Store (LSRS (Arg0), PIRC)
1903 }
1904 }
1905
1906 // Link D
1907 Device (LNKD)
1908 {
1909 Name (_HID, EisaId ("PNP0C0F"))
1910 Name (_UID, 0x04)
1911 Method (_STA, 0, NotSerialized)
1912 {
1913 // DBG ("LNKD._STA\n")
1914 Return (LSTA (PIRD))
1915 }
1916
1917 Method (_PRS, 0, NotSerialized)
1918 {
1919 // DBG ("LNKD._PRS\n")
1920 Return (PRSD)
1921 }
1922
1923 Method (_DIS, 0, NotSerialized)
1924 {
1925 // DBG ("LNKD._DIS\n")
1926 Store (LDIS (PIRA), PIRD)
1927 }
1928
1929 Method (_CRS, 0, NotSerialized)
1930 {
1931 // DBG ("LNKD._CRS\n")
1932 Return (LCRS (PIRD))
1933 }
1934
1935 Method (_SRS, 1, NotSerialized)
1936 {
1937 DBG ("LNKD._SRS: ")
1938 HEX (LSRS (Arg0))
1939 Store (LSRS (Arg0), PIRD)
1940 }
1941 }
1942 }
1943
1944 // Sx states
1945 Name (_S0, Package (2) {
1946 0x00,
1947 0x00,
1948 })
1949
1950 // Shift one by the power state number
1951 If (And(PWRS, ShiftLeft(One,1))) {
1952 Name (_S1, Package (2) {
1953 0x01,
1954 0x01,
1955 })
1956 }
1957
1958 If (And(PWRS, ShiftLeft(One,4))) {
1959 Name (_S4, Package (2) {
1960 0x05,
1961 0x05,
1962 })
1963 }
1964
1965 Name (_S5, Package (2) {
1966 0x05,
1967 0x05,
1968 })
1969
1970 Method (_PTS, 1, NotSerialized)
1971 {
1972 DBG ("Prepare to sleep: ")
1973 HEX (Arg0)
1974 }
1975}
1976
1977/*
1978 * Local Variables:
1979 * comment-start: "//"
1980 * End:
1981 */
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