Statistics
| Branch: | Revision:

root / hw / acpi-dsdt.dsl @ 8f40c388

History | View | Annotate | Download (17.9 kB)

1 6515b203 bellard
/*
2 6515b203 bellard
 * QEMU ACPI DSDT ASL definition
3 6515b203 bellard
 * 
4 6515b203 bellard
 * Copyright (c) 2006 Fabrice Bellard
5 6515b203 bellard
 * 
6 6515b203 bellard
 * This library is free software; you can redistribute it and/or
7 6515b203 bellard
 * modify it under the terms of the GNU Lesser General Public
8 6515b203 bellard
 * License version 2 as published by the Free Software Foundation.
9 6515b203 bellard
 *
10 6515b203 bellard
 * This library is distributed in the hope that it will be useful,
11 6515b203 bellard
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 6515b203 bellard
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13 6515b203 bellard
 * Lesser General Public License for more details.
14 6515b203 bellard
 *
15 6515b203 bellard
 * You should have received a copy of the GNU Lesser General Public
16 6515b203 bellard
 * License along with this library; if not, write to the Free Software
17 6515b203 bellard
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18 6515b203 bellard
 */
19 6515b203 bellard
DefinitionBlock (
20 6515b203 bellard
    "acpi-dsdt.aml",    // Output Filename
21 6515b203 bellard
    "DSDT",             // Signature
22 6515b203 bellard
    0x01,               // DSDT Compliance Revision
23 6515b203 bellard
    "QEMU",             // OEMID
24 6515b203 bellard
    "QEMUDSDT",         // TABLE ID
25 6515b203 bellard
    0x1                 // OEM Revision
26 6515b203 bellard
    )
