VirtualBox

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

Last change on this file since 53528 was 53528, checked in by vboxsync, 10 years ago

Devices/Graphics, Devices/PC/DevACPI, Main: add support for sending video mode hints through the VGA device.

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

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