VirtualBox

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

Last change on this file since 85639 was 85349, checked in by vboxsync, 4 years ago

ACPI: vbox.dsl fix trailing blank scm burn.

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