27 6515b203 bellard
{
28 6515b203 bellard
    Scope (\)
29 6515b203 bellard
    {
30 6515b203 bellard
        /* CMOS memory access */
31 6515b203 bellard
        OperationRegion (CMS, SystemIO, 0x70, 0x02)
32 6515b203 bellard
        Field (CMS, ByteAcc, NoLock, Preserve)
33 6515b203 bellard
        {
34 6515b203 bellard
            CMSI,   8, 
35 6515b203 bellard
            CMSD,   8
36 6515b203 bellard
        }
37 6515b203 bellard
        Method (CMRD, 1, NotSerialized)
38 6515b203 bellard
        {
39 6515b203 bellard
            Store (Arg0, CMSI)
40 6515b203 bellard
            Store (CMSD, Local0)
41 6515b203 bellard
            Return (Local0)
42 6515b203 bellard
        }
43 6515b203 bellard
44 6515b203 bellard
        /* Debug Output */
45 6515b203 bellard
        OperationRegion (DBG, SystemIO, 0xb044, 0x04)
46 6515b203 bellard
        Field (DBG, DWordAcc, NoLock, Preserve)
47 6515b203 bellard
        {
48 6515b203 bellard
            DBGL,   32, 
49 6515b203 bellard
        }
50 6515b203 bellard
    }
51 6515b203 bellard
52 6515b203 bellard
53 6515b203 bellard
    /* PCI Bus definition */
54 6515b203 bellard
    Scope(\_SB) {
55 6515b203 bellard
        Device(PCI0) {
56 6515b203 bellard
            Name (_HID, EisaId ("PNP0A03"))
57 6515b203 bellard
            Name (_ADR, 0x00)
58 6515b203 bellard
            Name (_UID, 1)
59 6515b203 bellard
            Name(_PRT, Package() {
60 6515b203 bellard
                /* PCI IRQ routing table, example from ACPI 2.0a specification,
61 6515b203 bellard
                   section 6.2.8.1 */
62 6515b203 bellard
                /* Note: we provide the same info as the PCI routing
63 6515b203 bellard
                   table of the Bochs BIOS */
64 6515b203 bellard
                   
65 6515b203 bellard
                // PCI Slot 0
66 6583391f bellard
                Package() {0x0000ffff, 0, LNKD, 0}, 
67 6583391f bellard
                Package() {0x0000ffff, 1, LNKA, 0}, 
68 6583391f bellard
                Package() {0x0000ffff, 2, LNKB, 0}, 
69 6583391f bellard
                Package() {0x0000ffff, 3, LNKC, 0}, 
70 6515b203 bellard
71 6583391f bellard
                // PCI Slot 1
72 6583391f bellard
                Package() {0x0001ffff, 0, LNKA, 0}, 
73 6583391f bellard
                Package() {0x0001ffff, 1, LNKB, 0}, 
74 6583391f bellard
                Package() {0x0001ffff, 2, LNKC, 0}, 
75 6583391f bellard
                Package() {0x0001ffff, 3, LNKD, 0}, 
76 6583391f bellard
                
77 6515b203 bellard
                // PCI Slot 2
78 6583391f bellard
                Package() {0x0002ffff, 0, LNKB, 0}, 
79 6583391f bellard
                Package() {0x0002ffff, 1, LNKC, 0}, 
80 6583391f bellard
                Package() {0x0002ffff, 2, LNKD, 0}, 
81 6583391f bellard
                Package() {0x0002ffff, 3, LNKA, 0}, 
82 6515b203 bellard
83 6515b203 bellard
                // PCI Slot 3
84 6583391f bellard
                Package() {0x0003ffff, 0, LNKC, 0}, 
85 6583391f bellard
                Package() {0x0003ffff, 1, LNKD, 0}, 
86 6583391f bellard
                Package() {0x0003ffff, 2, LNKA, 0}, 
87 6583391f bellard
                Package() {0x0003ffff, 3, LNKB, 0}, 
88 6515b203 bellard
89 6515b203 bellard
                // PCI Slot 4
90 6583391f bellard
                Package() {0x0004ffff, 0, LNKD, 0}, 
91 6583391f bellard
                Package() {0x0004ffff, 1, LNKA, 0}, 
92 6583391f bellard
                Package() {0x0004ffff, 2, LNKB, 0}, 
93 6583391f bellard
                Package() {0x0004ffff, 3, LNKC, 0}, 
94 6515b203 bellard
95 6515b203 bellard
                // PCI Slot 5
96 6583391f bellard
                Package() {0x0005ffff, 0, LNKA, 0}, 
97 6583391f bellard
                Package() {0x0005ffff, 1, LNKB, 0}, 
98 6583391f bellard
                Package() {0x0005ffff, 2, LNKC, 0}, 
99 6583391f bellard
                Package() {0x0005ffff, 3, LNKD, 0}, 
100 6515b203 bellard
            })
101 6515b203 bellard
102 6515b203 bellard
            Method (_CRS, 0, NotSerialized)
103 6515b203 bellard
            {
104 6515b203 bellard
            Name (MEMP, ResourceTemplate ()
105 6515b203 bellard
            {
106 6515b203 bellard
                WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
107 6515b203 bellard
                    0x0000,             // Address Space Granularity
108 6515b203 bellard
                    0x0000,             // Address Range Minimum
109 6515b203 bellard
                    0x00FF,             // Address Range Maximum
110 6515b203 bellard
                    0x0000,             // Address Translation Offset
111 6515b203 bellard
                    0x0100,             // Address Length
112 6515b203 bellard
                    ,, )
113 6515b203 bellard
                IO (Decode16,
114 6515b203 bellard
                    0x0CF8,             // Address Range Minimum
115 6515b203 bellard
                    0x0CF8,             // Address Range Maximum
116 6515b203 bellard
                    0x01,               // Address Alignment
117 6515b203 bellard
                    0x08,               // Address Length
118 6515b203 bellard
                    )
119 6515b203 bellard
                WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
120 6515b203 bellard
                    0x0000,             // Address Space Granularity
121 6515b203 bellard
                    0x0000,             // Address Range Minimum
122 6515b203 bellard
                    0x0CF7,             // Address Range Maximum
123 6515b203 bellard
                    0x0000,             // Address Translation Offset
124 6515b203 bellard
                    0x0CF8,             // Address Length
125 6515b203 bellard
                    ,, , TypeStatic)
126 6515b203 bellard
                WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
127 6515b203 bellard
                    0x0000,             // Address Space Granularity
128 6515b203 bellard
                    0x0D00,             // Address Range Minimum
129 6515b203 bellard
                    0xFFFF,             // Address Range Maximum
130 6515b203 bellard
                    0x0000,             // Address Translation Offset
131 6515b203 bellard
                    0xF300,             // Address Length
132 6515b203 bellard
                    ,, , TypeStatic)
133 6515b203 bellard
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
134 6515b203 bellard
                    0x00000000,         // Address Space Granularity
135 6515b203 bellard
                    0x000A0000,         // Address Range Minimum
136 6515b203 bellard
                    0x000BFFFF,         // Address Range Maximum
137 6515b203 bellard
                    0x00000000,         // Address Translation Offset
138 6515b203 bellard
                    0x00020000,         // Address Length
139 6515b203 bellard
                    ,, , AddressRangeMemory, TypeStatic)
140 6515b203 bellard
                DWordMemory (ResourceProducer, PosDecode, MinNotFixed, MaxFixed, NonCacheable, ReadWrite,
141 6515b203 bellard
                    0x00000000,         // Address Space Granularity
142 6515b203 bellard
                    0x00000000,         // Address Range Minimum
143 6515b203 bellard
                    0xFEBFFFFF,         // Address Range Maximum
144 6515b203 bellard
                    0x00000000,         // Address Translation Offset
145 6515b203 bellard
                    0x00000000,         // Address Length
146 6515b203 bellard
                    ,, MEMF, AddressRangeMemory, TypeStatic)
147 6515b203 bellard
            })
