kvm: bios: provide _MAT to acpi processor
[kvm-userspace.git] / bios / acpi-dsdt.dsl
blob1e0bb5b04566b16bff5c3e95457ffb9d783c1b39
1 /*
2  * Bochs/QEMU ACPI DSDT ASL definition
3  *
4  * Copyright (c) 2006 Fabrice Bellard
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License version 2 as published by the Free Software Foundation.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18  */
19 DefinitionBlock (
20     "acpi-dsdt.aml",    // Output Filename
21     "DSDT",             // Signature
22     0x01,               // DSDT Compliance Revision
23     "BXPC",             // OEMID
24     "BXDSDT",           // TABLE ID
25     0x1                 // OEM Revision
26     )
28    Scope (\_PR)
29    {
30         OperationRegion( PRST, SystemIO, 0xaf00, 0x02)
31         Field (PRST, ByteAcc, NoLock, WriteAsZeros)
32         {
33                 PRU, 8,
34                 PRD, 8,
35         }
37         Processor (CPU0, 0x00, 0x0000b010, 0x06) {Method (_STA) { Return(0xF)}}
38         Processor (CPU1, 0x01, 0x0000b010, 0x06) {
39             Name (TMP, Buffer(0x8) {0x0, 0x8, 0x01, 0x01, 0x1, 0x0, 0x0, 0x0})
40             Method(_MAT, 0) {
41                 If (And(\_PR.PRU, 0x2)) { Return(TMP) }
42                 Else { Return(0x0) }
43             }
44             Method (_STA) {
45                 Return(0xF)
46             }
47         }
48         Processor (CPU2, 0x02, 0x0000b010, 0x06) {
49             Name (TMP, Buffer(0x8) {0x0, 0x8, 0x02, 0x02, 0x1, 0x0, 0x0, 0x0})
50             Method(_MAT, 0) {
51                 If (And(\_PR.PRU, 0x4)) { Return(TMP) }
52                 Else { Return(0x0) }
53             }
54             Method (_STA) {
55                 Return(0xF)
56             }
57         }
58         Processor (CPU3, 0x03, 0x0000b010, 0x06) {
59             Name (TMP, Buffer(0x8) {0x0, 0x8, 0x03, 0x03, 0x1, 0x0, 0x0, 0x0})
60             Method(_MAT, 0) {
61                 If (And(\_PR.PRU, 0x8)) { Return(TMP) }
62                 Else { Return(0x0) }
63             }
64             Method (_STA) {
65                 Return(0xF)
66             }
67         }
68         Processor (CPU4, 0x04, 0x0000b010, 0x06) {
69             Name (TMP, Buffer(0x8) {0x0, 0x8, 0x04, 0x04, 0x1, 0x0, 0x0, 0x0})
70             Method(_MAT, 0) {
71                 If (And(\_PR.PRU, 0x10)) { Return(TMP) }
72                 Else { Return(0x0) }
73             }
74             Method (_STA) {
75                 Return(0xF)
76             }
77         }
78         Processor (CPU5, 0x05, 0x0000b010, 0x06) {
79             Name (TMP, Buffer(0x8) {0x0, 0x8, 0x05, 0x05, 0x1, 0x0, 0x0, 0x0})
80             Method(_MAT, 0) {
81                 If (And(\_PR.PRU, 0x20)) { Return(TMP) }
82                 Else { Return(0x0) }
83             }
84             Method (_STA) {
85                 Return(0xF)
86             }
87         }
88         Processor (CPU6, 0x06, 0x0000b010, 0x06) {
89             Name (TMP, Buffer(0x8) {0x0, 0x8, 0x06, 0x06, 0x1, 0x0, 0x0, 0x0})
90             Method(_MAT, 0) {
91                 If (And(\_PR.PRU, 0x40)) { Return(TMP) }
92                 Else { Return(0x0) }
93             }
94             Method (_STA) {
95                 Return(0xF)
96             }
97         }
98         Processor (CPU7, 0x07, 0x0000b010, 0x06) {
99             Name (TMP, Buffer(0x8) {0x0, 0x8, 0x07, 0x07, 0x1, 0x0, 0x0, 0x0})
100             Method(_MAT, 0) {
101                 If (And(\_PR.PRU, 0x80)) { Return(TMP) }
102                 Else { Return(0x0) }
103             }
104             Method (_STA) {
105                 Return(0xF)
106             }
107         }
108         Processor (CPU8, 0x08, 0x0000b010, 0x06) {
109             Name (TMP, Buffer(0x8) {0x0, 0x8, 0x08, 0x08, 0x1, 0x0, 0x0, 0x0})
110             Method(_MAT, 0) {
111                 If (And(\_PR.PRU, 0x100)) { Return(TMP) }
112                 Else { Return(0x0) }
113             }
114             Method (_STA) {
115                 Return(0xF)
116             }
117         }
118         Processor (CPU9, 0x09, 0x0000b010, 0x06) {
119             Name (TMP, Buffer(0x8) {0x0, 0x8, 0x09, 0x09, 0x1, 0x0, 0x0, 0x0})
120             Method(_MAT, 0) {
121                 If (And(\_PR.PRU, 0x200)) { Return(TMP) }
122                 Else { Return(0x0) }
123             }
124             Method (_STA) {
125                 Return(0xF)
126             }
127         }
128         Processor (CPUA, 0x0a, 0x0000b010, 0x06) {
129             Name (TMP, Buffer(0x8) {0x0, 0x8, 0x0A, 0x0A, 0x1, 0x0, 0x0, 0x0})
130             Method(_MAT, 0) {
131                 If (And(\_PR.PRU, 0x400)) { Return(TMP) }
132                 Else { Return(0x0) }
133             }
134             Method (_STA) {
135                 Return(0xF)
136             }
137         }
138         Processor (CPUB, 0x0b, 0x0000b010, 0x06) {
139             Name (TMP, Buffer(0x8) {0x0, 0x8, 0x0B, 0x0B, 0x1, 0x0, 0x0, 0x0})
140             Method(_MAT, 0) {
141                 If (And(\_PR.PRU, 0x800)) { Return(TMP) }
142                 Else { Return(0x0) }
143             }
144             Method (_STA) {
145                 Return(0xF)
146             }
147         }
148         Processor (CPUC, 0x0c, 0x0000b010, 0x06) {
149             Name (TMP, Buffer(0x8) {0x0, 0x8, 0x0C, 0x0C, 0x1, 0x0, 0x0, 0x0})
150             Method(_MAT, 0) {
151                 If (And(\_PR.PRU, 0x1000)) { Return(TMP) }
152                 Else { Return(0x0) }
153             }
154             Method (_STA) {
155                 Return(0xF)
156             }
157         }
158         Processor (CPUD, 0x0d, 0x0000b010, 0x06) {
159             Name (TMP, Buffer(0x8) {0x0, 0x8, 0x0D, 0x0D, 0x1, 0x0, 0x0, 0x0})
160             Method(_MAT, 0) {
161                 If (And(\_PR.PRU, 0x2000)) { Return(TMP) }
162                 Else { Return(0x0) }
163             }
164             Method (_STA) {
165                 Return(0xF)
166             }
167         }
168         Processor (CPUE, 0x0e, 0x0000b010, 0x06) {
169             Name (TMP, Buffer(0x8) {0x0, 0x8, 0x0E, 0x0E, 0x1, 0x0, 0x0, 0x0})
170             Method(_MAT, 0) {
171                 If (And(\_PR.PRU, 0x4000)) { Return(TMP) }
172                 Else { Return(0x0) }
173             }
174             Method (_STA) {
175                 Return(0xF)
176             }
177         }
178     }
180     Scope (\)
181     {
182         /* CMOS memory access */
183         OperationRegion (CMS, SystemIO, 0x70, 0x02)
184         Field (CMS, ByteAcc, NoLock, Preserve)
185         {
186             CMSI,   8,
187             CMSD,   8
188         }
189         Method (CMRD, 1, NotSerialized)
190         {
191             Store (Arg0, CMSI)
192             Store (CMSD, Local0)
193             Return (Local0)
194         }
196         /* Debug Output */
197         OperationRegion (DBG, SystemIO, 0xb044, 0x04)
198         Field (DBG, DWordAcc, NoLock, Preserve)
199         {
200             DBGL,   32,
201         }
202     }
205     /* PCI Bus definition */
206     Scope(\_SB) {
207         Device(PCI0) {
208             Name (_HID, EisaId ("PNP0A03"))
209             Name (_ADR, 0x00)
210             Name (_UID, 1)
211             Name(_PRT, Package() {
212                 /* PCI IRQ routing table, example from ACPI 2.0a specification,
213                    section 6.2.8.1 */
214                 /* Note: we provide the same info as the PCI routing
215                    table of the Bochs BIOS */
217                 // PCI Slot 0
218                 Package() {0x0000ffff, 0, LNKD, 0},
219                 Package() {0x0000ffff, 1, LNKA, 0},
220                 Package() {0x0000ffff, 2, LNKB, 0},
221                 Package() {0x0000ffff, 3, LNKC, 0},
223                 // PCI Slot 1
224                 Package() {0x0001ffff, 0, LNKA, 0},
225                 Package() {0x0001ffff, 1, LNKB, 0},
226                 Package() {0x0001ffff, 2, LNKC, 0},
227                 Package() {0x0001ffff, 3, LNKD, 0},
229                 // PCI Slot 2
230                 Package() {0x0002ffff, 0, LNKB, 0},
231                 Package() {0x0002ffff, 1, LNKC, 0},
232                 Package() {0x0002ffff, 2, LNKD, 0},
233                 Package() {0x0002ffff, 3, LNKA, 0},
235                 // PCI Slot 3
236                 Package() {0x0003ffff, 0, LNKC, 0},
237                 Package() {0x0003ffff, 1, LNKD, 0},
238                 Package() {0x0003ffff, 2, LNKA, 0},
239                 Package() {0x0003ffff, 3, LNKB, 0},
241                 // PCI Slot 4
242                 Package() {0x0004ffff, 0, LNKD, 0},
243                 Package() {0x0004ffff, 1, LNKA, 0},
244                 Package() {0x0004ffff, 2, LNKB, 0},
245                 Package() {0x0004ffff, 3, LNKC, 0},
247                 // PCI Slot 5
248                 Package() {0x0005ffff, 0, LNKA, 0},
249                 Package() {0x0005ffff, 1, LNKB, 0},
250                 Package() {0x0005ffff, 2, LNKC, 0},
251                 Package() {0x0005ffff, 3, LNKD, 0},
252             })
254             Method (_CRS, 0, NotSerialized)
255             {
256             Name (MEMP, ResourceTemplate ()
257             {
258                 WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
259                     0x0000,             // Address Space Granularity
260                     0x0000,             // Address Range Minimum
261                     0x00FF,             // Address Range Maximum
262                     0x0000,             // Address Translation Offset
263                     0x0100,             // Address Length
264                     ,, )
265                 IO (Decode16,
266                     0x0CF8,             // Address Range Minimum
267                     0x0CF8,             // Address Range Maximum
268                     0x01,               // Address Alignment
269                     0x08,               // Address Length
270                     )
271                 WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
272                     0x0000,             // Address Space Granularity
273                     0x0000,             // Address Range Minimum
274                     0x0CF7,             // Address Range Maximum
275                     0x0000,             // Address Translation Offset
276                     0x0CF8,             // Address Length
277                     ,, , TypeStatic)
278                 WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
279                     0x0000,             // Address Space Granularity
280                     0x0D00,             // Address Range Minimum
281                     0xFFFF,             // Address Range Maximum
282                     0x0000,             // Address Translation Offset
283                     0xF300,             // Address Length
284                     ,, , TypeStatic)
285                 DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
286                     0x00000000,         // Address Space Granularity
287                     0x000A0000,         // Address Range Minimum
288                     0x000BFFFF,         // Address Range Maximum
289                     0x00000000,         // Address Translation Offset
290                     0x00020000,         // Address Length
291                     ,, , AddressRangeMemory, TypeStatic)
292                 DWordMemory (ResourceProducer, PosDecode, MinNotFixed, MaxFixed, NonCacheable, ReadWrite,
293                     0x00000000,         // Address Space Granularity
294                     0x00000000,         // Address Range Minimum
295                     0xFEBFFFFF,         // Address Range Maximum
296                     0x00000000,         // Address Translation Offset
297                     0x00000000,         // Address Length
298                     ,, MEMF, AddressRangeMemory, TypeStatic)
299             })
300                 CreateDWordField (MEMP, \_SB.PCI0._CRS.MEMF._MIN, PMIN)
301                 CreateDWordField (MEMP, \_SB.PCI0._CRS.MEMF._MAX, PMAX)
302                 CreateDWordField (MEMP, \_SB.PCI0._CRS.MEMF._LEN, PLEN)
303                 /* compute available RAM */
304                 Add(CMRD(0x34), ShiftLeft(CMRD(0x35), 8), Local0)
305                 ShiftLeft(Local0, 16, Local0)
306                 Add(Local0, 0x1000000, Local0)
307                 /* update field of last region */
308                 Store(Local0, PMIN)
309                 Subtract (PMAX, PMIN, PLEN)
310                 Increment (PLEN)
311                 Return (MEMP)
312             }
313         }
314     }
316     Scope(\_SB.PCI0) {
318         /* PIIX3 ISA bridge */
319         Device (ISA) {
320             Name (_ADR, 0x00010000)
322             /* PIIX PCI to ISA irq remapping */
323             OperationRegion (P40C, PCI_Config, 0x60, 0x04)
325             /* Real-time clock */
326             Device (RTC)
327             {
328                 Name (_HID, EisaId ("PNP0B00"))
329                 Name (_CRS, ResourceTemplate ()
330                 {
331                     IO (Decode16, 0x0070, 0x0070, 0x10, 0x02)
332                     IRQNoFlags () {8}
333                     IO (Decode16, 0x0072, 0x0072, 0x02, 0x06)
334                 })
335             }
337             /* Keyboard seems to be important for WinXP install */
338             Device (KBD)
339             {
340                 Name (_HID, EisaId ("PNP0303"))
341                 Method (_STA, 0, NotSerialized)
342                 {
343                     Return (0x0f)
344                 }
346                 Method (_CRS, 0, NotSerialized)
347                 {
348                      Name (TMP, ResourceTemplate ()
349                      {
350                     IO (Decode16,
351                         0x0060,             // Address Range Minimum
352                         0x0060,             // Address Range Maximum
353                         0x01,               // Address Alignment
354                         0x01,               // Address Length
355                         )
356                     IO (Decode16,
357                         0x0064,             // Address Range Minimum
358                         0x0064,             // Address Range Maximum
359                         0x01,               // Address Alignment
360                         0x01,               // Address Length
361                         )
362                     IRQNoFlags ()
363                         {1}
364                     })
365                     Return (TMP)
366                 }
367             }
369             /* PS/2 mouse */
370             Device (MOU)
371             {
372                 Name (_HID, EisaId ("PNP0F13"))
373                 Method (_STA, 0, NotSerialized)
374                 {
375                     Return (0x0f)
376                 }
378                 Method (_CRS, 0, NotSerialized)
379                 {
380                     Name (TMP, ResourceTemplate ()
381                     {
382                          IRQNoFlags () {12}
383                     })
384                     Return (TMP)
385                 }
386             }
388             /* PS/2 floppy controller */
389             Device (FDC0)
390             {
391                 Name (_HID, EisaId ("PNP0700"))
392                 Method (_STA, 0, NotSerialized)
393                 {
394                     Return (0x0F)
395                 }
396                 Method (_CRS, 0, NotSerialized)
397                 {
398                     Name (BUF0, ResourceTemplate ()
399                     {
400                         IO (Decode16, 0x03F2, 0x03F2, 0x00, 0x04)
401                         IO (Decode16, 0x03F7, 0x03F7, 0x00, 0x01)
402                         IRQNoFlags () {6}
403                         DMA (Compatibility, NotBusMaster, Transfer8) {2}
404                     })
405                     Return (BUF0)
406                 }
407             }
409             /* Parallel port */
410             Device (LPT)
411             {
412                 Name (_HID, EisaId ("PNP0400"))
413                 Method (_STA, 0, NotSerialized)
414                 {
415                     Store (\_SB.PCI0.PX13.DRSA, Local0)
416                     And (Local0, 0x80000000, Local0)
417                     If (LEqual (Local0, 0))
418                     {
419                         Return (0x00)
420                     }
421                     Else
422                     {
423                         Return (0x0F)
424                     }
425                 }
426                 Method (_CRS, 0, NotSerialized)
427                 {
428                     Name (BUF0, ResourceTemplate ()
429                     {
430                         IO (Decode16, 0x0378, 0x0378, 0x08, 0x08)
431                         IRQNoFlags () {7}
432                     })
433                     Return (BUF0)
434                 }
435             }
437             /* Serial Ports */
438             Device (COM1)
439             {
440                 Name (_HID, EisaId ("PNP0501"))
441                 Name (_UID, 0x01)
442                 Method (_STA, 0, NotSerialized)
443                 {
444                     Store (\_SB.PCI0.PX13.DRSC, Local0)
445                     And (Local0, 0x08000000, Local0)
446                     If (LEqual (Local0, 0))
447                     {
448                         Return (0x00)
449                     }
450                     Else
451                     {
452                         Return (0x0F)
453                     }
454                 }
455                 Method (_CRS, 0, NotSerialized)
456                 {
457                     Name (BUF0, ResourceTemplate ()
458                     {
459                         IO (Decode16, 0x03F8, 0x03F8, 0x00, 0x08)
460                         IRQNoFlags () {4}
461                     })
462                     Return (BUF0)
463                 }
464             }
466             Device (COM2)
467             {
468                 Name (_HID, EisaId ("PNP0501"))
469                 Name (_UID, 0x02)
470                 Method (_STA, 0, NotSerialized)
471                 {
472                     Store (\_SB.PCI0.PX13.DRSC, Local0)
473                     And (Local0, 0x80000000, Local0)
474                     If (LEqual (Local0, 0))
475                     {
476                         Return (0x00)
477                     }
478                     Else
479                     {
480                         Return (0x0F)
481                     }
482                 }
483                 Method (_CRS, 0, NotSerialized)
484                 {
485                     Name (BUF0, ResourceTemplate ()
486                     {
487                         IO (Decode16, 0x02F8, 0x02F8, 0x00, 0x08)
488                         IRQNoFlags () {3}
489                     })
490                     Return (BUF0)
491                 }
492             }
493         }
495         /* PIIX4 PM */
496         Device (PX13) {
497             Name (_ADR, 0x00010003)
499             OperationRegion (P13C, PCI_Config, 0x5c, 0x24)
500             Field (P13C, DWordAcc, NoLock, Preserve)
501             {
502                 DRSA, 32,
503                 DRSB, 32,
504                 DRSC, 32,
505                 DRSE, 32,
506                 DRSF, 32,
507                 DRSG, 32,
508                 DRSH, 32,
509                 DRSI, 32,
510                 DRSJ, 32
511             }
512         }
513     }
515     /* PCI IRQs */
516     Scope(\_SB) {
517          Field (\_SB.PCI0.ISA.P40C, ByteAcc, NoLock, Preserve)
518          {
519              PRQ0,   8,
520              PRQ1,   8,
521              PRQ2,   8,
522              PRQ3,   8
523          }
525         Device(LNKA){
526                 Name(_HID, EISAID("PNP0C0F"))     // PCI interrupt link
527                 Name(_UID, 1)
528                 Name(_PRS, ResourceTemplate(){
529                     Interrupt (, Level, ActiveHigh, Shared)
530                         { 5, 10, 11 }
531                 })
532                 Method (_STA, 0, NotSerialized)
533                 {
534                     Store (0x0B, Local0)
535                     If (And (0x80, PRQ0, Local1))
536                     {
537                          Store (0x09, Local0)
538                     }
539                     Return (Local0)
540                 }
541                 Method (_DIS, 0, NotSerialized)
542                 {
543                     Or (PRQ0, 0x80, PRQ0)
544                 }
545                 Method (_CRS, 0, NotSerialized)
546                 {
547                     Name (PRR0, ResourceTemplate ()
548                     {
549                         Interrupt (, Level, ActiveHigh, Shared)
550                             {1}
551                     })
552                     CreateDWordField (PRR0, 0x05, TMP)
553                     Store (PRQ0, Local0)
554                     If (LLess (Local0, 0x80))
555                     {
556                         Store (Local0, TMP)
557                     }
558                     Else
559                     {
560                         Store (Zero, TMP)
561                     }
562                     Return (PRR0)
563                 }
564                 Method (_SRS, 1, NotSerialized)
565                 {
566                     CreateDWordField (Arg0, 0x05, TMP)
567                     Store (TMP, PRQ0)
568                 }
569         }
570         Device(LNKB){
571                 Name(_HID, EISAID("PNP0C0F"))     // PCI interrupt link
572                 Name(_UID, 2)
573                 Name(_PRS, ResourceTemplate(){
574                     Interrupt (, Level, ActiveHigh, Shared)
575                         { 5, 10, 11 }
576                 })
577                 Method (_STA, 0, NotSerialized)
578                 {
579                     Store (0x0B, Local0)
580                     If (And (0x80, PRQ1, Local1))
581                     {
582                          Store (0x09, Local0)
583                     }
584                     Return (Local0)
585                 }
586                 Method (_DIS, 0, NotSerialized)
587                 {
588                     Or (PRQ1, 0x80, PRQ1)
589                 }
590                 Method (_CRS, 0, NotSerialized)
591                 {
592                     Name (PRR0, ResourceTemplate ()
593                     {
594                         Interrupt (, Level, ActiveHigh, Shared)
595                             {1}
596                     })
597                     CreateDWordField (PRR0, 0x05, TMP)
598                     Store (PRQ1, Local0)
599                     If (LLess (Local0, 0x80))
600                     {
601                         Store (Local0, TMP)
602                     }
603                     Else
604                     {
605                         Store (Zero, TMP)
606                     }
607                     Return (PRR0)
608                 }
609                 Method (_SRS, 1, NotSerialized)
610                 {
611                     CreateDWordField (Arg0, 0x05, TMP)
612                     Store (TMP, PRQ1)
613                 }
614         }
615         Device(LNKC){
616                 Name(_HID, EISAID("PNP0C0F"))     // PCI interrupt link
617                 Name(_UID, 3)
618                 Name(_PRS, ResourceTemplate(){
619                     Interrupt (, Level, ActiveHigh, Shared)
620                         { 5, 10, 11 }
621                 })
622                 Method (_STA, 0, NotSerialized)
623                 {
624                     Store (0x0B, Local0)
625                     If (And (0x80, PRQ2, Local1))
626                     {
627                          Store (0x09, Local0)
628                     }
629                     Return (Local0)
630                 }
631                 Method (_DIS, 0, NotSerialized)
632                 {
633                     Or (PRQ2, 0x80, PRQ2)
634                 }
635                 Method (_CRS, 0, NotSerialized)
636                 {
637                     Name (PRR0, ResourceTemplate ()
638                     {
639                         Interrupt (, Level, ActiveHigh, Shared)
640                             {1}
641                     })
642                     CreateDWordField (PRR0, 0x05, TMP)
643                     Store (PRQ2, Local0)
644                     If (LLess (Local0, 0x80))
645                     {
646                         Store (Local0, TMP)
647                     }
648                     Else
649                     {
650                         Store (Zero, TMP)
651                     }
652                     Return (PRR0)
653                 }
654                 Method (_SRS, 1, NotSerialized)
655                 {
656                     CreateDWordField (Arg0, 0x05, TMP)
657                     Store (TMP, PRQ2)
658                 }
659         }
660         Device(LNKD){
661                 Name(_HID, EISAID("PNP0C0F"))     // PCI interrupt link
662                 Name(_UID, 4)
663                 Name(_PRS, ResourceTemplate(){
664                     Interrupt (, Level, ActiveHigh, Shared)
665                         { 5, 10, 11 }
666                 })
667                 Method (_STA, 0, NotSerialized)
668                 {
669                     Store (0x0B, Local0)
670                     If (And (0x80, PRQ3, Local1))
671                     {
672                          Store (0x09, Local0)
673                     }
674                     Return (Local0)
675                 }
676                 Method (_DIS, 0, NotSerialized)
677                 {
678                     Or (PRQ3, 0x80, PRQ3)
679                 }
680                 Method (_CRS, 0, NotSerialized)
681                 {
682                     Name (PRR0, ResourceTemplate ()
683                     {
684                         Interrupt (, Level, ActiveHigh, Shared)
685                             {1}
686                     })
687                     CreateDWordField (PRR0, 0x05, TMP)
688                     Store (PRQ3, Local0)
689                     If (LLess (Local0, 0x80))
690                     {
691                         Store (Local0, TMP)
692                     }
693                     Else
694                     {
695                         Store (Zero, TMP)
696                     }
697                     Return (PRR0)
698                 }
699                 Method (_SRS, 1, NotSerialized)
700                 {
701                     CreateDWordField (Arg0, 0x05, TMP)
702                     Store (TMP, PRQ3)
703                 }
704         }
705     }
707     /* S5 = power off state */
708     Name (_S5, Package (4) {
709         0x00, // PM1a_CNT.SLP_TYP
710         0x00, // PM2a_CNT.SLP_TYP
711         0x00, // reserved
712         0x00, // reserved
713     })
714     Scope (\_GPE)
715     {
716         Method(_L00) {
717             /* Up status */
718             If (And(\_PR.PRU, 0x2)) {
719                 Notify(\_PR.CPU1,1)
720             }
722             If (And(\_PR.PRU, 0x4)) {
723                 Notify(\_PR.CPU2,1)
724             }
726             If (And(\_PR.PRU, 0x8)) {
727                 Notify(\_PR.CPU3,1)
728             }
730             If (And(\_PR.PRU, 0x10)) {
731                 Notify(\_PR.CPU4,1)
732             }
734             If (And(\_PR.PRU, 0x20)) {
735                 Notify(\_PR.CPU5,1)
736             }
738             If (And(\_PR.PRU, 0x40)) {
739                 Notify(\_PR.CPU6,1)
740             }
742             If (And(\_PR.PRU, 0x80)) {
743                 Notify(\_PR.CPU7,1)
744             }
746             If (And(\_PR.PRU, 0x100)) {
747                 Notify(\_PR.CPU8,1)
748             }
750             If (And(\_PR.PRU, 0x200)) {
751                 Notify(\_PR.CPU9,1)
752             }
754             If (And(\_PR.PRU, 0x400)) {
755                 Notify(\_PR.CPUA,1)
756             }
758             If (And(\_PR.PRU, 0x800)) {
759                 Notify(\_PR.CPUB,1)
760             }
762             If (And(\_PR.PRU, 0x1000)) {
763                 Notify(\_PR.CPUC,1)
764             }
766             If (And(\_PR.PRU, 0x2000)) {
767                 Notify(\_PR.CPUD,1)
768             }
770             If (And(\_PR.PRU, 0x4000)) {
771                 Notify(\_PR.CPUE,1)
772             }
774             /* Down status */
775             If (And(\_PR.PRD, 0x2)) {
776                 Notify(\_PR.CPU1,3)
777             }
779             If (And(\_PR.PRD, 0x4)) {
780                 Notify(\_PR.CPU2,3)
781             }
783             If (And(\_PR.PRD, 0x8)) {
784                 Notify(\_PR.CPU3,3)
785             }
787             If (And(\_PR.PRD, 0x10)) {
788                 Notify(\_PR.CPU4,3)
789             }
791             If (And(\_PR.PRD, 0x20)) {
792                 Notify(\_PR.CPU5,3)
793             }
795             If (And(\_PR.PRD, 0x40)) {
796                 Notify(\_PR.CPU6,3)
797             }
799             If (And(\_PR.PRD, 0x80)) {
800                 Notify(\_PR.CPU7,3)
801             }
803             If (And(\_PR.PRD, 0x100)) {
804                 Notify(\_PR.CPU8,3)
805             }
807             If (And(\_PR.PRD, 0x200)) {
808                 Notify(\_PR.CPU9,3)
809             }
811             If (And(\_PR.PRD, 0x400)) {
812                 Notify(\_PR.CPUA,3)
813             }
815             If (And(\_PR.PRD, 0x800)) {
816                 Notify(\_PR.CPUB,3)
817             }
819             If (And(\_PR.PRD, 0x1000)) {
820                 Notify(\_PR.CPUC,3)
821             }
823             If (And(\_PR.PRD, 0x2000)) {
824                 Notify(\_PR.CPUD,3)
825             }
827             If (And(\_PR.PRD, 0x4000)) {
828                 Notify(\_PR.CPUE,3)
829             }
831             Return(0x01)
832         }
833         Method(_L01) {
834             Return(0x01)
835         }
836         Method(_L02) {
837             Return(0x01)
838         }
839         Method(_L03) {
840             Return(0x01)
841         }
842         Method(_L04) {
843             Return(0x01)
844         }
845         Method(_L05) {
846             Return(0x01)
847         }
848         Method(_L06) {
849             Return(0x01)
850         }
851         Method(_L07) {
852             Return(0x01)
853         }
854         Method(_L08) {
855             Return(0x01)
856         }
857         Method(_L09) {
858             Return(0x01)
859         }
860         Method(_L0A) {
861             Return(0x01)
862         }
863         Method(_L0B) {
864             Return(0x01)
865         }
866         Method(_L0C) {
867             Return(0x01)
868         }
869         Method(_L0D) {
870             Return(0x01)
871         }
872         Method(_L0E) {
873             Return(0x01)
874         }
875         Method(_L0F) {
876             Return(0x01)
877         }
878     }