VirtualBox

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

Last change on this file since 59918 was 59918, checked in by vboxsync, 9 years ago

ACPI: Allow two more serial ports.

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