148 6515b203 bellard
                CreateDWordField (MEMP, \_SB.PCI0._CRS.MEMF._MIN, PMIN)
149 6515b203 bellard
                CreateDWordField (MEMP, \_SB.PCI0._CRS.MEMF._MAX, PMAX)
150 6515b203 bellard
                CreateDWordField (MEMP, \_SB.PCI0._CRS.MEMF._LEN, PLEN)
151 6515b203 bellard
                /* compute available RAM */
152 6515b203 bellard
                Add(CMRD(0x34), ShiftLeft(CMRD(0x35), 8), Local0)
153 6515b203 bellard
                ShiftLeft(Local0, 16, Local0)
154 6515b203 bellard
                Add(Local0, 0x1000000, Local0)
155 6515b203 bellard
                /* update field of last region */
156 6515b203 bellard
                Store(Local0, PMIN)
157 6515b203 bellard
                Subtract (PMAX, PMIN, PLEN)
158 6515b203 bellard
                Increment (PLEN)
159 6515b203 bellard
                Return (MEMP)
160 6515b203 bellard
            }
161 6515b203 bellard
        }
162 6515b203 bellard
    }
163 6515b203 bellard
164 6515b203 bellard
    Scope(\_SB.PCI0) {
165 1ce549ab bellard
166 1ce549ab bellard
	/* PIIX3 ISA bridge */
167 6515b203 bellard
        Device (ISA) {
168 6515b203 bellard
            Name (_ADR, 0x00010000)
169 6515b203 bellard
        
170 6515b203 bellard
            /* PIIX PCI to ISA irq remapping */
171 6515b203 bellard
            OperationRegion (P40C, PCI_Config, 0x60, 0x04)
172 6515b203 bellard
173 6515b203 bellard
174 6515b203 bellard
            /* Keyboard seems to be important for WinXP install */
175 6515b203 bellard
            Device (KBD)
176 6515b203 bellard
            {
177 6515b203 bellard
                Name (_HID, EisaId ("PNP0303"))
178 6515b203 bellard
                Method (_STA, 0, NotSerialized)
179 6515b203 bellard
                {
180 6515b203 bellard
                    Return (0x0f)
181 6515b203 bellard
                }
182 6515b203 bellard
183 6515b203 bellard
                Method (_CRS, 0, NotSerialized)
184 6515b203 bellard
                {
185 6515b203 bellard
                     Name (TMP, ResourceTemplate ()
186 6515b203 bellard
                     {
187 6515b203 bellard
                    IO (Decode16,
188 6515b203 bellard
                        0x0060,             // Address Range Minimum
189 6515b203 bellard
                        0x0060,             // Address Range Maximum
190 6515b203 bellard
                        0x01,               // Address Alignment
191 6515b203 bellard
                        0x01,               // Address Length
192 6515b203 bellard
                        )
193 6515b203 bellard
                    IO (Decode16,
194 6515b203 bellard
                        0x0064,             // Address Range Minimum
195 6515b203 bellard
                        0x0064,             // Address Range Maximum
196 6515b203 bellard
                        0x01,               // Address Alignment
197 6515b203 bellard
                        0x01,               // Address Length
198 6515b203 bellard
                        )
199 6515b203 bellard
                    IRQNoFlags ()
200 6515b203 bellard
                        {1}
201 6515b203 bellard
                    })
202 6515b203 bellard
                    Return (TMP)
203 6515b203 bellard
                }
204 6515b203 bellard
            }
205 6515b203 bellard
206 1ce549ab bellard
	    /* PS/2 mouse */
207 6515b203 bellard
            Device (MOU) 
208 6515b203 bellard
            {
209 6515b203 bellard
                Name (_HID, EisaId ("PNP0F13"))
210 6515b203 bellard
                Method (_STA, 0, NotSerialized)
211 6515b203 bellard
                {
212 6515b203 bellard
                    Return (0x0f)
213 6515b203 bellard
                }
214 6515b203 bellard
215 6515b203 bellard
                Method (_CRS, 0, NotSerialized)
216 6515b203 bellard
                {
217 6515b203 bellard
                    Name (TMP, ResourceTemplate ()
218 6515b203 bellard
                    {
219 6515b203 bellard
                         IRQNoFlags () {12}
220 6515b203 bellard
                    })
221 6515b203 bellard
                    Return (TMP)
222 6515b203 bellard
                }
223 6515b203 bellard
            }
224 1ce549ab bellard
225 1ce549ab bellard
	    /* PS/2 floppy controller */
226 1ce549ab bellard
	    Device (FDC0)
227 1ce549ab bellard
	    {
228 1ce549ab bellard
	        Name (_HID, EisaId ("PNP0700"))
229 1ce549ab bellard
		Method (_STA, 0, NotSerialized)
230 1ce549ab bellard
		{
231 1ce549ab bellard
		    Return (0x0F)
232 1ce549ab bellard
		}
233 1ce549ab bellard
		Method (_CRS, 0, NotSerialized)
234 1ce549ab bellard
		{
235 1ce549ab bellard
		    Name (BUF0, ResourceTemplate ()
236 1ce549ab bellard
                    {
237 1ce549ab bellard
                        IO (Decode16, 0x03F2, 0x03F2, 0x00, 0x04)
238 1ce549ab bellard
                        IO (Decode16, 0x03F7, 0x03F7, 0x00, 0x01)
239 1ce549ab bellard
                        IRQNoFlags () {6}
240 1ce549ab bellard
                        DMA (Compatibility, NotBusMaster, Transfer8) {2}
241 1ce549ab bellard
                    })
242 1ce549ab bellard
		    Return (BUF0)
243 1ce549ab bellard
		}
244 1ce549ab bellard
	    }
245 1ce549ab bellard
246 1ce549ab bellard
	    /* Parallel port */
247 1ce549ab bellard
	    Device (LPT)
248 1ce549ab bellard
	    {
249 1ce549ab bellard
	        Name (_HID, EisaId ("PNP0400"))
250 1ce549ab bellard
		Method (_STA, 0, NotSerialized)
251 1ce549ab bellard
		{
252 1ce549ab bellard
		    Store (\_SB.PCI0.PX13.DRSA, Local0)
253 1ce549ab bellard
		    And (Local0, 0x80000000, Local0)
254 1ce549ab bellard
		    If (LEqual (Local0, 0))
255 1ce549ab bellard
		    {
256 1ce549ab bellard
			Return (0x00)
257 1ce549ab bellard
		    }
258 1ce549ab bellard
		    Else
259 1ce549ab bellard
		    {
260 1ce549ab bellard
			Return (0x0F)
261 1ce549ab bellard
		    }
262 1ce549ab bellard
		}
263 1ce549ab bellard
		Method (_CRS, 0, NotSerialized)
264 1ce549ab bellard
		{
265 1ce549ab bellard
		    Name (BUF0, ResourceTemplate ()
266 1ce549ab bellard
                    {
267 1ce549ab bellard
			IO (Decode16, 0x0378, 0x0378, 0x08, 0x08)
268 1ce549ab bellard
			IRQNoFlags () {7}
269 1ce549ab bellard
		    })
270 1ce549ab bellard
		    Return (BUF0)
271 1ce549ab bellard
		}
272 1ce549ab bellard
	    }
273 1ce549ab bellard
274 1ce549ab bellard
	    /* Serial Ports */
275 1ce549ab bellard
	    Device (COM1)
276 1ce549ab bellard
	    {
277 1ce549ab bellard
	        Name (_HID, EisaId ("PNP0501"))
278 1ce549ab bellard
		Name (_UID, 0x01)
279 1ce549ab bellard
		Method (_STA, 0, NotSerialized)
280 1ce549ab bellard
		{
281 1ce549ab bellard
		    Store (\_SB.PCI0.PX13.DRSC, Local0)
282 1ce549ab bellard
		    And (Local0, 0x08000000, Local0)
283 1ce549ab bellard
		    If (LEqual (Local0, 0))
284 1ce549ab bellard
		    {
285 1ce549ab bellard
			Return (0x00)
286 1ce549ab bellard
		    }
287 1ce549ab bellard
		    Else
288 1ce549ab bellard
		    {
289 1ce549ab bellard
			Return (0x0F)
290 1ce549ab bellard
		    }
291 1ce549ab bellard
		}
292 1ce549ab bellard
		Method (_CRS, 0, NotSerialized)
293 1ce549ab bellard
		{
294 1ce549ab bellard
		    Name (BUF0, ResourceTemplate ()
295 1ce549ab bellard
                    {
296 1ce549ab bellard
			IO (Decode16, 0x03F8, 0x03F8, 0x00, 0x08)
297 1ce549ab bellard
                	IRQNoFlags () {4}
298 1ce549ab bellard
		    })
299 1ce549ab bellard
		    Return (BUF0)
300 1ce549ab bellard
		}
301 1ce549ab bellard
	    }
302 1ce549ab bellard
303 1ce549ab bellard
	    Device (COM2)
304 1ce549ab bellard
	    {
305 1ce549ab bellard
	        Name (_HID, EisaId ("PNP0501"))
306 1ce549ab bellard
		Name (_UID, 0x02)
307 1ce549ab bellard
		Method (_STA, 0, NotSerialized)
308 1ce549ab bellard
		{
309 1ce549ab bellard
		    Store (\_SB.PCI0.PX13.DRSC, Local0)
310 1ce549ab bellard
		    And (Local0, 0x80000000, Local0)
311 1ce549ab bellard
		    If (LEqual (Local0, 0))
312 1ce549ab bellard
		    {
313 1ce549ab bellard
			Return (0x00)
314 1ce549ab bellard
		    }
315 1ce549ab bellard
		    Else
316 1ce549ab bellard
		    {
317 1ce549ab bellard
			Return (0x0F)
318 1ce549ab bellard
		    }
319 1ce549ab bellard
		}
320 1ce549ab bellard
		Method (_CRS, 0, NotSerialized)
321 1ce549ab bellard
		{
322 1ce549ab bellard
		    Name (BUF0, ResourceTemplate ()
323 1ce549ab bellard
                    {
324 1ce549ab bellard
			IO (Decode16, 0x02F8, 0x02F8, 0x00, 0x08)
325 1ce549ab bellard
                	IRQNoFlags () {3}
326 1ce549ab bellard
		    })
327 1ce549ab bellard
		    Return (BUF0)
328 1ce549ab bellard
		}
329 1ce549ab bellard
	    }
330 6515b203 bellard
        }
331 1ce549ab bellard
332 1ce549ab bellard
	/* PIIX4 PM */
333 1ce549ab bellard
        Device (PX13) {
334 1ce549ab bellard
	    Name (_ADR, 0x00010003)
335 1ce549ab bellard
336 1ce549ab bellard
	    OperationRegion (P13C, PCI_Config, 0x5c, 0x24)
337 1ce549ab bellard
	    Field (P13C, DWordAcc, NoLock, Preserve)
338 1ce549ab bellard
	    {
339 1ce549ab bellard
		DRSA, 32,
340 1ce549ab bellard
		DRSB, 32,
341 1ce549ab bellard
		DRSC, 32,
342 1ce549ab bellard
		DRSE, 32,
343 1ce549ab bellard
		DRSF, 32,
344 1ce549ab bellard
		DRSG, 32,
345 1ce549ab bellard
		DRSH, 32,
346 1ce549ab bellard
		DRSI, 32,
347 1ce549ab bellard
		DRSJ, 32
348 1ce549ab bellard
	    }
349 1ce549ab bellard
	}
350 6515b203 bellard
    }
351 6515b203 bellard
352 6515b203 bellard
    /* PCI IRQs */
353 6515b203 bellard
    Scope(\_SB) {
354 6515b203 bellard
         Field (\_SB.PCI0.ISA.P40C, ByteAcc, NoLock, Preserve)
355 6515b203 bellard
         {
356 6515b203 bellard
             PRQ0,   8, 
357 6515b203 bellard
             PRQ1,   8, 
358 6515b203 bellard
             PRQ2,   8, 
359 6515b203 bellard
             PRQ3,   8
360 6515b203 bellard
         }
361 6515b203 bellard
362 6515b203 bellard
        Device(LNKA){
363 6515b203 bellard
                Name(_HID, EISAID("PNP0C0F"))     // PCI interrupt link
364 6515b203 bellard
                Name(_UID, 1)
365 6515b203 bellard
                Name(_PRS, ResourceTemplate(){
366 6515b203 bellard
                    IRQ (Level, ActiveLow, Shared)
367 6515b203 bellard
                        {3,4,5,6,7,9,10,11,12}
368 6515b203 bellard
                })
369 6515b203 bellard
                Method (_STA, 0, NotSerialized)
370 6515b203 bellard
                {
371 6515b203 bellard
                    Store (0x0B, Local0)
372 6515b203 bellard
                    If (And (0x80, PRQ0, Local1))
373 6515b203 bellard
                    {
374 6515b203 bellard
                         Store (0x09, Local0)
375 6515b203 bellard
                    }
376 6515b203 bellard
                    Return (Local0)
377 6515b203 bellard
                }
378 6515b203 bellard
                Method (_DIS, 0, NotSerialized)
379 6515b203 bellard
                {
380 6515b203 bellard
                    Or (PRQ0, 0x80, PRQ0)
381 6515b203 bellard
                }
382 6515b203 bellard
                Method (_CRS, 0, NotSerialized)
383 6515b203 bellard
                {
384 6515b203 bellard
                    Name (PRR0, ResourceTemplate ()
385 6515b203 bellard
                    {
386 6515b203 bellard
                        IRQ (Level, ActiveLow, Shared)
387 6515b203 bellard
                            {1}
388 6515b203 bellard
                    })
389 6515b203 bellard
                    CreateWordField (PRR0, 0x01, TMP)
390 6515b203 bellard
                    Store (PRQ0, Local0)
391 6515b203 bellard
                    If (LLess (Local0, 0x80))
392 6515b203 bellard
                    {
393 6515b203 bellard
                        ShiftLeft (One, Local0, TMP)
394 6515b203 bellard
                    }
395 6515b203 bellard
                    Else
396 6515b203 bellard
                    {
397 6515b203 bellard
                        Store (Zero, TMP)
398 6515b203 bellard
                    }
399 6515b203 bellard
                    Return (PRR0)
400 6515b203 bellard
                }
401 6515b203 bellard
                Method (_SRS, 1, NotSerialized)
402 6515b203 bellard
                {
403 6515b203 bellard
                    CreateWordField (Arg0, 0x01, TMP)
404 6515b203 bellard
                    FindSetRightBit (TMP, Local0)
405 6515b203 bellard
                    Decrement (Local0)
406 6515b203 bellard
                    Store (Local0, PRQ0)
407 6515b203 bellard
                }
408 6515b203 bellard
        }
409 6515b203 bellard
        Device(LNKB){
410 6515b203 bellard
                Name(_HID, EISAID("PNP0C0F"))     // PCI interrupt link
411 6515b203 bellard
                Name(_UID, 2)
412 6515b203 bellard
                Name(_PRS, ResourceTemplate(){
413 6515b203 bellard
                    IRQ (Level, ActiveLow, Shared)
414 6515b203 bellard
                        {3,4,5,6,7,9,10,11,12}
415 6515b203 bellard
                })
416 6515b203 bellard
                Method (_STA, 0, NotSerialized)
417 6515b203 bellard
                {
418 6515b203 bellard
                    Store (0x0B, Local0)
419 6515b203 bellard
                    If (And (0x80, PRQ1, Local1))
420 6515b203 bellard
                    {
421 6515b203 bellard
                         Store (0x09, Local0)
422 6515b203 bellard
                    }
423 6515b203 bellard
                    Return (Local0)
424 6515b203 bellard
                }
425 6515b203 bellard
                Method (_DIS, 0, NotSerialized)
426 6515b203 bellard
                {
427 6515b203 bellard
                    Or (PRQ1, 0x80, PRQ1)
428 6515b203 bellard
                }
429 6515b203 bellard
                Method (_CRS, 0, NotSerialized)
430 6515b203 bellard
                {
431 6515b203 bellard
                    Name (PRR0, ResourceTemplate ()
432 6515b203 bellard
                    {
433 6515b203 bellard
                        IRQ (Level, ActiveLow, Shared)
434 6515b203 bellard
                            {1}
435 6515b203 bellard
                    })
436 6515b203 bellard
                    CreateWordField (PRR0, 0x01, TMP)
437 6515b203 bellard
                    Store (PRQ1, Local0)
438 6515b203 bellard
                    If (LLess (Local0, 0x80))
439 6515b203 bellard
                    {
440 6515b203 bellard
                        ShiftLeft (One, Local0, TMP)
441 6515b203 bellard
                    }
442 6515b203 bellard
                    Else
443 6515b203 bellard
                    {
444 6515b203 bellard
                        Store (Zero, TMP)
445 6515b203 bellard
                    }
446 6515b203 bellard
                    Return (PRR0)
447 6515b203 bellard
                }
448 6515b203 bellard
                Method (_SRS, 1, NotSerialized)
449 6515b203 bellard
                {
450 6515b203 bellard
                    CreateWordField (Arg0, 0x01, TMP)
451 6515b203 bellard
                    FindSetRightBit (TMP, Local0)
452 6515b203 bellard
                    Decrement (Local0)
453 6515b203 bellard
                    Store (Local0, PRQ1)
454 6515b203 bellard
                }
455 6515b203 bellard
        }
456 6515b203 bellard
        Device(LNKC){
457 6515b203 bellard
                Name(_HID, EISAID("PNP0C0F"))     // PCI interrupt link
458 6515b203 bellard
                Name(_UID, 3)
459 6515b203 bellard
                Name(_PRS, ResourceTemplate(){
460 6515b203 bellard
                    IRQ (Level, ActiveLow, Shared)
461 6515b203 bellard
                        {3,4,5,6,7,9,10,11,12}
462 6515b203 bellard
                })
463 6515b203 bellard
                Method (_STA, 0, NotSerialized)
464 6515b203 bellard
                {
465 6515b203 bellard
                    Store (0x0B, Local0)
466 6515b203 bellard
                    If (And (0x80, PRQ2, Local1))
467 6515b203 bellard
                    {
468 6515b203 bellard
                         Store (0x09, Local0)
469 6515b203 bellard
                    }
470 6515b203 bellard
                    Return (Local0)
471 6515b203 bellard
                }
472 6515b203 bellard
                Method (_DIS, 0, NotSerialized)
473 6515b203 bellard
                {
474 6515b203 bellard
                    Or (PRQ2, 0x80, PRQ2)
475 6515b203 bellard
                }
476 6515b203 bellard
                Method (_CRS, 0, NotSerialized)
477 6515b203 bellard
                {
478 6515b203 bellard
                    Name (PRR0, ResourceTemplate ()
479 6515b203 bellard
                    {
480 6515b203 bellard
                        IRQ (Level, ActiveLow, Shared)
481 6515b203 bellard
                            {1}
482 6515b203 bellard
                    })
483 6515b203 bellard
                    CreateWordField (PRR0, 0x01, TMP)
484 6515b203 bellard
                    Store (PRQ2, Local0)
485 6515b203 bellard
                    If (LLess (Local0, 0x80))
486 6515b203 bellard
                    {
487 6515b203 bellard
                        ShiftLeft (One, Local0, TMP)
488 6515b203 bellard
                    }
489 6515b203 bellard
                    Else
490 6515b203 bellard
                    {
491 6515b203 bellard
                        Store (Zero, TMP)
492 6515b203 bellard
                    }
493 6515b203 bellard
                    Return (PRR0)
494 6515b203 bellard
                }
495 6515b203 bellard
                Method (_SRS, 1, NotSerialized)
496 6515b203 bellard
                {
497 6515b203 bellard
                    CreateWordField (Arg0, 0x01, TMP)
498 6515b203 bellard
                    FindSetRightBit (TMP, Local0)
499 6515b203 bellard
                    Decrement (Local0)
500 6515b203 bellard
                    Store (Local0, PRQ2)
501 6515b203 bellard
                }
502 6515b203 bellard
        }
503 6515b203 bellard
        Device(LNKD){
504 6515b203 bellard
                Name(_HID, EISAID("PNP0C0F"))     // PCI interrupt link
505 6515b203 bellard
                Name(_UID, 4)
506 6515b203 bellard
                Name(_PRS, ResourceTemplate(){
507 6515b203 bellard
                    IRQ (Level, ActiveLow, Shared)
508 6515b203 bellard
                        {3,4,5,6,7,9,10,11,12}
509 6515b203 bellard
                })
510 6515b203 bellard
                Method (_STA, 0, NotSerialized)
511 6515b203 bellard
                {
512 6515b203 bellard
                    Store (0x0B, Local0)
513 6515b203 bellard
                    If (And (0x80, PRQ3, Local1))
514 6515b203 bellard
                    {
515 6515b203 bellard
                         Store (0x09, Local0)
516 6515b203 bellard
                    }
517 6515b203 bellard
                    Return (Local0)
518 6515b203 bellard
                }
519 6515b203 bellard
                Method (_DIS, 0, NotSerialized)
520 6515b203 bellard
                {
521 6515b203 bellard
                    Or (PRQ3, 0x80, PRQ3)
522 6515b203 bellard
                }
523 6515b203 bellard
                Method (_CRS, 0, NotSerialized)
524 6515b203 bellard
                {
525 6515b203 bellard
                    Name (PRR0, ResourceTemplate ()
526 6515b203 bellard
                    {
527 6515b203 bellard
                        IRQ (Level, ActiveLow, Shared)
528 6515b203 bellard
                            {1}
529 6515b203 bellard
                    })
530 6515b203 bellard
                    CreateWordField (PRR0, 0x01, TMP)
531 6515b203 bellard
                    Store (PRQ3, Local0)
532 6515b203 bellard
                    If (LLess (Local0, 0x80))
533 6515b203 bellard
                    {
534 6515b203 bellard
                        ShiftLeft (One, Local0, TMP)
535 6515b203 bellard
                    }
536 6515b203 bellard
                    Else
537 6515b203 bellard
                    {
538 6515b203 bellard
                        Store (Zero, TMP)
539 6515b203 bellard
                    }
540 6515b203 bellard
                    Return (PRR0)
541 6515b203 bellard
                }
542 6515b203 bellard
                Method (_SRS, 1, NotSerialized)
543 6515b203 bellard
                {
544 6515b203 bellard
                    CreateWordField (Arg0, 0x01, TMP)
545 6515b203 bellard
                    FindSetRightBit (TMP, Local0)
546 6515b203 bellard
                    Decrement (Local0)
547 6515b203 bellard
                    Store (Local0, PRQ3)
548 6515b203 bellard
                }
549 6515b203 bellard
        }
550 6515b203 bellard
    }
551 6515b203 bellard
552 6515b203 bellard
    /* S5 = power off state */
553 6515b203 bellard
    Name (_S5, Package (4) {
554 6515b203 bellard
        0x00, // PM1a_CNT.SLP_TYP 
555 6515b203 bellard
        0x00, // PM2a_CNT.SLP_TYP 
556 6515b203 bellard
        0x00, // reserved
557 6515b203 bellard
        0x00, // reserved
558 6515b203 bellard
    })
559 6515b203 bellard
}