Ticket #567: dsdt_AWRDACPI.dsl

File dsdt_AWRDACPI.dsl, 145.6 KB (added by Lars Erdmann, 11 years ago)
Line 
1/*
2 * Intel ACPI Component Architecture
3 * AML Disassembler version 20120816-32 [Sep  6 2012]
4 * Copyright (c) 2000 - 2012 Intel Corporation
5 *
6 * Disassembly of (null), Sun Nov 25 08:33:30 2012
7 *
8 * Original Table Header:
9 *     Signature        "DSDT"
10 *     Length           0x000038BB (14523)
11 *     Revision         0x01 **** 32-bit table (V1), no 64-bit math support
12 *     Checksum         0x39
13 *     OEM ID           "AWARD "
14 *     OEM Table ID     "AWRDACPI"
15 *     OEM Revision     0x00001000 (4096)
16 *     Compiler ID      "MSFT"
17 *     Compiler Version 0x0100000D (16777229)
18 */
19
20DefinitionBlock ("DSDT.aml", "DSDT", 1, "AWARD ", "AWRDACPI", 0x00001000)
21{
22    Scope (\_PR)
23    {
24        Processor (\_PR.CPU0, 0x00, 0x00000000, 0x00) {}
25    }
26
27    Name (\_S0, Package (0x04)  // _S0_: S0 System State
28    {
29        0x00,
30        0x00,
31        0x00,
32        0x00
33    })
34    Name (\_S3, Package (0x04)  // _S3_: S3 System State
35    {
36        0x03,
37        0x01,
38        0x01,
39        0x01
40    })
41    Name (\_S4, Package (0x04)  // _S4_: S4 System State
42    {
43        0x04,
44        0x04,
45        0x04,
46        0x04
47    })
48    Name (\_S5, Package (0x04)  // _S5_: S5 System State
49    {
50        0x05,
51        0x05,
52        0x05,
53        0x05
54    })
55    OperationRegion (\DEBG, SystemIO, 0x80, 0x01)
56    Field (\DEBG, ByteAcc, NoLock, Preserve)
57    {
58        DBG1,   8
59    }
60
61    OperationRegion (\P01, SystemIO, 0x1001, 0x01)
62    Field (\P01, ByteAcc, NoLock, Preserve)
63    {
64        P1,     8
65    }
66
67    OperationRegion (PR48, SystemIO, 0x1048, 0x01)
68    Field (PR48, ByteAcc, NoLock, Preserve)
69    {
70        P48,    8
71    }
72
73    OperationRegion (\PR49, SystemIO, 0x1049, 0x01)
74    Field (\PR49, ByteAcc, NoLock, Preserve)
75    {
76        P49,    8
77    }
78
79    OperationRegion (\TRAP, SystemIO, 0x1050, 0x02)
80    Field (\TRAP, WordAcc, NoLock, Preserve)
81    {
82        TRA0,   16
83    }
84
85    OperationRegion (EXTM, SystemMemory, 0x000FF830, 0x10)
86    Field (EXTM, WordAcc, NoLock, Preserve)
87    {
88        ROM1,   16,
89        RMS1,   16,
90        ROM2,   16,
91        RMS2,   16,
92        ROM3,   16,
93        RMS3,   16,
94        AMEM,   32
95    }
96
97    OperationRegion (\PR20, SystemIO, 0x1020, 0x02)
98    Field (\PR20, WordAcc, NoLock, Preserve)
99    {
100        P20,    16
101    }
102
103    OperationRegion (\PR22, SystemIO, 0x1022, 0x02)
104    Field (\PR22, WordAcc, NoLock, Preserve)
105    {
106        P22,    16
107    }
108
109    OperationRegion (\PR30, SystemIO, 0x1030, 0x02)
110    Field (\PR30, WordAcc, NoLock, Preserve)
111    {
112        P30,    16
113    }
114
115    OperationRegion (\PR40, SystemIO, 0x1040, 0x01)
116    Field (\PR40, ByteAcc, NoLock, Preserve)
117    {
118        P40,    8
119    }
120
121    OperationRegion (\PR42, SystemIO, 0x1042, 0x01)
122    Field (\PR42, ByteAcc, NoLock, Preserve)
123    {
124        P42,    8
125    }
126
127    OperationRegion (\PR62, SystemIO, 0x1062, 0x02)
128    Field (\PR62, ByteAcc, NoLock, Preserve)
129    {
130        P62,    16
131    }
132
133    OperationRegion (\CGPO, SystemIO, 0x103A, 0x03)
134    Field (\CGPO, ByteAcc, NoLock, Preserve)
135    {
136        GP00,   1,
137        GP01,   1,
138        GP02,   1,
139        GP03,   1,
140        GP04,   1,
141        GP05,   1,
142        GP06,   1,
143        GP07,   1,
144        GP08,   1,
145        GP09,   1,
146        GP0A,   1,
147        GP0B,   1,
148        GP0C,   1,
149        GP0D,   1,
150        GP0E,   1,
151        GP0F,   1
152    }
153
154    Scope (\)
155    {
156        Name (PICF, 0x00)
157        Method (_PIC, 1, NotSerialized)  // _PIC: Interrupt Model
158        {
159            Store (Arg0, PICF)
160        }
161    }
162
163    Name (OSFL, 0x01)
164    Method (STRC, 2, NotSerialized)
165    {
166        If (LNotEqual (SizeOf (Arg0), SizeOf (Arg1)))
167        {
168            Return (0x00)
169        }
170
171        Add (SizeOf (Arg0), 0x01, Local0)
172        Name (BUF0, Buffer (Local0) {})
173        Name (BUF1, Buffer (Local0) {})
174        Store (Arg0, BUF0)
175        Store (Arg1, BUF1)
176        While (Local0)
177        {
178            Decrement (Local0)
179            If (LNotEqual (DerefOf (Index (BUF0, Local0)), DerefOf (Index (
180                BUF1, Local0))))
181            {
182                Return (Zero)
183            }
184        }
185
186        Return (One)
187    }
188
189    OperationRegion (RTCM, SystemIO, 0x70, 0x02)
190    Field (RTCM, ByteAcc, NoLock, Preserve)
191    {
192        CMIN,   8,
193        CMDA,   8
194    }
195
196    IndexField (CMIN, CMDA, ByteAcc, NoLock, Preserve)
197    {
198        Offset (0x0F),
199        SHUT,   8
200    }
201
202    OperationRegion (INFO, SystemMemory, 0x000FF840, 0x01)
203    Field (INFO, ByteAcc, NoLock, Preserve)
204    {
205        KBDI,   1,
206        RTCW,   1,
207        PS2F,   1,
208        IRFL,   2,
209        DISE,   1,
210        SSHU,   1
211    }
212
213    OperationRegion (BEEP, SystemIO, 0x61, 0x01)
214    Field (BEEP, ByteAcc, NoLock, Preserve)
215    {
216        S1B,    8
217    }
218
219    OperationRegion (CONT, SystemIO, 0x40, 0x04)
220    Field (CONT, ByteAcc, NoLock, Preserve)
221    {
222        CNT0,   8,
223        CNT1,   8,
224        CNT2,   8,
225        CTRL,   8
226    }
227
228    Method (SPKR, 1, NotSerialized)
229    {
230        Store (S1B, Local0)
231        Store (0xB6, CTRL)
232        Store (0x55, CNT2)
233        Store (0x03, CNT2)
234        Store (Arg0, Local2)
235        While (LGreater (Local2, 0x00))
236        {
237            Or (S1B, 0x03, S1B)
238            Store (0x5FFF, Local3)
239            While (LGreater (Local3, 0x00))
240            {
241                Decrement (Local3)
242            }
243
244            And (S1B, 0xFC, S1B)
245            Store (0x0EFF, Local3)
246            While (LGreater (Local3, 0x00))
247            {
248                Decrement (Local3)
249            }
250
251            Decrement (Local2)
252        }
253
254        Store (Local0, S1B)
255    }
256
257    Method (\_PTS, 1, NotSerialized)  // _PTS: Prepare To Sleep
258    {
259        Store (0xFF, P1)
260        If (LEqual (Arg0, 0x03))
261        {
262            Store (Arg0, P48)
263        }
264
265        Or (P62, 0x40, P62)
266        Store (0xFFFF, P20)
267        Store (0xFFFF, P30)
268        Or (Arg0, 0xF0, DBG1)
269    }
270
271    Method (\_WAK, 1, NotSerialized)  // _WAK: Wake
272    {
273        If (LEqual (Arg0, 0x04))
274        {
275            If (LEqual (OSFL, 0x00))
276            {
277                Store (0x58, P48)
278            }
279
280            If (LEqual (OSFL, 0x02))
281            {
282                Store (0x57, P48)
283            }
284
285            If (LEqual (OSFL, 0x01))
286            {
287                Store (0x56, P48)
288            }
289        }
290
291        If (LGreaterEqual (Arg0, 0x03))
292        {
293            Notify (\_SB.PCI0.USB0, 0x00)
294            Notify (\_SB.PCI0.USB1, 0x00)
295            Notify (\_SB.PCI0.USB0, 0x01)
296            Notify (\_SB.PCI0.USB1, 0x01)
297        }
298
299        Store (0xFF, DBG1)
300        Notify (\_SB.PCI0.UAR1, 0x00)
301        And (P62, 0xFFBF, P62)
302        Store (P40, Local0)
303        Store (Local0, P40)
304        If (LEqual (OSFL, 0x01))
305        {
306            Notify (\_SB.PWRB, 0x02)
307        }
308        Else
309        {
310            If (LEqual (Arg0, 0x01))
311            {
312                And (P1, 0x04, Local0)
313                If (LEqual (Local0, 0x00))
314                {
315                    Notify (\_SB.PWRB, 0x02)
316                }
317            }
318
319            If (LEqual (Arg0, 0x03))
320            {
321                If (LEqual (RTCW, Zero))
322                {
323                    Notify (\_SB.PWRB, 0x02)
324                }
325            }
326        }
327    }
328
329    Scope (\_SI)
330    {
331        Method (_MSG, 1, NotSerialized)  // _MSG: Message
332        {
333            Store (Local0, Local0)
334        }
335
336        Method (_SST, 1, NotSerialized)  // _SST: System Status
337        {
338            Store (Local0, Local0)
339        }
340    }
341
342    Scope (\_GPE)
343    {
344        Method (_L13, 0, NotSerialized)  // _Lxx: Level-Triggered GPE
345        {
346            Notify (\_SB.FUTS, 0x80)
347        }
348
349        Method (_L0E, 0, NotSerialized)  // _Lxx: Level-Triggered GPE
350        {
351            Notify (\_SB.PCI0.USB0, 0x02)
352        }
353
354        Method (_L04, 0, NotSerialized)  // _Lxx: Level-Triggered GPE
355        {
356            Notify (\_SB.PCI0.USB1, 0x02)
357        }
358
359        Method (_L07, 0, NotSerialized)  // _Lxx: Level-Triggered GPE
360        {
361            Notify (\_SB.PCI0.USB2, 0x02)
362        }
363
364        Method (_L06, 0, NotSerialized)  // _Lxx: Level-Triggered GPE
365        {
366            Notify (\_SB.PCI0.USB3, 0x02)
367        }
368
369        Method (_L05, 0, NotSerialized)  // _Lxx: Level-Triggered GPE
370        {
371            Notify (\_SB.PCI0.AMR0, 0x02)
372        }
373
374        Method (_L08, 0, NotSerialized)  // _Lxx: Level-Triggered GPE
375        {
376            Notify (\_SB.PCI0.UAR1, 0x00)
377        }
378
379        Method (_L0F, 0, NotSerialized)  // _Lxx: Level-Triggered GPE
380        {
381            Notify (\_SB.PCI0.PS2K, 0x00)
382        }
383
384        Method (_L0D, 0, NotSerialized)  // _Lxx: Level-Triggered GPE
385        {
386            Notify (\_SB.PCI0.PS2M, 0x00)
387        }
388
389        Method (_L0B, 0, NotSerialized)  // _Lxx: Level-Triggered GPE
390        {
391            Notify (\_SB.PCI0, 0x02)
392            Notify (\_SB.PCI0.PCI1, 0x02)
393            Notify (\_SB.PCI0.PCI2, 0x02)
394            Notify (\_SB.PCI0.PCI3, 0x02)
395            Notify (\_SB.PCI0.PCI4, 0x02)
396        }
397
398        Method (_L0C, 0, NotSerialized)  // _Lxx: Level-Triggered GPE
399        {
400            Notify (\_SB.PCI0.MAC0, 0x02)
401        }
402    }
403
404    Scope (\_SB)
405    {
406        Device (PWRB)
407        {
408            Name (_HID, EisaId ("PNP0C0C"))  // _HID: Hardware ID
409            Method (_STA, 0, NotSerialized)  // _STA: Status
410            {
411                Return (0x0B)
412            }
413        }
414
415        Device (FUTS)
416        {
417            Name (_HID, EisaId ("PNP0C0E"))  // _HID: Hardware ID
418            Method (_STA, 0, NotSerialized)  // _STA: Status
419            {
420                Return (0x0B)
421            }
422        }
423
424        Device (MEM)
425        {
426            Name (_HID, EisaId ("PNP0C01"))  // _HID: Hardware ID
427            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
428            {
429                Name (BUF0, ResourceTemplate ()
430                {
431                    Memory32Fixed (ReadWrite,
432                        0x000F0000,         // Address Base
433                        0x00004000,         // Address Length
434                        _Y00)
435                    Memory32Fixed (ReadWrite,
436                        0x000F4000,         // Address Base
437                        0x00004000,         // Address Length
438                        _Y01)
439                    Memory32Fixed (ReadWrite,
440                        0x000F8000,         // Address Base
441                        0x00004000,         // Address Length
442                        _Y02)
443                    Memory32Fixed (ReadWrite,
444                        0x000FC000,         // Address Base
445                        0x00004000,         // Address Length
446                        _Y03)
447                    Memory32Fixed (ReadWrite,
448                        0xFFFF0000,         // Address Base
449                        0x00010000,         // Address Length
450                        )
451                    Memory32Fixed (ReadWrite,
452                        0xFFEE0000,         // Address Base
453                        0x00020000,         // Address Length
454                        )
455                    Memory32Fixed (ReadWrite,
456                        0xFFFE0000,         // Address Base
457                        0x00010000,         // Address Length
458                        )
459                    Memory32Fixed (ReadWrite,
460                        0xFEC00000,         // Address Base
461                        0x00100000,         // Address Length
462                        )
463                    Memory32Fixed (ReadWrite,
464                        0xFEE00000,         // Address Base
465                        0x00100000,         // Address Length
466                        )
467                })
468                CreateDWordField (BUF0, \_SB.MEM._CRS._Y00._BAS, RMA1)  // _BAS: Base Address
469                CreateDWordField (BUF0, \_SB.MEM._CRS._Y00._LEN, RSS1)  // _LEN: Length
470                CreateDWordField (BUF0, \_SB.MEM._CRS._Y01._BAS, RMA2)  // _BAS: Base Address
471                CreateDWordField (BUF0, \_SB.MEM._CRS._Y01._LEN, RSS2)  // _LEN: Length
472                CreateDWordField (BUF0, \_SB.MEM._CRS._Y02._BAS, RMA3)  // _BAS: Base Address
473                CreateDWordField (BUF0, \_SB.MEM._CRS._Y02._LEN, RSS3)  // _LEN: Length
474                CreateDWordField (BUF0, \_SB.MEM._CRS._Y03._BAS, RMA4)  // _BAS: Base Address
475                CreateDWordField (BUF0, \_SB.MEM._CRS._Y03._LEN, RSS4)  // _LEN: Length
476                If (LNotEqual (ROM1, Zero))
477                {
478                    Store (RMA1, RMA2)
479                    ShiftLeft (ROM1, 0x08, Local0)
480                    Store (Local0, RMA1)
481                    ShiftLeft (RMS1, 0x08, Local0)
482                    Store (Local0, RSS1)
483                    Store (0x8000, RSS2)
484                }
485
486                If (LNotEqual (ROM2, Zero))
487                {
488                    Store (RMA2, RMA3)
489                    ShiftLeft (ROM2, 0x08, Local0)
490                    Store (Local0, RMA2)
491                    ShiftLeft (RMS2, 0x08, Local0)
492                    Store (Local0, RSS2)
493                    Store (0xC000, RSS3)
494                }
495
496                If (LNotEqual (ROM3, Zero))
497                {
498                    Store (RMA3, RMA4)
499                    ShiftLeft (ROM3, 0x08, Local0)
500                    Store (Local0, RMA3)
501                    ShiftLeft (RMS3, 0x08, Local0)
502                    Store (Local0, RSS3)
503                    Store (0x00010000, RSS4)
504                }
505
506                Return (BUF0)
507            }
508        }
509
510        Device (PCI0)
511        {
512            Name (_HID, EisaId ("PNP0A03"))  // _HID: Hardware ID
513            Name (_ADR, 0x00)  // _ADR: Address
514            Method (_S3D, 0, NotSerialized)  // _S3D: S3 Device State
515            {
516                If (LEqual (OSFL, 0x02))
517                {
518                    Return (0x02)
519                }
520                Else
521                {
522                    Return (0x03)
523                }
524            }
525
526            Device (IDEC)
527            {
528                Name (_ADR, 0x00020005)  // _ADR: Address
529                Name (IO5T, Package (0x03)
530                {
531                    Package (0x07)
532                    {
533                        0x78,
534                        0xB4,
535                        0x014A,
536                        0x0186,
537                        0x0258,
538                        0x78,
539                        0x96
540                    },
541
542                    Package (0x07)
543                    {
544                        0x06,
545                        0x07,
546                        0x1C,
547                        0x1C,
548                        0x1C,
549                        0x06,
550                        0x07
551                    },
552
553                    Package (0x07)
554                    {
555                        0x04,
556                        0x09,
557                        0x03,
558                        0x09,
559                        0x1E,
560                        0x04,
561                        0x06
562                    }
563                })
564                Name (IO6T, Package (0x03)
565                {
566                    Package (0x07)
567                    {
568                        0x78,
569                        0xB4,
570                        0x014A,
571                        0x0186,
572                        0x0258,
573                        0x78,
574                        0xB4
575                    },
576
577                    Package (0x07)
578                    {
579                        0x09,
580                        0x0A,
581                        0x26,
582                        0x26,
583                        0x26,
584                        0x09,
585                        0x0A
586                    },
587
588                    Package (0x07)
589                    {
590                        0x05,
591                        0x0C,
592                        0x04,
593                        0x0C,
594                        0x28,
595                        0x05,
596                        0x0C
597                    }
598                })
599                Name (UM5T, Package (0x06)
600                {
601                    0x0B,
602                    0x07,
603                    0x05,
604                    0x04,
605                    0x02,
606                    0x01
607                })
608                Name (UM6T, Package (0x07)
609                {
610                    0x0F,
611                    0x0A,
612                    0x07,
613                    0x05,
614                    0x03,
615                    0x02,
616                    0x01
617                })
618                Name (PIO5, Package (0x05)
619                {
620                    0x3A,
621                    0x25,
622                    0x1F,
623                    0x10,
624                    0x0A
625                })
626                Name (PIO6, Package (0x05)
627                {
628                    0x4E,
629                    0x32,
630                    0x2A,
631                    0x16,
632                    0x0E
633                })
634                Name (CRCT, Package (0x07)
635                {
636                    0x06,
637                    0x04,
638                    0x03,
639                    0x01,
640                    0x01,
641                    0x01,
642                    0x01
643                })
644                Name (INTT, Package (0x05)
645                {
646                    0x02,
647                    0x02,
648                    0x02,
649                    0x04,
650                    0x06
651                })
652                Name (DMAT, Package (0x05)
653                {
654                    0x00,
655                    0x01,
656                    0x01,
657                    0x01,
658                    0x02
659                })
660                Name (RMFL, 0x01)
661                OperationRegion (CF40, PCI_Config, 0x40, 0x18)
662                Field (CF40, WordAcc, NoLock, Preserve)
663                {
664                        ,   1,
665                    IOR0,   1,
666                    UDM0,   1,
667                    UM60,   1,
668                    UCT0,   4,
669                    CRC0,   4,
670                    INI0,   4,
671                    ATT0,   6,
672                    Offset (0x03),
673                    RCT0,   6,
674                    Offset (0x04),
675                        ,   1,
676                    IOR1,   1,
677                    UDM1,   1,
678                    UM61,   1,
679                    UCT1,   4,
680                    CRC1,   4,
681                    INI1,   4,
682                    ATT1,   6,
683                    Offset (0x07),
684                    RCT1,   6,
685                    Offset (0x08),
686                        ,   1,
687                    IOR2,   1,
688                    UDM2,   1,
689                    UM62,   1,
690                    UCT2,   4,
691                    CRC2,   4,
692                    INI2,   4,
693                    ATT2,   6,
694                    Offset (0x0B),
695                    RCT2,   6,
696                    Offset (0x0C),
697                        ,   1,
698                    IOR3,   1,
699                    UDM3,   1,
700                    UM63,   1,
701                    UCT3,   4,
702                    CRC3,   4,
703                    INI3,   4,
704                    ATT3,   6,
705                    Offset (0x0F),
706                    RCT3,   6,
707                    Offset (0x10),
708                        ,   1,
709                    CHE0,   1,
710                    Offset (0x12),
711                        ,   1,
712                    CHE1,   1,
713                    Offset (0x14),
714                        ,   30,
715                    REMP,   1,
716                    Offset (0x18)
717                }
718
719                Name (IDEP, Buffer (0x14) {})
720                CreateDWordField (IDEP, 0x00, GTM0)
721                CreateDWordField (IDEP, 0x04, GTM1)
722                CreateDWordField (IDEP, 0x08, GTM2)
723                CreateDWordField (IDEP, 0x0C, GTM3)
724                CreateDWordField (IDEP, 0x10, GTM4)
725                Device (IDE0)
726                {
727                    Name (_ADR, 0x00)  // _ADR: Address
728                    Method (_GTM, 0, NotSerialized)  // _GTM: Get Timing Mode
729                    {
730                        Store (0xFFFFFFFF, Local0)
731                        Store (0xFFFFFFFF, Local1)
732                        Store (0xFFFFFFFF, Local2)
733                        Store (0xFFFFFFFF, Local3)
734                        Store (0x10, Local4)
735                        Store (REMP, RMFL)
736                        Store (0x00, REMP)
737                        If (CHE0)
738                        {
739                            If (LNotEqual (ATT0, 0x00))
740                            {
741                                Add (RCT0, 0x01, Local5)
742                                Add (ATT0, 0x01, Local6)
743                                Add (Local5, Local6, Local5)
744                                Multiply (UM60, 0x05, Local6)
745                                Subtract (0x14, Local6, Local7)
746                                Multiply (Local5, Local7, Local0)
747                                ShiftRight (Local0, 0x01, Local0)
748                                If (LLessEqual (Local0, 0xB4))
749                                {
750                                    Store (Local0, Local1)
751                                }
752
753                                If (IOR0)
754                                {
755                                    Or (Local4, 0x02, Local4)
756                                }
757
758                                If (UDM0)
759                                {
760                                    Add (UCT0, 0x01, Local5)
761                                    Multiply (Local5, Local7, Local6)
762                                    ShiftRight (Local6, 0x01, Local1)
763                                    Or (Local4, 0x01, Local4)
764                                }
765                            }
766
767                            If (LNotEqual (ATT1, 0x00))
768                            {
769                                Add (RCT1, 0x01, Local5)
770                                Add (ATT1, 0x01, Local6)
771                                Add (Local5, Local6, Local5)
772                                Multiply (UM61, 0x05, Local6)
773                                Subtract (0x14, Local6, Local7)
774                                Multiply (Local5, Local7, Local2)
775                                ShiftRight (Local2, 0x01, Local2)
776                                If (LLessEqual (Local2, 0xB4))
777                                {
778                                    Store (Local2, Local3)
779                                }
780
781                                If (IOR1)
782                                {
783                                    Or (Local4, 0x08, Local4)
784                                }
785
786                                If (UDM1)
787                                {
788                                    Add (UCT1, 0x01, Local5)
789                                    Multiply (Local5, Local7, Local6)
790                                    ShiftRight (Local6, 0x01, Local3)
791                                    Or (Local4, 0x04, Local4)
792                                }
793                            }
794                        }
795
796                        Store (RMFL, REMP)
797                        Store (Local0, GTM0)
798                        Store (Local1, GTM1)
799                        Store (Local2, GTM2)
800                        Store (Local3, GTM3)
801                        Store (Local4, GTM4)
802                        Return (IDEP)
803                    }
804
805                    Method (_STM, 3, NotSerialized)  // _STM: Set Timing Mode
806                    {
807                        Store (Arg0, IDEP)
808                        Store (GTM0, Local0)
809                        Store (GTM1, Local1)
810                        Store (GTM2, Local2)
811                        Store (GTM3, Local3)
812                        Store (GTM4, Local4)
813                        Store (REMP, RMFL)
814                        Store (0x00, REMP)
815                        If (LAnd (LNotEqual (Local1, 0xFFFFFFFF), LNotEqual (Local1, 0x00)))
816                        {
817                            If (And (Local4, 0x01))
818                            {
819                                Store (0x01, UDM0)
820                                If (LLess (Local1, 0x14))
821                                {
822                                    Store (0x01, UM60)
823                                    Store (0x01, UCT0)
824                                }
825                                Else
826                                {
827                                    Store (0x00, UM60)
828                                    Divide (Local1, 0x0A, Local6, Local5)
829                                    Decrement (Local5)
830                                    Store (Local5, UCT0)
831                                    Store (Match (UM5T, MEQ, Local5, MTR, 0x00, 0x00), Local5)
832                                    Store (DerefOf (Index (CRCT, Local5)), CRC0)
833                                }
834                            }
835                        }
836
837                        If (LAnd (LNotEqual (Local0, 0xFFFFFFFF), LNotEqual (Local0, 0x00)))
838                        {
839                            If (UM60)
840                            {
841                                Store (Match (DerefOf (Index (IO6T, 0x00)), MEQ, Local0, MTR,
842                                    0x00, 0x00), Local6)
843                                Store (DerefOf (Index (DerefOf (Index (IO6T, 0x01)), Local6)),
844                                    ATT0)
845                                Store (DerefOf (Index (DerefOf (Index (IO6T, 0x02)), Local6)),
846                                    RCT0)
847                            }
848                            Else
849                            {
850                                Store (Match (DerefOf (Index (IO5T, 0x00)), MEQ, Local0, MTR,
851                                    0x00, 0x00), Local6)
852                                Store (DerefOf (Index (DerefOf (Index (IO5T, 0x01)), Local6)),
853                                    ATT0)
854                                Store (DerefOf (Index (DerefOf (Index (IO5T, 0x02)), Local6)),
855                                    RCT0)
856                                Store (DerefOf (Index (INTT, Local6)), INI0)
857                            }
858                        }
859
860                        If (LAnd (LNotEqual (Local3, 0xFFFFFFFF), LNotEqual (Local3, 0x00)))
861                        {
862                            If (And (Local4, 0x04))
863                            {
864                                Store (0x01, UDM1)
865                                If (LLess (Local3, 0x14))
866                                {
867                                    Store (0x01, UM61)
868                                    Store (0x01, UCT1)
869                                }
870                                Else
871                                {
872                                    Store (0x00, UM61)
873                                    Divide (Local3, 0x0A, Local6, Local5)
874                                    Decrement (Local5)
875                                    Store (Local5, UCT1)
876                                    Store (Match (UM5T, MEQ, Local5, MTR, 0x00, 0x00), Local5)
877                                    Store (DerefOf (Index (CRCT, Local5)), CRC1)
878                                }
879                            }
880                        }
881
882                        If (LAnd (LNotEqual (Local2, 0xFFFFFFFF), LNotEqual (Local2, 0x00)))
883                        {
884                            If (UM61)
885                            {
886                                Store (Match (DerefOf (Index (IO6T, 0x00)), MEQ, Local2, MTR,
887                                    0x00, 0x00), Local6)
888                                Store (DerefOf (Index (DerefOf (Index (IO6T, 0x01)), Local6)),
889                                    ATT1)
890                                Store (DerefOf (Index (DerefOf (Index (IO6T, 0x02)), Local6)),
891                                    RCT1)
892                            }
893                            Else
894                            {
895                                Store (Match (DerefOf (Index (IO5T, 0x00)), MEQ, Local2, MTR,
896                                    0x00, 0x00), Local6)
897                                Store (DerefOf (Index (DerefOf (Index (IO5T, 0x01)), Local6)),
898                                    ATT1)
899                                Store (DerefOf (Index (DerefOf (Index (IO5T, 0x02)), Local6)),
900                                    RCT1)
901                                Store (DerefOf (Index (INTT, Local6)), INI1)
902                            }
903                        }
904
905                        Store (RMFL, REMP)
906                    }
907
908                    Device (DRV0)
909                    {
910                        Name (_ADR, 0x00)  // _ADR: Address
911                        Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
912                        {
913                            Store (Buffer (0x07)
914                                {
915                                     0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
916                                }, Local6)
917                            Store (Buffer (0x07)
918                                {
919                                     0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
920                                }, Local7)
921                            CreateByteField (Local6, 0x01, MODE)
922                            CreateByteField (Local7, 0x01, UMOD)
923                            Store (REMP, RMFL)
924                            Store (0x00, REMP)
925                            If (LNotEqual (ATT0, 0x00))
926                            {
927                                Add (ATT0, RCT0, Local5)
928                                If (UM60)
929                                {
930                                    Store (Match (PIO6, MEQ, Local5, MTR, 0x00, 0x00), MODE)
931                                }
932                                Else
933                                {
934                                    Store (Match (PIO5, MEQ, Local5, MTR, 0x00, 0x00), MODE)
935                                }
936
937                                If (UDM0)
938                                {
939                                    If (UM60)
940                                    {
941                                        Store (Match (UM6T, MEQ, UCT0, MTR, 0x00, 0x00), UMOD)
942                                    }
943                                    Else
944                                    {
945                                        Store (Match (UM5T, MEQ, UCT0, MTR, 0x00, 0x00), UMOD)
946                                    }
947
948                                    Or (UMOD, 0x40, UMOD)
949                                }
950                                Else
951                                {
952                                    Store (DerefOf (Index (DMAT, MODE)), UMOD)
953                                    Or (UMOD, 0x20, UMOD)
954                                }
955
956                                Or (MODE, 0x08, MODE)
957                            }
958
959                            Store (RMFL, REMP)
960                            Concatenate (Local6, Local7, Local5)
961                            Concatenate (Local5, Buffer (0x07)
962                                {
963                                     0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xF5
964                                }, Local0)
965                            Return (Local0)
966                        }
967                    }
968
969                    Device (DRV1)
970                    {
971                        Name (_ADR, 0x01)  // _ADR: Address
972                        Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
973                        {
974                            Store (Buffer (0x07)
975                                {
976                                     0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
977                                }, Local6)
978                            Store (Buffer (0x07)
979                                {
980                                     0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
981                                }, Local7)
982                            CreateByteField (Local6, 0x01, MODE)
983                            CreateByteField (Local7, 0x01, UMOD)
984                            Store (REMP, RMFL)
985                            Store (0x00, REMP)
986                            If (LNotEqual (ATT1, 0x00))
987                            {
988                                Add (ATT1, RCT1, Local5)
989                                If (UM61)
990                                {
991                                    Store (Match (PIO6, MEQ, Local5, MTR, 0x00, 0x00), MODE)
992                                }
993                                Else
994                                {
995                                    Store (Match (PIO5, MEQ, Local5, MTR, 0x00, 0x00), MODE)
996                                }
997
998                                If (UDM1)
999                                {
1000                                    If (UM61)
1001                                    {
1002                                        Store (Match (UM6T, MEQ, UCT1, MTR, 0x00, 0x00), UMOD)
1003                                    }
1004                                    Else
1005                                    {
1006                                        Store (Match (UM5T, MEQ, UCT1, MTR, 0x00, 0x00), UMOD)
1007                                    }
1008
1009                                    Or (UMOD, 0x40, UMOD)
1010                                }
1011                                Else
1012                                {
1013                                    Store (DerefOf (Index (DMAT, MODE)), UMOD)
1014                                    Or (UMOD, 0x20, UMOD)
1015                                }
1016
1017                                Or (MODE, 0x08, MODE)
1018                            }
1019
1020                            Store (RMFL, REMP)
1021                            Concatenate (Local6, Local7, Local5)
1022                            Concatenate (Local5, Buffer (0x07)
1023                                {
1024                                     0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xF5
1025                                }, Local0)
1026                            Return (Local0)
1027                        }
1028                    }
1029                }
1030
1031                Device (IDE1)
1032                {
1033                    Name (_ADR, 0x01)  // _ADR: Address
1034                    Method (_GTM, 0, NotSerialized)  // _GTM: Get Timing Mode
1035                    {
1036                        Store (0xFFFFFFFF, Local0)
1037                        Store (0xFFFFFFFF, Local1)
1038                        Store (0xFFFFFFFF, Local2)
1039                        Store (0xFFFFFFFF, Local3)
1040                        Store (0x10, Local4)
1041                        Store (REMP, RMFL)
1042                        Store (0x00, REMP)
1043                        If (CHE1)
1044                        {
1045                            If (LNotEqual (ATT2, 0x00))
1046                            {
1047                                Add (RCT2, 0x01, Local5)
1048                                Add (ATT2, 0x01, Local6)
1049                                Add (Local5, Local6, Local5)
1050                                Multiply (UM62, 0x05, Local6)
1051                                Subtract (0x14, Local6, Local7)
1052                                Multiply (Local5, Local7, Local0)
1053                                ShiftRight (Local0, 0x01, Local0)
1054                                If (LLessEqual (Local0, 0xB4))
1055                                {
1056                                    Store (Local0, Local1)
1057                                }
1058
1059                                If (IOR2)
1060                                {
1061                                    Or (Local4, 0x02, Local4)
1062                                }
1063
1064                                If (UDM2)
1065                                {
1066                                    Add (UCT2, 0x01, Local5)
1067                                    Multiply (Local5, Local7, Local6)
1068                                    ShiftRight (Local6, 0x01, Local1)
1069                                    Or (Local4, 0x01, Local4)
1070                                }
1071                            }
1072
1073                            If (LNotEqual (ATT3, 0x00))
1074                            {
1075                                Add (RCT3, 0x01, Local5)
1076                                Add (ATT3, 0x01, Local6)
1077                                Add (Local5, Local6, Local5)
1078                                Multiply (UM63, 0x05, Local6)
1079                                Subtract (0x14, Local6, Local7)
1080                                Multiply (Local5, Local7, Local2)
1081                                ShiftRight (Local2, 0x01, Local2)
1082                                If (LLessEqual (Local2, 0xB4))
1083                                {
1084                                    Store (Local2, Local3)
1085                                }
1086
1087                                If (IOR3)
1088                                {
1089                                    Or (Local4, 0x08, Local4)
1090                                }
1091
1092                                If (UDM3)
1093                                {
1094                                    Add (UCT3, 0x01, Local5)
1095                                    Multiply (Local5, Local7, Local6)
1096                                    ShiftRight (Local6, 0x01, Local3)
1097                                    Or (Local4, 0x04, Local4)
1098                                }
1099                            }
1100                        }
1101
1102                        Store (RMFL, REMP)
1103                        Store (Local0, GTM0)
1104                        Store (Local1, GTM1)
1105                        Store (Local2, GTM2)
1106                        Store (Local3, GTM3)
1107                        Store (Local4, GTM4)
1108                        Return (IDEP)
1109                    }
1110
1111                    Method (_STM, 3, NotSerialized)  // _STM: Set Timing Mode
1112                    {
1113                        Store (Arg0, IDEP)
1114                        Store (GTM0, Local0)
1115                        Store (GTM1, Local1)
1116                        Store (GTM2, Local2)
1117                        Store (GTM3, Local3)
1118                        Store (GTM4, Local4)
1119                        Store (REMP, RMFL)
1120                        Store (0x00, REMP)
1121                        If (LAnd (LNotEqual (Local1, 0xFFFFFFFF), LNotEqual (Local1, 0x00)))
1122                        {
1123                            If (And (Local4, 0x01))
1124                            {
1125                                Store (0x01, UDM2)
1126                                If (LLess (Local1, 0x14))
1127                                {
1128                                    Store (0x01, UM62)
1129                                    Store (0x01, UCT2)
1130                                }
1131                                Else
1132                                {
1133                                    Store (0x00, UM62)
1134                                    Divide (Local1, 0x0A, Local6, Local5)
1135                                    Decrement (Local5)
1136                                    Store (Local5, UCT2)
1137                                    Store (Match (UM5T, MEQ, Local5, MTR, 0x00, 0x00), Local5)
1138                                    Store (DerefOf (Index (CRCT, Local5)), CRC2)
1139                                }
1140                            }
1141                        }
1142
1143                        If (LAnd (LNotEqual (Local0, 0xFFFFFFFF), LNotEqual (Local0, 0x00)))
1144                        {
1145                            If (UM62)
1146                            {
1147                                Store (Match (DerefOf (Index (IO6T, 0x00)), MEQ, Local0, MTR,
1148                                    0x00, 0x00), Local6)
1149                                Store (DerefOf (Index (DerefOf (Index (IO6T, 0x01)), Local6)),
1150                                    ATT2)
1151                                Store (DerefOf (Index (DerefOf (Index (IO6T, 0x02)), Local6)),
1152                                    RCT2)
1153                            }
1154                            Else
1155                            {
1156                                Store (Match (DerefOf (Index (IO5T, 0x00)), MEQ, Local0, MTR,
1157                                    0x00, 0x00), Local6)
1158                                Store (DerefOf (Index (DerefOf (Index (IO5T, 0x01)), Local6)),
1159                                    ATT2)
1160                                Store (DerefOf (Index (DerefOf (Index (IO5T, 0x02)), Local6)),
1161                                    RCT2)
1162                                Store (DerefOf (Index (INTT, Local6)), INI2)
1163                            }
1164                        }
1165
1166                        If (LAnd (LNotEqual (Local3, 0xFFFFFFFF), LNotEqual (Local3, 0x00)))
1167                        {
1168                            If (And (Local4, 0x04))
1169                            {
1170                                Store (0x01, UDM3)
1171                                If (LLess (Local3, 0x14))
1172                                {
1173                                    Store (0x01, UM63)
1174                                    Store (0x01, UCT3)
1175                                }
1176                                Else
1177                                {
1178                                    Store (0x00, UM63)
1179                                    Divide (Local3, 0x0A, Local6, Local5)
1180                                    Decrement (Local5)
1181                                    Store (Local5, UCT3)
1182                                    Store (Match (UM5T, MEQ, Local5, MTR, 0x00, 0x00), Local5)
1183                                    Store (DerefOf (Index (CRCT, Local5)), CRC3)
1184                                }
1185                            }
1186                        }
1187
1188                        If (LAnd (LNotEqual (Local2, 0xFFFFFFFF), LNotEqual (Local2, 0x00)))
1189                        {
1190                            If (UM63)
1191                            {
1192                                Store (Match (DerefOf (Index (IO6T, 0x00)), MEQ, Local2, MTR,
1193                                    0x00, 0x00), Local6)
1194                                Store (DerefOf (Index (DerefOf (Index (IO6T, 0x01)), Local6)),
1195                                    ATT3)
1196                                Store (DerefOf (Index (DerefOf (Index (IO6T, 0x02)), Local6)),
1197                                    RCT3)
1198                            }
1199                            Else
1200                            {
1201                                Store (Match (DerefOf (Index (IO5T, 0x00)), MEQ, Local2, MTR,
1202                                    0x00, 0x00), Local6)
1203                                Store (DerefOf (Index (DerefOf (Index (IO5T, 0x01)), Local6)),
1204                                    ATT3)
1205                                Store (DerefOf (Index (DerefOf (Index (IO5T, 0x02)), Local6)),
1206                                    RCT3)
1207                                Store (DerefOf (Index (INTT, Local6)), INI3)
1208                            }
1209                        }
1210
1211                        Store (RMFL, REMP)
1212                    }
1213
1214                    Device (DRV0)
1215                    {
1216                        Name (_ADR, 0x00)  // _ADR: Address
1217                        Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
1218                        {
1219                            Store (Buffer (0x07)
1220                                {
1221                                     0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
1222                                }, Local6)
1223                            Store (Buffer (0x07)
1224                                {
1225                                     0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
1226                                }, Local7)
1227                            CreateByteField (Local6, 0x01, MODE)
1228                            CreateByteField (Local7, 0x01, UMOD)
1229                            Store (REMP, RMFL)
1230                            Store (0x00, REMP)
1231                            If (LNotEqual (ATT2, 0x00))
1232                            {
1233                                Add (ATT2, RCT2, Local5)
1234                                If (UM62)
1235                                {
1236                                    Store (Match (PIO6, MEQ, Local5, MTR, 0x00, 0x00), MODE)
1237                                }
1238                                Else
1239                                {
1240                                    Store (Match (PIO5, MEQ, Local5, MTR, 0x00, 0x00), MODE)
1241                                }
1242
1243                                If (UDM2)
1244                                {
1245                                    If (UM62)
1246                                    {
1247                                        Store (Match (UM6T, MEQ, UCT2, MTR, 0x00, 0x00), UMOD)
1248                                    }
1249                                    Else
1250                                    {
1251                                        Store (Match (UM5T, MEQ, UCT2, MTR, 0x00, 0x00), UMOD)
1252                                    }
1253
1254                                    Or (UMOD, 0x40, UMOD)
1255                                }
1256                                Else
1257                                {
1258                                    Store (DerefOf (Index (DMAT, MODE)), UMOD)
1259                                    Or (UMOD, 0x20, UMOD)
1260                                }
1261
1262                                Or (MODE, 0x08, MODE)
1263                            }
1264
1265                            Store (RMFL, REMP)
1266                            Concatenate (Local6, Local7, Local5)
1267                            Concatenate (Local5, Buffer (0x07)
1268                                {
1269                                     0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xF5
1270                                }, Local0)
1271                            Return (Local0)
1272                        }
1273                    }
1274
1275                    Device (DRV1)
1276                    {
1277                        Name (_ADR, 0x01)  // _ADR: Address
1278                        Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
1279                        {
1280                            Store (Buffer (0x07)
1281                                {
1282                                     0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
1283                                }, Local6)
1284                            Store (Buffer (0x07)
1285                                {
1286                                     0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
1287                                }, Local7)
1288                            CreateByteField (Local6, 0x01, MODE)
1289                            CreateByteField (Local7, 0x01, UMOD)
1290                            Store (REMP, RMFL)
1291                            Store (0x00, REMP)
1292                            If (LNotEqual (ATT3, 0x00))
1293                            {
1294                                Add (ATT3, RCT3, Local5)
1295                                If (UM63)
1296                                {
1297                                    Store (Match (PIO6, MEQ, Local5, MTR, 0x00, 0x00), MODE)
1298                                }
1299                                Else
1300                                {
1301                                    Store (Match (PIO5, MEQ, Local5, MTR, 0x00, 0x00), MODE)
1302                                }
1303
1304                                If (UDM3)
1305                                {
1306                                    If (UM63)
1307                                    {
1308                                        Store (Match (UM6T, MEQ, UCT3, MTR, 0x00, 0x00), UMOD)
1309                                    }
1310                                    Else
1311                                    {
1312                                        Store (Match (UM5T, MEQ, UCT3, MTR, 0x00, 0x00), UMOD)
1313                                    }
1314
1315                                    Or (UMOD, 0x40, UMOD)
1316                                }
1317                                Else
1318                                {
1319                                    Store (DerefOf (Index (DMAT, MODE)), UMOD)
1320                                    Or (UMOD, 0x20, UMOD)
1321                                }
1322
1323                                Or (MODE, 0x08, MODE)
1324                            }
1325
1326                            Store (RMFL, REMP)
1327                            Concatenate (Local6, Local7, Local5)
1328                            Concatenate (Local5, Buffer (0x07)
1329                                {
1330                                     0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xF5
1331                                }, Local0)
1332                            Return (Local0)
1333                        }
1334                    }
1335                }
1336            }
1337
1338            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
1339            {
1340                Name (BUF0, ResourceTemplate ()
1341                {
1342                    WordBusNumber (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode,
1343                        0x0000,             // Granularity
1344                        0x0000,             // Range Minimum
1345                        0x00FF,             // Range Maximum
1346                        0x0000,             // Translation Offset
1347                        0x0100,             // Length
1348                        ,, )
1349                    IO (Decode16,
1350                        0x0CF8,             // Range Minimum
1351                        0x0CF8,             // Range Maximum
1352                        0x01,               // Alignment
1353                        0x08,               // Length
1354                        )
1355                    WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
1356                        0x0000,             // Granularity
1357                        0x0000,             // Range Minimum
1358                        0x047F,             // Range Maximum
1359                        0x0000,             // Translation Offset
1360                        0x0480,             // Length
1361                        ,, , TypeStatic)
1362                    IO (Decode16,
1363                        0x0480,             // Range Minimum
1364                        0x0480,             // Range Maximum
1365                        0x01,               // Alignment
1366                        0x10,               // Length
1367                        )
1368                    WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
1369                        0x0000,             // Granularity
1370                        0x0490,             // Range Minimum
1371                        0x0CF7,             // Range Maximum
1372                        0x0000,             // Translation Offset
1373                        0x0868,             // Length
1374                        ,, , TypeStatic)
1375                    WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
1376                        0x0000,             // Granularity
1377                        0x0D00,             // Range Minimum
1378                        0x0FFF,             // Range Maximum
1379                        0x0000,             // Translation Offset
1380                        0x0300,             // Length
1381                        ,, , TypeStatic)
1382                    IO (Decode16,
1383                        0x1000,             // Range Minimum
1384                        0x1000,             // Range Maximum
1385                        0x01,               // Alignment
1386                        0xC0,               // Length
1387                        )
1388                    IO (Decode16,
1389                        0x10C0,             // Range Minimum
1390                        0x10C0,             // Range Maximum
1391                        0x01,               // Alignment
1392                        0x40,               // Length
1393                        )
1394                    WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
1395                        0x0000,             // Granularity
1396                        0x1100,             // Range Minimum
1397                        0xFFFF,             // Range Maximum
1398                        0x0000,             // Translation Offset
1399                        0xEF00,             // Length
1400                        ,, , TypeStatic)
1401                    DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
1402                        0x00000000,         // Granularity
1403                        0x000A0000,         // Range Minimum
1404                        0x000BFFFF,         // Range Maximum
1405                        0x00000000,         // Translation Offset
1406                        0x00020000,         // Length
1407                        ,, , AddressRangeMemory, TypeStatic)
1408                    DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
1409                        0x00000000,         // Granularity
1410                        0x00100000,         // Range Minimum
1411                        0xFEBFFFFF,         // Range Maximum
1412                        0x00000000,         // Translation Offset
1413                        0xFFF00000,         // Length
1414                        ,, _Y04, AddressRangeMemory, TypeStatic)
1415                })
1416                CreateDWordField (BUF0, \_SB.PCI0._CRS._Y04._MIN, TCMM)  // _MIN: Minimum Base Address
1417                CreateDWordField (BUF0, \_SB.PCI0._CRS._Y04._LEN, TOMM)  // _LEN: Length
1418                Add (AMEM, 0x00010000, TCMM)
1419                Subtract (0xFEC00000, TCMM, TOMM)
1420                Return (BUF0)
1421            }
1422
1423            Name (PICM, Package (0x1E)
1424            {
1425                Package (0x04)
1426                {
1427                    0x0006FFFF,
1428                    0x00,
1429                    \_SB.PCI0.LNKB,
1430                    0x00
1431                },
1432
1433                Package (0x04)
1434                {
1435                    0x0006FFFF,
1436                    0x01,
1437                    \_SB.PCI0.LNKC,
1438                    0x00
1439                },
1440
1441                Package (0x04)
1442                {
1443                    0x0006FFFF,
1444                    0x02,
1445                    \_SB.PCI0.LNKD,
1446                    0x00
1447                },
1448
1449                Package (0x04)
1450                {
1451                    0x0006FFFF,
1452                    0x03,
1453                    \_SB.PCI0.LNKA,
1454                    0x00
1455                },
1456
1457                Package (0x04)
1458                {
1459                    0x0007FFFF,
1460                    0x00,
1461                    \_SB.PCI0.LNKC,
1462                    0x00
1463                },
1464
1465                Package (0x04)
1466                {
1467                    0x0007FFFF,
1468                    0x01,
1469                    \_SB.PCI0.LNKD,
1470                    0x00
1471                },
1472
1473                Package (0x04)
1474                {
1475                    0x0007FFFF,
1476                    0x02,
1477                    \_SB.PCI0.LNKA,
1478                    0x00
1479                },
1480
1481                Package (0x04)
1482                {
1483                    0x0007FFFF,
1484                    0x03,
1485                    \_SB.PCI0.LNKB,
1486                    0x00
1487                },
1488
1489                Package (0x04)
1490                {
1491                    0x0008FFFF,
1492                    0x00,
1493                    \_SB.PCI0.LNKD,
1494                    0x00
1495                },
1496
1497                Package (0x04)
1498                {
1499                    0x0008FFFF,
1500                    0x01,
1501                    \_SB.PCI0.LNKA,
1502                    0x00
1503                },
1504
1505                Package (0x04)
1506                {
1507                    0x0008FFFF,
1508                    0x02,
1509                    \_SB.PCI0.LNKB,
1510                    0x00
1511                },
1512
1513                Package (0x04)
1514                {
1515                    0x0008FFFF,
1516                    0x03,
1517                    \_SB.PCI0.LNKC,
1518                    0x00
1519                },
1520
1521                Package (0x04)
1522                {
1523                    0x000AFFFF,
1524                    0x00,
1525                    \_SB.PCI0.LNKB,
1526                    0x00
1527                },
1528
1529                Package (0x04)
1530                {
1531                    0x000AFFFF,
1532                    0x01,
1533                    \_SB.PCI0.LNKC,
1534                    0x00
1535                },
1536
1537                Package (0x04)
1538                {
1539                    0x000AFFFF,
1540                    0x02,
1541                    \_SB.PCI0.LNKD,
1542                    0x00
1543                },
1544
1545                Package (0x04)
1546                {
1547                    0x000AFFFF,
1548                    0x03,
1549                    \_SB.PCI0.LNKA,
1550                    0x00
1551                },
1552
1553                Package (0x04)
1554                {
1555                    0x0002FFFF,
1556                    0x00,
1557                    \_SB.PCI0.LNKA,
1558                    0x00
1559                },
1560
1561                Package (0x04)
1562                {
1563                    0x0002FFFF,
1564                    0x01,
1565                    \_SB.PCI0.LNKB,
1566                    0x00
1567                },
1568
1569                Package (0x04)
1570                {
1571                    0x0002FFFF,
1572                    0x02,
1573                    \_SB.PCI0.LNKC,
1574                    0x00
1575                },
1576
1577                Package (0x04)
1578                {
1579                    0x0002FFFF,
1580                    0x03,
1581                    \_SB.PCI0.LNKD,
1582                    0x00
1583                },
1584
1585                Package (0x04)
1586                {
1587                    0x0003FFFF,
1588                    0x00,
1589                    \_SB.PCI0.LNKE,
1590                    0x00
1591                },
1592
1593                Package (0x04)
1594                {
1595                    0x0003FFFF,
1596                    0x01,
1597                    \_SB.PCI0.LNKF,
1598                    0x00
1599                },
1600
1601                Package (0x04)
1602                {
1603                    0x0003FFFF,
1604                    0x02,
1605                    \_SB.PCI0.LNKG,
1606                    0x00
1607                },
1608
1609                Package (0x04)
1610                {
1611                    0x0003FFFF,
1612                    0x03,
1613                    \_SB.PCI0.LNKH,
1614                    0x00
1615                },
1616
1617                Package (0x04)
1618                {
1619                    0x0004FFFF,
1620                    0x00,
1621                    \_SB.PCI0.LNKD,
1622                    0x00
1623                },
1624
1625                Package (0x04)
1626                {
1627                    0x0004FFFF,
1628                    0x01,
1629                    \_SB.PCI0.LNKA,
1630                    0x00
1631                },
1632
1633                Package (0x04)
1634                {
1635                    0x0004FFFF,
1636                    0x02,
1637                    \_SB.PCI0.LNKB,
1638                    0x00
1639                },
1640
1641                Package (0x04)
1642                {
1643                    0x0004FFFF,
1644                    0x03,
1645                    \_SB.PCI0.LNKC,
1646                    0x00
1647                },
1648
1649                Package (0x04)
1650                {
1651                    0x0001FFFF,
1652                    0x00,
1653                    \_SB.PCI0.LNKA,
1654                    0x00
1655                },
1656
1657                Package (0x04)
1658                {
1659                    0x0001FFFF,
1660                    0x01,
1661                    \_SB.PCI0.LNKB,
1662                    0x00
1663                }
1664            })
1665            Name (APIC, Package (0x1E)
1666            {
1667                Package (0x04)
1668                {
1669                    0x0006FFFF,
1670                    0x00,
1671                    0x00,
1672                    0x11
1673                },
1674
1675                Package (0x04)
1676                {
1677                    0x0006FFFF,
1678                    0x01,
1679                    0x00,
1680                    0x12
1681                },
1682
1683                Package (0x04)
1684                {
1685                    0x0006FFFF,
1686                    0x02,
1687                    0x00,
1688                    0x13
1689                },
1690
1691                Package (0x04)
1692                {
1693                    0x0006FFFF,
1694                    0x03,
1695                    0x00,
1696                    0x10
1697                },
1698
1699                Package (0x04)
1700                {
1701                    0x0007FFFF,
1702                    0x00,
1703                    0x00,
1704                    0x12
1705                },
1706
1707                Package (0x04)
1708                {
1709                    0x0007FFFF,
1710                    0x01,
1711                    0x00,
1712                    0x13
1713                },
1714
1715                Package (0x04)
1716                {
1717                    0x0007FFFF,
1718                    0x02,
1719                    0x00,
1720                    0x10
1721                },
1722
1723                Package (0x04)
1724                {
1725                    0x0007FFFF,
1726                    0x03,
1727                    0x00,
1728                    0x11
1729                },
1730
1731                Package (0x04)
1732                {
1733                    0x0008FFFF,
1734                    0x00,
1735                    0x00,
1736                    0x13
1737                },
1738
1739                Package (0x04)
1740                {
1741                    0x0008FFFF,
1742                    0x01,
1743                    0x00,
1744                    0x10
1745                },
1746
1747                Package (0x04)
1748                {
1749                    0x0008FFFF,
1750                    0x02,
1751                    0x00,
1752                    0x11
1753                },
1754
1755                Package (0x04)
1756                {
1757                    0x0008FFFF,
1758                    0x03,
1759                    0x00,
1760                    0x12
1761                },
1762
1763                Package (0x04)
1764                {
1765                    0x000AFFFF,
1766                    0x00,
1767                    0x00,
1768                    0x11
1769                },
1770
1771                Package (0x04)
1772                {
1773                    0x000AFFFF,
1774                    0x01,
1775                    0x00,
1776                    0x12
1777                },
1778
1779                Package (0x04)
1780                {
1781                    0x000AFFFF,
1782                    0x02,
1783                    0x00,
1784                    0x13
1785                },
1786
1787                Package (0x04)
1788                {
1789                    0x000AFFFF,
1790                    0x03,
1791                    0x00,
1792                    0x10
1793                },
1794
1795                Package (0x04)
1796                {
1797                    0x0002FFFF,
1798                    0x00,
1799                    0x00,
1800                    0x10
1801                },
1802
1803                Package (0x04)
1804                {
1805                    0x0002FFFF,
1806                    0x01,
1807                    0x00,
1808                    0x11
1809                },
1810
1811                Package (0x04)
1812                {
1813                    0x0002FFFF,
1814                    0x02,
1815                    0x00,
1816                    0x12
1817                },
1818
1819                Package (0x04)
1820                {
1821                    0x0002FFFF,
1822                    0x03,
1823                    0x00,
1824                    0x13
1825                },
1826
1827                Package (0x04)
1828                {
1829                    0x0003FFFF,
1830                    0x00,
1831                    0x00,
1832                    0x14
1833                },
1834
1835                Package (0x04)
1836                {
1837                    0x0003FFFF,
1838                    0x01,
1839                    0x00,
1840                    0x15
1841                },
1842
1843                Package (0x04)
1844                {
1845                    0x0003FFFF,
1846                    0x02,
1847                    0x00,
1848                    0x16
1849                },
1850
1851                Package (0x04)
1852                {
1853                    0x0003FFFF,
1854                    0x03,
1855                    0x00,
1856                    0x17
1857                },
1858
1859                Package (0x04)
1860                {
1861                    0x0004FFFF,
1862                    0x00,
1863                    0x00,
1864                    0x13
1865                },
1866
1867                Package (0x04)
1868                {
1869                    0x0004FFFF,
1870                    0x01,
1871                    0x00,
1872                    0x10
1873                },
1874
1875                Package (0x04)
1876                {
1877                    0x0004FFFF,
1878                    0x02,
1879                    0x00,
1880                    0x11
1881                },
1882
1883                Package (0x04)
1884                {
1885                    0x0004FFFF,
1886                    0x03,
1887                    0x00,
1888                    0x12
1889                },
1890
1891                Package (0x04)
1892                {
1893                    0x0001FFFF,
1894                    0x00,
1895                    0x00,
1896                    0x10
1897                },
1898
1899                Package (0x04)
1900                {
1901                    0x0001FFFF,
1902                    0x01,
1903                    0x00,
1904                    0x11
1905                }
1906            })
1907            Method (_PRT, 0, NotSerialized)  // _PRT: PCI Routing Table
1908            {
1909                If (LNot (PICF))
1910                {
1911                    Return (PICM)
1912                }
1913                Else
1914                {
1915                    Return (APIC)
1916                }
1917            }
1918
1919            Device (PCI1)
1920            {
1921                Name (_BBN, 0x00)  // _BBN: BIOS Bus Number
1922                Name (_ADR, 0x0006FFFF)  // _ADR: Address
1923            }
1924
1925            Device (PCI2)
1926            {
1927                Name (_BBN, 0x00)  // _BBN: BIOS Bus Number
1928                Name (_ADR, 0x0007FFFF)  // _ADR: Address
1929            }
1930
1931            Device (PCI3)
1932            {
1933                Name (_BBN, 0x00)  // _BBN: BIOS Bus Number
1934                Name (_ADR, 0x0008FFFF)  // _ADR: Address
1935            }
1936
1937            Device (PCI4)
1938            {
1939                Name (_BBN, 0x00)  // _BBN: BIOS Bus Number
1940                Name (_ADR, 0x000AFFFF)  // _ADR: Address
1941            }
1942
1943            Device (S962)
1944            {
1945                Name (_ADR, 0x00020000)  // _ADR: Address
1946                OperationRegion (PIRQ, PCI_Config, 0x41, 0x04)
1947                Scope (\)
1948                {
1949                    Field (\_SB.PCI0.S962.PIRQ, ByteAcc, NoLock, Preserve)
1950                    {
1951                        PIRA,   8,
1952                        PIRB,   8,
1953                        PIRC,   8,
1954                        PIRD,   8
1955                    }
1956                }
1957
1958                OperationRegion (PIR2, PCI_Config, 0x60, 0x04)
1959                Scope (\)
1960                {
1961                    Field (\_SB.PCI0.S962.PIR2, ByteAcc, NoLock, Preserve)
1962                    {
1963                        PIRE,   8,
1964                        PIRF,   8,
1965                        PIRG,   8,
1966                        PIRH,   8
1967                    }
1968                }
1969
1970                OperationRegion (APCE, PCI_Config, 0x48, 0x01)
1971                Scope (\)
1972                {
1973                    Field (\_SB.PCI0.S962.APCE, ByteAcc, NoLock, Preserve)
1974                    {
1975                        APC0,   8
1976                    }
1977                }
1978
1979                OperationRegion (VERG, PCI_Config, 0xF0, 0x01)
1980                Scope (\)
1981                {
1982                    Field (\_SB.PCI0.S962.VERG, ByteAcc, NoLock, Preserve)
1983                    {
1984                        SBVR,   8
1985                    }
1986                }
1987
1988                OperationRegion (PS2M, PCI_Config, 0x47, 0x01)
1989                Scope (\)
1990                {
1991                    Field (\_SB.PCI0.S962.PS2M, ByteAcc, NoLock, Preserve)
1992                    {
1993                        PS2S,   8
1994                    }
1995                }
1996            }
1997
1998            Scope (\)
1999            {
2000                Method (DISD, 1, NotSerialized)
2001                {
2002                }
2003
2004                Method (CKIO, 2, NotSerialized)
2005                {
2006                }
2007
2008                Method (SLDM, 2, NotSerialized)
2009                {
2010                }
2011            }
2012
2013            Device (USB0)
2014            {
2015                Name (_ADR, 0x00030000)  // _ADR: Address
2016                Method (_S3D, 0, NotSerialized)  // _S3D: S3 Device State
2017                {
2018                    If (LEqual (OSFL, 0x02))
2019                    {
2020                        Return (0x02)
2021                    }
2022                    Else
2023                    {
2024                        Return (0x03)
2025                    }
2026                }
2027            }
2028
2029            Device (USB1)
2030            {
2031                Name (_ADR, 0x00030001)  // _ADR: Address
2032                Method (_S3D, 0, NotSerialized)  // _S3D: S3 Device State
2033                {
2034                    If (LEqual (OSFL, 0x02))
2035                    {
2036                        Return (0x02)
2037                    }
2038                    Else
2039                    {
2040                        Return (0x03)
2041                    }
2042                }
2043            }
2044
2045            Device (USB2)
2046            {
2047                Name (_ADR, 0x00030002)  // _ADR: Address
2048                Method (_S3D, 0, NotSerialized)  // _S3D: S3 Device State
2049                {
2050                    If (LEqual (OSFL, 0x02))
2051                    {
2052                        Return (0x02)
2053                    }
2054                    Else
2055                    {
2056                        Return (0x03)
2057                    }
2058                }
2059            }
2060
2061            Device (USB3)
2062            {
2063                Name (_ADR, 0x00030003)  // _ADR: Address
2064                Method (_S3D, 0, NotSerialized)  // _S3D: S3 Device State
2065                {
2066                    If (LEqual (OSFL, 0x02))
2067                    {
2068                        Return (0x02)
2069                    }
2070                    Else
2071                    {
2072                        Return (0x03)
2073                    }
2074                }
2075            }
2076
2077            Device (MAC0)
2078            {
2079                Name (_ADR, 0x00040000)  // _ADR: Address
2080            }
2081
2082            Device (AUD0)
2083            {
2084                Name (_ADR, 0x00020007)  // _ADR: Address
2085            }
2086
2087            Device (AMR0)
2088            {
2089                Name (_ADR, 0x00020006)  // _ADR: Address
2090            }
2091
2092            Name (BUFA, ResourceTemplate ()
2093            {
2094                IRQ (Level, ActiveLow, Shared, )
2095                    {3,4,5,6,7,9,10,11,12,14,15}
2096            })
2097            Name (BUFB, ResourceTemplate ()
2098            {
2099                IRQ (Level, ActiveLow, Shared, _Y05)
2100                    {}
2101            })
2102            CreateWordField (BUFB, \_SB.PCI0._Y05._INT, IRQV)  // _INT: Interrupts
2103            Device (LNKA)
2104            {
2105                Name (_HID, EisaId ("PNP0C0F"))  // _HID: Hardware ID
2106                Name (_UID, 0x01)  // _UID: Unique ID
2107                Method (_STA, 0, NotSerialized)  // _STA: Status
2108                {
2109                    And (PIRA, 0x80, Local0)
2110                    If (LEqual (Local0, 0x80))
2111                    {
2112                        Return (0x09)
2113                    }
2114                    Else
2115                    {
2116                        Return (0x0B)
2117                    }
2118                }
2119
2120                Method (_PRS, 0, NotSerialized)  // _PRS: Possible Resource Settings
2121                {
2122                    Return (BUFA)
2123                }
2124
2125                Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
2126                {
2127                    Or (PIRA, 0x80, PIRA)
2128                }
2129
2130                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
2131                {
2132                    And (PIRA, 0x0F, Local0)
2133                    ShiftLeft (0x01, Local0, IRQV)
2134                    Return (BUFB)
2135                }
2136
2137                Method (_SRS, 1, NotSerialized)  // _SRS: Set Resource Settings
2138                {
2139                    CreateWordField (Arg0, 0x01, IRQ1)
2140                    FindSetRightBit (IRQ1, Local0)
2141                    Decrement (Local0)
2142                    Store (Local0, PIRA)
2143                }
2144            }
2145
2146            Device (LNKB)
2147            {
2148                Name (_HID, EisaId ("PNP0C0F"))  // _HID: Hardware ID
2149                Name (_UID, 0x02)  // _UID: Unique ID
2150                Method (_STA, 0, NotSerialized)  // _STA: Status
2151                {
2152                    And (PIRB, 0x80, Local0)
2153                    If (LEqual (Local0, 0x80))
2154                    {
2155                        Return (0x09)
2156                    }
2157                    Else
2158                    {
2159                        Return (0x0B)
2160                    }
2161                }
2162
2163                Method (_PRS, 0, NotSerialized)  // _PRS: Possible Resource Settings
2164                {
2165                    Return (BUFA)
2166                }
2167
2168                Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
2169                {
2170                    Or (PIRB, 0x80, PIRB)
2171                }
2172
2173                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
2174                {
2175                    And (PIRB, 0x0F, Local0)
2176                    ShiftLeft (0x01, Local0, IRQV)
2177                    Return (BUFB)
2178                }
2179
2180                Method (_SRS, 1, NotSerialized)  // _SRS: Set Resource Settings
2181                {
2182                    CreateWordField (Arg0, 0x01, IRQ1)
2183                    FindSetRightBit (IRQ1, Local0)
2184                    Decrement (Local0)
2185                    Store (Local0, PIRB)
2186                }
2187            }
2188
2189            Device (LNKC)
2190            {
2191                Name (_HID, EisaId ("PNP0C0F"))  // _HID: Hardware ID
2192                Name (_UID, 0x03)  // _UID: Unique ID
2193                Method (_STA, 0, NotSerialized)  // _STA: Status
2194                {
2195                    And (PIRC, 0x80, Local0)
2196                    If (LEqual (Local0, 0x80))
2197                    {
2198                        Return (0x09)
2199                    }
2200                    Else
2201                    {
2202                        Return (0x0B)
2203                    }
2204                }
2205
2206                Method (_PRS, 0, NotSerialized)  // _PRS: Possible Resource Settings
2207                {
2208                    Return (BUFA)
2209                }
2210
2211                Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
2212                {
2213                    Or (PIRC, 0x80, PIRC)
2214                }
2215
2216                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
2217                {
2218                    And (PIRC, 0x0F, Local0)
2219                    ShiftLeft (0x01, Local0, IRQV)
2220                    Return (BUFB)
2221                }
2222
2223                Method (_SRS, 1, NotSerialized)  // _SRS: Set Resource Settings
2224                {
2225                    CreateWordField (Arg0, 0x01, IRQ1)
2226                    FindSetRightBit (IRQ1, Local0)
2227                    Decrement (Local0)
2228                    Store (Local0, PIRC)
2229                }
2230            }
2231
2232            Device (LNKD)
2233            {
2234                Name (_HID, EisaId ("PNP0C0F"))  // _HID: Hardware ID
2235                Name (_UID, 0x04)  // _UID: Unique ID
2236                Method (_STA, 0, NotSerialized)  // _STA: Status
2237                {
2238                    And (PIRD, 0x80, Local0)
2239                    If (LEqual (Local0, 0x80))
2240                    {
2241                        Return (0x09)
2242                    }
2243                    Else
2244                    {
2245                        Return (0x0B)
2246                    }
2247                }
2248
2249                Method (_PRS, 0, NotSerialized)  // _PRS: Possible Resource Settings
2250                {
2251                    Return (BUFA)
2252                }
2253
2254                Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
2255                {
2256                    Or (PIRD, 0x80, PIRD)
2257                }
2258
2259                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
2260                {
2261                    And (PIRD, 0x0F, Local0)
2262                    ShiftLeft (0x01, Local0, IRQV)
2263                    Return (BUFB)
2264                }
2265
2266                Method (_SRS, 1, NotSerialized)  // _SRS: Set Resource Settings
2267                {
2268                    CreateWordField (Arg0, 0x01, IRQ1)
2269                    FindSetRightBit (IRQ1, Local0)
2270                    Decrement (Local0)
2271                    Store (Local0, PIRD)
2272                }
2273            }
2274
2275            Device (LNKE)
2276            {
2277                Name (_HID, EisaId ("PNP0C0F"))  // _HID: Hardware ID
2278                Name (_UID, 0x05)  // _UID: Unique ID
2279                Method (_STA, 0, NotSerialized)  // _STA: Status
2280                {
2281                    And (PIRE, 0x80, Local0)
2282                    If (LEqual (Local0, 0x80))
2283                    {
2284                        Return (0x09)
2285                    }
2286                    Else
2287                    {
2288                        Return (0x0B)
2289                    }
2290                }
2291
2292                Method (_PRS, 0, NotSerialized)  // _PRS: Possible Resource Settings
2293                {
2294                    Return (BUFA)
2295                }
2296
2297                Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
2298                {
2299                    Or (PIRE, 0x80, PIRE)
2300                }
2301
2302                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
2303                {
2304                    And (PIRE, 0x0F, Local0)
2305                    ShiftLeft (0x01, Local0, IRQV)
2306                    Return (BUFB)
2307                }
2308
2309                Method (_SRS, 1, NotSerialized)  // _SRS: Set Resource Settings
2310                {
2311                    CreateWordField (Arg0, 0x01, IRQ1)
2312                    FindSetRightBit (IRQ1, Local0)
2313                    Decrement (Local0)
2314                    Store (Local0, PIRE)
2315                }
2316            }
2317
2318            Device (LNKF)
2319            {
2320                Name (_HID, EisaId ("PNP0C0F"))  // _HID: Hardware ID
2321                Name (_UID, 0x06)  // _UID: Unique ID
2322                Method (_STA, 0, NotSerialized)  // _STA: Status
2323                {
2324                    And (PIRF, 0x80, Local0)
2325                    If (LEqual (Local0, 0x80))
2326                    {
2327                        Return (0x09)
2328                    }
2329                    Else
2330                    {
2331                        Return (0x0B)
2332                    }
2333                }
2334
2335                Method (_PRS, 0, NotSerialized)  // _PRS: Possible Resource Settings
2336                {
2337                    Return (BUFA)
2338                }
2339
2340                Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
2341                {
2342                    Or (PIRF, 0x80, PIRF)
2343                }
2344
2345                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
2346                {
2347                    And (PIRF, 0x0F, Local0)
2348                    ShiftLeft (0x01, Local0, IRQV)
2349                    Return (BUFB)
2350                }
2351
2352                Method (_SRS, 1, NotSerialized)  // _SRS: Set Resource Settings
2353                {
2354                    CreateWordField (Arg0, 0x01, IRQ1)
2355                    FindSetRightBit (IRQ1, Local0)
2356                    Decrement (Local0)
2357                    Store (Local0, PIRF)
2358                }
2359            }
2360
2361            Device (LNKG)
2362            {
2363                Name (_HID, EisaId ("PNP0C0F"))  // _HID: Hardware ID
2364                Name (_UID, 0x07)  // _UID: Unique ID
2365                Method (_STA, 0, NotSerialized)  // _STA: Status
2366                {
2367                    And (PIRG, 0x80, Local0)
2368                    If (LEqual (Local0, 0x80))
2369                    {
2370                        Return (0x09)
2371                    }
2372                    Else
2373                    {
2374                        Return (0x0B)
2375                    }
2376                }
2377
2378                Method (_PRS, 0, NotSerialized)  // _PRS: Possible Resource Settings
2379                {
2380                    Return (BUFA)
2381                }
2382
2383                Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
2384                {
2385                    Or (PIRG, 0x80, PIRG)
2386                }
2387
2388                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
2389                {
2390                    And (PIRG, 0x0F, Local0)
2391                    ShiftLeft (0x01, Local0, IRQV)
2392                    Return (BUFB)
2393                }
2394
2395                Method (_SRS, 1, NotSerialized)  // _SRS: Set Resource Settings
2396                {
2397                    CreateWordField (Arg0, 0x01, IRQ1)
2398                    FindSetRightBit (IRQ1, Local0)
2399                    Decrement (Local0)
2400                    Store (Local0, PIRG)
2401                }
2402            }
2403
2404            Device (LNKH)
2405            {
2406                Name (_HID, EisaId ("PNP0C0F"))  // _HID: Hardware ID
2407                Name (_UID, 0x08)  // _UID: Unique ID
2408                Method (_STA, 0, NotSerialized)  // _STA: Status
2409                {
2410                    And (PIRH, 0x80, Local0)
2411                    If (LEqual (Local0, 0x80))
2412                    {
2413                        Return (0x09)
2414                    }
2415                    Else
2416                    {
2417                        Return (0x0B)
2418                    }
2419                }
2420
2421                Method (_PRS, 0, NotSerialized)  // _PRS: Possible Resource Settings
2422                {
2423                    Return (BUFA)
2424                }
2425
2426                Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
2427                {
2428                    Or (PIRH, 0x80, PIRH)
2429                }
2430
2431                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
2432                {
2433                    And (PIRH, 0x0F, Local0)
2434                    ShiftLeft (0x01, Local0, IRQV)
2435                    Return (BUFB)
2436                }
2437
2438                Method (_SRS, 1, NotSerialized)  // _SRS: Set Resource Settings
2439                {
2440                    CreateWordField (Arg0, 0x01, IRQ1)
2441                    FindSetRightBit (IRQ1, Local0)
2442                    Decrement (Local0)
2443                    Store (Local0, PIRH)
2444                }
2445            }
2446
2447            OperationRegion (\SCPP, SystemIO, 0x1048, 0x01)
2448            Field (\SCPP, ByteAcc, NoLock, Preserve)
2449            {
2450                SMIP,   8
2451            }
2452
2453            Method (\_SB.PCI0._INI, 0, NotSerialized)  // _INI: Initialize
2454            {
2455                If (STRC (\_OS, "Microsoft Windows")) {}
2456                Else
2457                {
2458                    If (STRC (\_OS, "Microsoft Windows NT"))
2459                    {
2460                        Store (0x58, SMIP)
2461                        Store (0x00, OSFL)
2462                    }
2463                    Else
2464                    {
2465                        Store (0x02, OSFL)
2466                    }
2467                }
2468            }
2469
2470            Device (SYSR)
2471            {
2472                Name (_HID, EisaId ("PNP0C02"))  // _HID: Hardware ID
2473                Name (_UID, 0x01)  // _UID: Unique ID
2474                Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
2475                {
2476                    IO (Decode16,
2477                        0x0010,             // Range Minimum
2478                        0x0010,             // Range Maximum
2479                        0x01,               // Alignment
2480                        0x10,               // Length
2481                        )
2482                    IO (Decode16,
2483                        0x0022,             // Range Minimum
2484                        0x0022,             // Range Maximum
2485                        0x01,               // Alignment
2486                        0x1E,               // Length
2487                        )
2488                    IO (Decode16,
2489                        0x0044,             // Range Minimum
2490                        0x0044,             // Range Maximum
2491                        0x01,               // Alignment
2492                        0x1C,               // Length
2493                        )
2494                    IO (Decode16,
2495                        0x0062,             // Range Minimum
2496                        0x0062,             // Range Maximum
2497                        0x01,               // Alignment
2498                        0x02,               // Length
2499                        )
2500                    IO (Decode16,
2501                        0x0065,             // Range Minimum
2502                        0x0065,             // Range Maximum
2503                        0x01,               // Alignment
2504                        0x0B,               // Length
2505                        )
2506                    IO (Decode16,
2507                        0x0074,             // Range Minimum
2508                        0x0074,             // Range Maximum
2509                        0x01,               // Alignment
2510                        0x0C,               // Length
2511                        )
2512                    IO (Decode16,
2513                        0x0091,             // Range Minimum
2514                        0x0091,             // Range Maximum
2515                        0x01,               // Alignment
2516                        0x03,               // Length
2517                        )
2518                    IO (Decode16,
2519                        0x00A2,             // Range Minimum
2520                        0x00A2,             // Range Maximum
2521                        0x01,               // Alignment
2522                        0x1E,               // Length
2523                        )
2524                    IO (Decode16,
2525                        0x00E0,             // Range Minimum
2526                        0x00E0,             // Range Maximum
2527                        0x01,               // Alignment
2528                        0x10,               // Length
2529                        )
2530                    IO (Decode16,
2531                        0x04D0,             // Range Minimum
2532                        0x04D0,             // Range Maximum
2533                        0x01,               // Alignment
2534                        0x02,               // Length
2535                        )
2536                    IO (Decode16,
2537                        0x0294,             // Range Minimum
2538                        0x0294,             // Range Maximum
2539                        0x01,               // Alignment
2540                        0x04,               // Length
2541                        )
2542                })
2543            }
2544
2545            Device (PIC)
2546            {
2547                Name (_HID, EisaId ("PNP0000"))  // _HID: Hardware ID
2548                Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
2549                {
2550                    IO (Decode16,
2551                        0x0020,             // Range Minimum
2552                        0x0020,             // Range Maximum
2553                        0x01,               // Alignment
2554                        0x02,               // Length
2555                        )
2556                    IO (Decode16,
2557                        0x00A0,             // Range Minimum
2558                        0x00A0,             // Range Maximum
2559                        0x01,               // Alignment
2560                        0x02,               // Length
2561                        )
2562                    IRQNoFlags ()
2563                        {2}
2564                })
2565            }
2566
2567            Device (DMA1)
2568            {
2569                Name (_HID, EisaId ("PNP0200"))  // _HID: Hardware ID
2570                Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
2571                {
2572                    DMA (Compatibility, BusMaster, Transfer8, )
2573                        {4}
2574                    IO (Decode16,
2575                        0x0000,             // Range Minimum
2576                        0x0000,             // Range Maximum
2577                        0x01,               // Alignment
2578                        0x10,               // Length
2579                        )
2580                    IO (Decode16,
2581                        0x0080,             // Range Minimum
2582                        0x0080,             // Range Maximum
2583                        0x01,               // Alignment
2584                        0x11,               // Length
2585                        )
2586                    IO (Decode16,
2587                        0x0094,             // Range Minimum
2588                        0x0094,             // Range Maximum
2589                        0x01,               // Alignment
2590                        0x0C,               // Length
2591                        )
2592                    IO (Decode16,
2593                        0x00C0,             // Range Minimum
2594                        0x00C0,             // Range Maximum
2595                        0x01,               // Alignment
2596                        0x20,               // Length
2597                        )
2598                })
2599            }
2600
2601            Device (TMR)
2602            {
2603                Name (_HID, EisaId ("PNP0100"))  // _HID: Hardware ID
2604                Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
2605                {
2606                    IO (Decode16,
2607                        0x0040,             // Range Minimum
2608                        0x0040,             // Range Maximum
2609                        0x01,               // Alignment
2610                        0x04,               // Length
2611                        )
2612                    IRQNoFlags ()
2613                        {0}
2614                })
2615            }
2616
2617            Device (RTC)
2618            {
2619                Name (_HID, EisaId ("PNP0B00"))  // _HID: Hardware ID
2620                Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
2621                {
2622                    IO (Decode16,
2623                        0x0070,             // Range Minimum
2624                        0x0070,             // Range Maximum
2625                        0x04,               // Alignment
2626                        0x04,               // Length
2627                        )
2628                    IRQNoFlags ()
2629                        {8}
2630                })
2631            }
2632
2633            Device (SPKR)
2634            {
2635                Name (_HID, EisaId ("PNP0800"))  // _HID: Hardware ID
2636                Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
2637                {
2638                    IO (Decode16,
2639                        0x0061,             // Range Minimum
2640                        0x0061,             // Range Maximum
2641                        0x01,               // Alignment
2642                        0x01,               // Length
2643                        )
2644                })
2645            }
2646
2647            Device (COPR)
2648            {
2649                Name (_HID, EisaId ("PNP0C04"))  // _HID: Hardware ID
2650                Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
2651                {
2652                    IO (Decode16,
2653                        0x00F0,             // Range Minimum
2654                        0x00F0,             // Range Maximum
2655                        0x01,               // Alignment
2656                        0x10,               // Length
2657                        )
2658                    IRQNoFlags ()
2659                        {13}
2660                })
2661            }
2662
2663            Scope (\)
2664            {
2665                OperationRegion (WIN1, SystemIO, 0x2E, 0x02)
2666                Field (WIN1, ByteAcc, NoLock, Preserve)
2667                {
2668                    INDP,   8,
2669                    DATA,   8
2670                }
2671
2672                IndexField (INDP, DATA, ByteAcc, NoLock, Preserve)
2673                {
2674                    Offset (0x02),
2675                    CFG,    8,
2676                    Offset (0x07),
2677                    LDN,    8,
2678                    Offset (0x20),
2679                    IDHI,   8,
2680                    IDLO,   8,
2681                    POWC,   8,
2682                    Offset (0x29),
2683                    CR29,   8,
2684                    Offset (0x30),
2685                    ACTR,   8,
2686                    Offset (0x60),
2687                    IOAH,   8,
2688                    IOAL,   8,
2689                    IO2H,   8,
2690                    IO2L,   8,
2691                    Offset (0x70),
2692                    INTR,   8,
2693                    Offset (0x72),
2694                    INT1,   8,
2695                    Offset (0x74),
2696                    DMCH,   8,
2697                    Offset (0xC0),
2698                    GP40,   8,
2699                    Offset (0xF0),
2700                    CRF0,   8,
2701                    CRF1,   8,
2702                    CRF2,   8,
2703                    CRF3,   8,
2704                    CRF4,   8,
2705                    CRF5,   8,
2706                    CRF6,   8,
2707                    CRF7,   8,
2708                    CRF8,   8
2709                }
2710
2711                Method (ENFG, 0, NotSerialized)
2712                {
2713                    Store (0x87, INDP)
2714                    Store (0x87, INDP)
2715                }
2716
2717                Method (EXFG, 0, NotSerialized)
2718                {
2719                    Store (0xAA, INDP)
2720                }
2721            }
2722
2723            Device (FDC0)
2724            {
2725                Name (_HID, EisaId ("PNP0700"))  // _HID: Hardware ID
2726                Method (_STA, 0, NotSerialized)  // _STA: Status
2727                {
2728                    ENFG ()
2729                    Store (Zero, LDN)
2730                    If (ACTR)
2731                    {
2732                        EXFG ()
2733                        Return (0x0F)
2734                    }
2735                    Else
2736                    {
2737                        If (LOr (IOAH, IOAL))
2738                        {
2739                            EXFG ()
2740                            Return (0x0D)
2741                        }
2742                        Else
2743                        {
2744                            EXFG ()
2745                            Return (0x00)
2746                        }
2747                    }
2748                }
2749
2750                Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
2751                {
2752                    ENFG ()
2753                    Store (0x00, LDN)
2754                    Store (Zero, ACTR)
2755                    SLDM (DMCH, 0x04)
2756                    EXFG ()
2757                    DISD (0x03)
2758                }
2759
2760                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
2761                {
2762                    Name (BUF0, ResourceTemplate ()
2763                    {
2764                        IO (Decode16,
2765                            0x03F2,             // Range Minimum
2766                            0x03F2,             // Range Maximum
2767                            0x01,               // Alignment
2768                            0x04,               // Length
2769                            _Y06)
2770                        IO (Decode16,
2771                            0x03F7,             // Range Minimum
2772                            0x03F7,             // Range Maximum
2773                            0x01,               // Alignment
2774                            0x01,               // Length
2775                            )
2776                        IRQNoFlags ()
2777                            {6}
2778                        DMA (Compatibility, NotBusMaster, Transfer8, )
2779                            {2}
2780                    })
2781                    CreateByteField (BUF0, \_SB.PCI0.FDC0._CRS._Y06._MIN, IOLO)  // _MIN: Minimum Base Address
2782                    CreateByteField (BUF0, 0x03, IOHI)
2783                    CreateByteField (BUF0, \_SB.PCI0.FDC0._CRS._Y06._MAX, IORL)  // _MAX: Maximum Base Address
2784                    CreateByteField (BUF0, 0x05, IORH)
2785                    ENFG ()
2786                    EXFG ()
2787                    Return (BUF0)
2788                }
2789
2790                Name (_PRS, ResourceTemplate ()  // _PRS: Possible Resource Settings
2791                {
2792                    StartDependentFnNoPri ()
2793                    {
2794                        IO (Decode16,
2795                            0x03F2,             // Range Minimum
2796                            0x03F2,             // Range Maximum
2797                            0x01,               // Alignment
2798                            0x04,               // Length
2799                            )
2800                        IO (Decode16,
2801                            0x03F7,             // Range Minimum
2802                            0x03F7,             // Range Maximum
2803                            0x01,               // Alignment
2804                            0x01,               // Length
2805                            )
2806                        IRQNoFlags ()
2807                            {6}
2808                        DMA (Compatibility, NotBusMaster, Transfer8, )
2809                            {2}
2810                    }
2811                    EndDependentFn ()
2812                })
2813                Method (_SRS, 1, NotSerialized)  // _SRS: Set Resource Settings
2814                {
2815                    CreateByteField (Arg0, 0x02, IOLO)
2816                    CreateByteField (Arg0, 0x03, IOHI)
2817                    CreateWordField (Arg0, 0x02, IOAD)
2818                    CreateWordField (Arg0, 0x19, IRQL)
2819                    CreateByteField (Arg0, 0x1C, DMAV)
2820                    ENFG ()
2821                    Store (Zero, LDN)
2822                    Store (One, ACTR)
2823                    SLDM (DMCH, DMCH)
2824                    EXFG ()
2825                    CKIO (IOAD, 0x03)
2826                }
2827            }
2828
2829            Device (UAR1)
2830            {
2831                Name (_HID, EisaId ("PNP0501"))  // _HID: Hardware ID
2832                Name (_UID, 0x01)  // _UID: Unique ID
2833                Method (_STA, 0, NotSerialized)  // _STA: Status
2834                {
2835                    ENFG ()
2836                    Store (0x02, LDN)
2837                    If (ACTR)
2838                    {
2839                        EXFG ()
2840                        Return (0x0F)
2841                    }
2842                    Else
2843                    {
2844                        If (LOr (IOAH, IOAL))
2845                        {
2846                            EXFG ()
2847                            Return (0x0D)
2848                        }
2849                        Else
2850                        {
2851                            EXFG ()
2852                            Return (0x00)
2853                        }
2854                    }
2855
2856                    EXFG ()
2857                }
2858
2859                Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
2860                {
2861                    ENFG ()
2862                    Store (0x02, LDN)
2863                    Store (Zero, ACTR)
2864                    EXFG ()
2865                    DISD (0x00)
2866                }
2867
2868                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
2869                {
2870                    Name (BUF1, ResourceTemplate ()
2871                    {
2872                        IO (Decode16,
2873                            0x0000,             // Range Minimum
2874                            0x0000,             // Range Maximum
2875                            0x01,               // Alignment
2876                            0x08,               // Length
2877                            _Y07)
2878                        IRQNoFlags (_Y08)
2879                            {}
2880                    })
2881                    CreateByteField (BUF1, \_SB.PCI0.UAR1._CRS._Y07._MIN, IOLO)  // _MIN: Minimum Base Address
2882                    CreateByteField (BUF1, 0x03, IOHI)
2883                    CreateByteField (BUF1, \_SB.PCI0.UAR1._CRS._Y07._MAX, IORL)  // _MAX: Maximum Base Address
2884                    CreateByteField (BUF1, 0x05, IORH)
2885                    CreateWordField (BUF1, \_SB.PCI0.UAR1._CRS._Y08._INT, IRQW)  // _INT: Interrupts
2886                    ENFG ()
2887                    Store (0x02, LDN)
2888                    Store (IOAL, IOLO)
2889                    Store (IOAL, IORL)
2890                    Store (IOAH, IOHI)
2891                    Store (IOAH, IORH)
2892                    Store (One, Local0)
2893                    ShiftLeft (Local0, INTR, IRQW)
2894                    EXFG ()
2895                    Return (BUF1)
2896                }
2897
2898                Name (_PRS, ResourceTemplate ()  // _PRS: Possible Resource Settings
2899                {
2900                    StartDependentFnNoPri ()
2901                    {
2902                        IO (Decode16,
2903                            0x03F8,             // Range Minimum
2904                            0x03F8,             // Range Maximum
2905                            0x01,               // Alignment
2906                            0x08,               // Length
2907                            )
2908                        IRQNoFlags ()
2909                            {3,4,5,7,9,10,11,12}
2910                    }
2911                    StartDependentFnNoPri ()
2912                    {
2913                        IO (Decode16,
2914                            0x02F8,             // Range Minimum
2915                            0x02F8,             // Range Maximum
2916                            0x01,               // Alignment
2917                            0x08,               // Length
2918                            )
2919                        IRQNoFlags ()
2920                            {3,4,5,7,9,10,11,12}
2921                    }
2922                    StartDependentFnNoPri ()
2923                    {
2924                        IO (Decode16,
2925                            0x03E8,             // Range Minimum
2926                            0x03E8,             // Range Maximum
2927                            0x01,               // Alignment
2928                            0x08,               // Length
2929                            )
2930                        IRQNoFlags ()
2931                            {3,4,5,7,9,10,11,12}
2932                    }
2933                    StartDependentFnNoPri ()
2934                    {
2935                        IO (Decode16,
2936                            0x02E8,             // Range Minimum
2937                            0x02E8,             // Range Maximum
2938                            0x01,               // Alignment
2939                            0x08,               // Length
2940                            )
2941                        IRQNoFlags ()
2942                            {3,4,5,7,9,10,11,12}
2943                    }
2944                    EndDependentFn ()
2945                })
2946                Method (_SRS, 1, NotSerialized)  // _SRS: Set Resource Settings
2947                {
2948                    CreateByteField (Arg0, 0x02, IOLO)
2949                    CreateByteField (Arg0, 0x03, IOHI)
2950                    CreateWordField (Arg0, 0x02, IOAD)
2951                    CreateWordField (Arg0, 0x09, IRQW)
2952                    ENFG ()
2953                    Store (0x02, LDN)
2954                    Store (One, ACTR)
2955                    Store (IOLO, IOAL)
2956                    Store (IOHI, IOAH)
2957                    FindSetRightBit (IRQW, Local0)
2958                    Subtract (Local0, 0x01, INTR)
2959                    EXFG ()
2960                    CKIO (IOAD, 0x00)
2961                }
2962            }
2963
2964            Device (LPT1)
2965            {
2966                Name (_HID, EisaId ("PNP0400"))  // _HID: Hardware ID
2967                Method (_STA, 0, NotSerialized)  // _STA: Status
2968                {
2969                    ENFG ()
2970                    Store (0x01, LDN)
2971                    And (CRF0, 0x02, Local0)
2972                    If (LNotEqual (Local0, 0x02))
2973                    {
2974                        If (ACTR)
2975                        {
2976                            EXFG ()
2977                            Return (0x0F)
2978                        }
2979                        Else
2980                        {
2981                            If (LOr (IOAH, IOAL))
2982                            {
2983                                EXFG ()
2984                                Return (0x0D)
2985                            }
2986                            Else
2987                            {
2988                                EXFG ()
2989                                Return (0x00)
2990                            }
2991                        }
2992                    }
2993                    Else
2994                    {
2995                        EXFG ()
2996                        Return (0x00)
2997                    }
2998                }
2999
3000                Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
3001                {
3002                    ENFG ()
3003                    Store (0x01, LDN)
3004                    Store (Zero, ACTR)
3005                    EXFG ()
3006                    DISD (0x02)
3007                }
3008
3009                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
3010                {
3011                    Name (BUF5, ResourceTemplate ()
3012                    {
3013                        IO (Decode16,
3014                            0x0000,             // Range Minimum
3015                            0x0000,             // Range Maximum
3016                            0x01,               // Alignment
3017                            0x08,               // Length
3018                            _Y09)
3019                        IO (Decode16,
3020                            0x0000,             // Range Minimum
3021                            0x0000,             // Range Maximum
3022                            0x01,               // Alignment
3023                            0x04,               // Length
3024                            _Y0A)
3025                        IRQNoFlags (_Y0B)
3026                            {}
3027                    })
3028                    CreateByteField (BUF5, \_SB.PCI0.LPT1._CRS._Y09._MIN, IOLO)  // _MIN: Minimum Base Address
3029                    CreateByteField (BUF5, 0x03, IOHI)
3030                    CreateByteField (BUF5, \_SB.PCI0.LPT1._CRS._Y09._MAX, IORL)  // _MAX: Maximum Base Address
3031                    CreateByteField (BUF5, 0x05, IORH)
3032                    CreateByteField (BUF5, \_SB.PCI0.LPT1._CRS._Y09._LEN, IOLE)  // _LEN: Length
3033                    CreateByteField (BUF5, \_SB.PCI0.LPT1._CRS._Y0A._MIN, IO21)  // _MIN: Minimum Base Address
3034                    CreateByteField (BUF5, 0x0B, IO22)
3035                    CreateByteField (BUF5, \_SB.PCI0.LPT1._CRS._Y0A._MAX, IO23)  // _MAX: Maximum Base Address
3036                    CreateByteField (BUF5, 0x0D, IO24)
3037                    CreateWordField (BUF5, \_SB.PCI0.LPT1._CRS._Y0B._INT, IRQW)  // _INT: Interrupts
3038                    ENFG ()
3039                    Store (0x01, LDN)
3040                    Store (IOAL, IOLO)
3041                    Store (IOLO, IORL)
3042                    Store (IOAH, IOHI)
3043                    Store (IOHI, IORH)
3044                    Store (IOAL, IO21)
3045                    Store (IOAL, IO23)
3046                    Add (IOAH, 0x04, IO22)
3047                    Add (IOAH, 0x04, IO24)
3048                    If (LEqual (IOLO, 0xBC))
3049                    {
3050                        Store (0x04, IOLE)
3051                    }
3052                    Else
3053                    {
3054                        Store (0x08, IOLE)
3055                    }
3056
3057                    Store (One, Local0)
3058                    Store (INTR, Local5)
3059                    ShiftLeft (Local0, Local5, IRQW)
3060                    Store (One, ACTR)
3061                    EXFG ()
3062                    Return (BUF5)
3063                }
3064
3065                Name (_PRS, ResourceTemplate ()  // _PRS: Possible Resource Settings
3066                {
3067                    StartDependentFnNoPri ()
3068                    {
3069                        IO (Decode16,
3070                            0x0378,             // Range Minimum
3071                            0x0378,             // Range Maximum
3072                            0x01,               // Alignment
3073                            0x08,               // Length
3074                            )
3075                        IO (Decode16,
3076                            0x0778,             // Range Minimum
3077                            0x0778,             // Range Maximum
3078                            0x01,               // Alignment
3079                            0x04,               // Length
3080                            )
3081                        IRQNoFlags ()
3082                            {3,4,5,7,9,10,11,12}
3083                    }
3084                    StartDependentFnNoPri ()
3085                    {
3086                        IO (Decode16,
3087                            0x0278,             // Range Minimum
3088                            0x0278,             // Range Maximum
3089                            0x01,               // Alignment
3090                            0x08,               // Length
3091                            )
3092                        IO (Decode16,
3093                            0x0678,             // Range Minimum
3094                            0x0678,             // Range Maximum
3095                            0x01,               // Alignment
3096                            0x04,               // Length
3097                            )
3098                        IRQNoFlags ()
3099                            {3,4,5,7,9,10,11,12}
3100                    }
3101                    StartDependentFnNoPri ()
3102                    {
3103                        IO (Decode16,
3104                            0x03BC,             // Range Minimum
3105                            0x03BC,             // Range Maximum
3106                            0x01,               // Alignment
3107                            0x04,               // Length
3108                            )
3109                        IO (Decode16,
3110                            0x03BC,             // Range Minimum
3111                            0x03BC,             // Range Maximum
3112                            0x01,               // Alignment
3113                            0x04,               // Length
3114                            )
3115                        IRQNoFlags ()
3116                            {3,4,5,7,9,10,11,12}
3117                    }
3118                    EndDependentFn ()
3119                })
3120                Method (_SRS, 1, NotSerialized)  // _SRS: Set Resource Settings
3121                {
3122                    CreateByteField (Arg0, 0x02, IOLO)
3123                    CreateByteField (Arg0, 0x03, IOHI)
3124                    CreateWordField (Arg0, 0x02, IOAD)
3125                    CreateByteField (Arg0, 0x04, IORL)
3126                    CreateByteField (Arg0, 0x05, IORH)
3127                    CreateWordField (Arg0, 0x11, IRQW)
3128                    ENFG ()
3129                    Store (0x01, LDN)
3130                    Store (One, ACTR)
3131                    Store (IOLO, IOAL)
3132                    Store (IOHI, IOAH)
3133                    FindSetLeftBit (IRQW, Local0)
3134                    Subtract (Local0, 0x01, Local0)
3135                    Store (Local0, INTR)
3136                    EXFG ()
3137                    CKIO (IOAD, 0x02)
3138                }
3139            }
3140
3141            Device (ECP1)
3142            {
3143                Name (_HID, EisaId ("PNP0401"))  // _HID: Hardware ID
3144                Method (_STA, 0, NotSerialized)  // _STA: Status
3145                {
3146                    ENFG ()
3147                    Store (0x01, LDN)
3148                    And (CRF0, 0x02, Local0)
3149                    If (LEqual (Local0, 0x02))
3150                    {
3151                        If (ACTR)
3152                        {
3153                            EXFG ()
3154                            Return (0x0F)
3155                        }
3156                        Else
3157                        {
3158                            If (LOr (IOAH, IOAL))
3159                            {
3160                                EXFG ()
3161                                Return (0x0D)
3162                            }
3163                            Else
3164                            {
3165                                EXFG ()
3166                                Return (0x00)
3167                            }
3168                        }
3169                    }
3170                    Else
3171                    {
3172                        EXFG ()
3173                        Return (0x00)
3174                    }
3175                }
3176
3177                Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
3178                {
3179                    ENFG ()
3180                    Store (0x01, LDN)
3181                    Store (Zero, ACTR)
3182                    SLDM (DMCH, 0x04)
3183                    EXFG ()
3184                    DISD (0x02)
3185                }
3186
3187                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
3188                {
3189                    Name (BUF6, ResourceTemplate ()
3190                    {
3191                        IO (Decode16,
3192                            0x0000,             // Range Minimum
3193                            0x0000,             // Range Maximum
3194                            0x01,               // Alignment
3195                            0x08,               // Length
3196                            _Y0C)
3197                        IO (Decode16,
3198                            0x0000,             // Range Minimum
3199                            0x0000,             // Range Maximum
3200                            0x01,               // Alignment
3201                            0x04,               // Length
3202                            _Y0D)
3203                        IRQNoFlags (_Y0E)
3204                            {}
3205                        DMA (Compatibility, NotBusMaster, Transfer8, _Y0F)
3206                            {}
3207                    })
3208                    CreateByteField (BUF6, \_SB.PCI0.ECP1._CRS._Y0C._MIN, IOLO)  // _MIN: Minimum Base Address
3209                    CreateByteField (BUF6, 0x03, IOHI)
3210                    CreateByteField (BUF6, \_SB.PCI0.ECP1._CRS._Y0C._MAX, IORL)  // _MAX: Maximum Base Address
3211                    CreateByteField (BUF6, 0x05, IORH)
3212                    CreateByteField (BUF6, \_SB.PCI0.ECP1._CRS._Y0C._LEN, IOLE)  // _LEN: Length
3213                    CreateByteField (BUF6, \_SB.PCI0.ECP1._CRS._Y0D._MIN, IOEL)  // _MIN: Minimum Base Address
3214                    CreateByteField (BUF6, 0x0B, IOEH)
3215                    CreateByteField (BUF6, \_SB.PCI0.ECP1._CRS._Y0D._MAX, IOML)  // _MAX: Maximum Base Address
3216                    CreateByteField (BUF6, 0x0D, IOMH)
3217                    CreateWordField (BUF6, \_SB.PCI0.ECP1._CRS._Y0E._INT, IRQW)  // _INT: Interrupts
3218                    CreateByteField (BUF6, \_SB.PCI0.ECP1._CRS._Y0F._DMA, DMAC)  // _DMA: Direct Memory Access
3219                    ENFG ()
3220                    Store (0x01, LDN)
3221                    Store (One, ACTR)
3222                    Store (IOAL, Local2)
3223                    Store (Local2, IOLO)
3224                    Store (IOAH, Local3)
3225                    Store (Local3, IOHI)
3226                    Or (Local3, 0x04, Local3)
3227                    Store (Local3, IOEH)
3228                    Store (Local3, IOMH)
3229                    Store (IOLO, IORL)
3230                    Store (IOLO, IOEL)
3231                    Store (IOLO, IOML)
3232                    Store (IOHI, IORH)
3233                    If (LEqual (IOLO, 0xBC))
3234                    {
3235                        Store (0x04, IOLE)
3236                    }
3237                    Else
3238                    {
3239                        Store (0x08, IOLE)
3240                    }
3241
3242                    Store (One, Local0)
3243                    Store (INTR, Local5)
3244                    ShiftLeft (Local0, Local5, IRQW)
3245                    Store (One, Local0)
3246                    Store (DMCH, Local5)
3247                    ShiftLeft (Local0, Local5, DMAC)
3248                    EXFG ()
3249                    Return (BUF6)
3250                }
3251
3252                Name (_PRS, ResourceTemplate ()  // _PRS: Possible Resource Settings
3253                {
3254                    StartDependentFnNoPri ()
3255                    {
3256                        IO (Decode16,
3257                            0x0378,             // Range Minimum
3258                            0x0378,             // Range Maximum
3259                            0x01,               // Alignment
3260                            0x08,               // Length
3261                            )
3262                        IO (Decode16,
3263                            0x0778,             // Range Minimum
3264                            0x0778,             // Range Maximum
3265                            0x01,               // Alignment
3266                            0x04,               // Length
3267                            )
3268                        IRQNoFlags ()
3269                            {3,4,5,7,9,10,11,12}
3270                        DMA (Compatibility, NotBusMaster, Transfer8, )
3271                            {0,1,3}
3272                    }
3273                    StartDependentFnNoPri ()
3274                    {
3275                        IO (Decode16,
3276                            0x0278,             // Range Minimum
3277                            0x0278,             // Range Maximum
3278                            0x01,               // Alignment
3279                            0x08,               // Length
3280                            )
3281                        IO (Decode16,
3282                            0x0678,             // Range Minimum
3283                            0x0678,             // Range Maximum
3284                            0x01,               // Alignment
3285                            0x04,               // Length
3286                            )
3287                        IRQNoFlags ()
3288                            {3,4,5,7,9,10,11,12}
3289                        DMA (Compatibility, NotBusMaster, Transfer8, )
3290                            {0,1,3}
3291                    }
3292                    StartDependentFnNoPri ()
3293                    {
3294                        IO (Decode16,
3295                            0x03BC,             // Range Minimum
3296                            0x03BC,             // Range Maximum
3297                            0x01,               // Alignment
3298                            0x04,               // Length
3299                            )
3300                        IO (Decode16,
3301                            0x07BC,             // Range Minimum
3302                            0x07BC,             // Range Maximum
3303                            0x01,               // Alignment
3304                            0x04,               // Length
3305                            )
3306                        IRQNoFlags ()
3307                            {3,4,5,7,9,10,11,12}
3308                        DMA (Compatibility, NotBusMaster, Transfer8, )
3309                            {0,1,3}
3310                    }
3311                    EndDependentFn ()
3312                })
3313                Method (_SRS, 1, NotSerialized)  // _SRS: Set Resource Settings
3314                {
3315                    CreateByteField (Arg0, 0x02, IOLO)
3316                    CreateByteField (Arg0, 0x03, IOHI)
3317                    CreateWordField (Arg0, 0x02, IOAD)
3318                    CreateWordField (Arg0, 0x11, IRQW)
3319                    CreateByteField (Arg0, 0x14, DMAC)
3320                    ENFG ()
3321                    Store (0x01, LDN)
3322                    Store (One, ACTR)
3323                    Store (IOLO, IOAL)
3324                    Store (IOHI, IOAH)
3325                    FindSetLeftBit (IRQW, Local0)
3326                    Subtract (Local0, 0x01, Local0)
3327                    Store (Local0, INTR)
3328                    FindSetLeftBit (DMAC, Local1)
3329                    Store (DMCH, Local0)
3330                    Subtract (Local1, 0x01, DMCH)
3331                    SLDM (Local0, DMCH)
3332                    EXFG ()
3333                    CKIO (IOAD, 0x02)
3334                }
3335            }
3336
3337            OperationRegion (KBCT, SystemIO, 0x60, 0x05)
3338            Field (KBCT, ByteAcc, NoLock, Preserve)
3339            {
3340                P060,   8,
3341                Offset (0x04),
3342                P064,   8
3343            }
3344
3345            Device (PS2M)
3346            {
3347                Name (_HID, EisaId ("PNP0F13"))  // _HID: Hardware ID
3348                Method (_STA, 0, NotSerialized)  // _STA: Status
3349                {
3350                    If (LEqual (PS2F, 0x00))
3351                    {
3352                        Return (0x0F)
3353                    }
3354                    Else
3355                    {
3356                        Return (0x00)
3357                    }
3358                }
3359
3360                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
3361                {
3362                    Name (BUF1, ResourceTemplate ()
3363                    {
3364                        IRQNoFlags ()
3365                            {12}
3366                    })
3367                    Name (BUF2, ResourceTemplate ()
3368                    {
3369                        IO (Decode16,
3370                            0x0060,             // Range Minimum
3371                            0x0060,             // Range Maximum
3372                            0x01,               // Alignment
3373                            0x01,               // Length
3374                            )
3375                        IO (Decode16,
3376                            0x0064,             // Range Minimum
3377                            0x0064,             // Range Maximum
3378                            0x01,               // Alignment
3379                            0x01,               // Length
3380                            )
3381                        IRQNoFlags ()
3382                            {12}
3383                    })
3384                    If (LEqual (KBDI, 0x01))
3385                    {
3386                        If (LEqual (OSFL, 0x02))
3387                        {
3388                            Return (BUF1)
3389                        }
3390
3391                        If (LEqual (OSFL, 0x01))
3392                        {
3393                            Return (BUF1)
3394                        }
3395                        Else
3396                        {
3397                            Return (BUF2)
3398                        }
3399                    }
3400                    Else
3401                    {
3402                        Return (BUF1)
3403                    }
3404                }
3405            }
3406
3407            Device (PS2K)
3408            {
3409                Name (_HID, EisaId ("PNP0303"))  // _HID: Hardware ID
3410                Name (_CID, EisaId ("PNP030B"))  // _CID: Compatible ID
3411                Method (_STA, 0, NotSerialized)  // _STA: Status
3412                {
3413                    If (LEqual (KBDI, 0x01))
3414                    {
3415                        Return (0x00)
3416                    }
3417                    Else
3418                    {
3419                        Return (0x0F)
3420                    }
3421                }
3422
3423                Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
3424                {
3425                    IO (Decode16,
3426                        0x0060,             // Range Minimum
3427                        0x0060,             // Range Maximum
3428                        0x01,               // Alignment
3429                        0x01,               // Length
3430                        )
3431                    IO (Decode16,
3432                        0x0064,             // Range Minimum
3433                        0x0064,             // Range Maximum
3434                        0x01,               // Alignment
3435                        0x01,               // Length
3436                        )
3437                    IRQNoFlags ()
3438                        {1}
3439                })
3440            }
3441
3442            Device (PSMR)
3443            {
3444                Name (_HID, EisaId ("PNP0C02"))  // _HID: Hardware ID
3445                Name (_UID, 0x03)  // _UID: Unique ID
3446                Method (_STA, 0, NotSerialized)  // _STA: Status
3447                {
3448                    If (LEqual (KBDI, 0x00))
3449                    {
3450                        Return (0x00)
3451                    }
3452
3453                    If (LEqual (PS2F, 0x00))
3454                    {
3455                        If (LEqual (OSFL, 0x02))
3456                        {
3457                            Return (0x0F)
3458                        }
3459
3460                        If (LEqual (OSFL, 0x01))
3461                        {
3462                            Return (0x0F)
3463                        }
3464
3465                        Return (0x00)
3466                    }
3467
3468                    Return (0x0F)
3469                }
3470
3471                Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
3472                {
3473                    IO (Decode16,
3474                        0x0060,             // Range Minimum
3475                        0x0060,             // Range Maximum
3476                        0x01,               // Alignment
3477                        0x01,               // Length
3478                        )
3479                    IO (Decode16,
3480                        0x0064,             // Range Minimum
3481                        0x0064,             // Range Maximum
3482                        0x01,               // Alignment
3483                        0x01,               // Length
3484                        )
3485                })
3486            }
3487
3488            Device (GAME)
3489            {
3490                Name (_HID, EisaId ("PNPB02F"))  // _HID: Hardware ID
3491                Method (_STA, 0, NotSerialized)  // _STA: Status
3492                {
3493                    ENFG ()
3494                    Store (0x07, LDN)
3495                    If (LEqual (ACTR, 0x01))
3496                    {
3497                        EXFG ()
3498                        Return (0x0F)
3499                    }
3500                    Else
3501                    {
3502                        If (LNotEqual (IOAH, 0x00))
3503                        {
3504                            EXFG ()
3505                            Return (0x0D)
3506                        }
3507                        Else
3508                        {
3509                            EXFG ()
3510                            Return (0x00)
3511                        }
3512                    }
3513                }
3514
3515                Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
3516                {
3517                    ENFG ()
3518                    Store (0x07, LDN)
3519                    Store (0x00, ACTR)
3520                    EXFG ()
3521                    DISD (0x04)
3522                }
3523
3524                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
3525                {
3526                    Name (BUF1, ResourceTemplate ()
3527                    {
3528                        IO (Decode16,
3529                            0x0000,             // Range Minimum
3530                            0x0000,             // Range Maximum
3531                            0x01,               // Alignment
3532                            0x07,               // Length
3533                            _Y10)
3534                        IO (Decode16,
3535                            0x0000,             // Range Minimum
3536                            0x0000,             // Range Maximum
3537                            0x01,               // Alignment
3538                            0x01,               // Length
3539                            _Y11)
3540                    })
3541                    CreateByteField (BUF1, \_SB.PCI0.GAME._CRS._Y10._MIN, IOLO)  // _MIN: Minimum Base Address
3542                    CreateByteField (BUF1, 0x03, IOHI)
3543                    CreateByteField (BUF1, \_SB.PCI0.GAME._CRS._Y10._MAX, IORL)  // _MAX: Maximum Base Address
3544                    CreateByteField (BUF1, 0x05, IORH)
3545                    CreateByteField (BUF1, \_SB.PCI0.GAME._CRS._Y11._MIN, IO21)  // _MIN: Minimum Base Address
3546                    CreateByteField (BUF1, 0x0B, IO22)
3547                    CreateByteField (BUF1, \_SB.PCI0.GAME._CRS._Y11._MAX, IO23)  // _MAX: Maximum Base Address
3548                    CreateByteField (BUF1, 0x0D, IO24)
3549                    ENFG ()
3550                    Store (0x07, LDN)
3551                    Store (IOAL, IOLO)
3552                    Store (IOAL, IORL)
3553                    Store (IOAH, IOHI)
3554                    Store (IOAH, IORH)
3555                    Subtract (IOAL, 0x01, IO21)
3556                    Subtract (IOAL, 0x01, IO23)
3557                    Store (IOAH, IO22)
3558                    Store (IOAH, IO24)
3559                    EXFG ()
3560                    Return (BUF1)
3561                }
3562
3563                Name (_PRS, ResourceTemplate ()  // _PRS: Possible Resource Settings
3564                {
3565                    StartDependentFnNoPri ()
3566                    {
3567                        IO (Decode16,
3568                            0x0201,             // Range Minimum
3569                            0x0201,             // Range Maximum
3570                            0x01,               // Alignment
3571                            0x07,               // Length
3572                            )
3573                        IO (Decode16,
3574                            0x0200,             // Range Minimum
3575                            0x0200,             // Range Maximum
3576                            0x01,               // Alignment
3577                            0x01,               // Length
3578                            )
3579                    }
3580                    StartDependentFnNoPri ()
3581                    {
3582                        IO (Decode16,
3583                            0x0209,             // Range Minimum
3584                            0x0209,             // Range Maximum
3585                            0x01,               // Alignment
3586                            0x07,               // Length
3587                            )
3588                        IO (Decode16,
3589                            0x0208,             // Range Minimum
3590                            0x0208,             // Range Maximum
3591                            0x01,               // Alignment
3592                            0x01,               // Length
3593                            )
3594                    }
3595                    EndDependentFn ()
3596                })
3597                Method (_SRS, 1, NotSerialized)  // _SRS: Set Resource Settings
3598                {
3599                    CreateByteField (Arg0, 0x02, IOLO)
3600                    CreateByteField (Arg0, 0x03, IOHI)
3601                    CreateWordField (Arg0, 0x02, IOAD)
3602                    ENFG ()
3603                    Store (0x07, LDN)
3604                    Store (0x01, ACTR)
3605                    Store (IOLO, IOAL)
3606                    Store (IOHI, IOAH)
3607                    EXFG ()
3608                    CKIO (IOAD, 0x04)
3609                }
3610            }
3611
3612            Device (MIDI)
3613            {
3614                Name (_HID, EisaId ("PNPB006"))  // _HID: Hardware ID
3615                OperationRegion (MID1, SystemIO, 0x0290, 0x02)
3616                Field (MID1, ByteAcc, NoLock, Preserve)
3617                {
3618                    MD1,    8,
3619                    ST1,    8
3620                }
3621
3622                OperationRegion (MID2, SystemIO, 0x0300, 0x02)
3623                Field (MID2, ByteAcc, NoLock, Preserve)
3624                {
3625                    MD2,    8,
3626                    ST2,    8
3627                }
3628
3629                OperationRegion (MID3, SystemIO, 0x0330, 0x02)
3630                Field (MID3, ByteAcc, NoLock, Preserve)
3631                {
3632                    MD3,    8,
3633                    ST3,    8
3634                }
3635
3636                Method (_STA, 0, NotSerialized)  // _STA: Status
3637                {
3638                    ENFG ()
3639                    Store (0x08, LDN)
3640                    If (LEqual (ACTR, 0x01))
3641                    {
3642                        EXFG ()
3643                        Return (0x0F)
3644                    }
3645                    Else
3646                    {
3647                        If (LNotEqual (IOAH, 0x00))
3648                        {
3649                            EXFG ()
3650                            Return (0x0D)
3651                        }
3652                        Else
3653                        {
3654                            EXFG ()
3655                            Return (0x00)
3656                        }
3657                    }
3658                }
3659
3660                Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
3661                {
3662                    ENFG ()
3663                    Store (0x08, LDN)
3664                    Store (0x00, ACTR)
3665                    EXFG ()
3666                    DISD (0x05)
3667                }
3668
3669                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
3670                {
3671                    Name (BUF1, ResourceTemplate ()
3672                    {
3673                        IO (Decode16,
3674                            0x0000,             // Range Minimum
3675                            0x0000,             // Range Maximum
3676                            0x01,               // Alignment
3677                            0x02,               // Length
3678                            _Y12)
3679                        IRQNoFlags (_Y13)
3680                            {}
3681                    })
3682                    CreateByteField (BUF1, \_SB.PCI0.MIDI._CRS._Y12._MIN, IOLO)  // _MIN: Minimum Base Address
3683                    CreateByteField (BUF1, 0x03, IOHI)
3684                    CreateByteField (BUF1, \_SB.PCI0.MIDI._CRS._Y12._MAX, IORL)  // _MAX: Maximum Base Address
3685                    CreateByteField (BUF1, 0x05, IORH)
3686                    CreateWordField (BUF1, \_SB.PCI0.MIDI._CRS._Y13._INT, IRQW)  // _INT: Interrupts
3687                    ENFG ()
3688                    Store (0x08, LDN)
3689                    Store (IOAL, IOLO)
3690                    Store (IOAL, IORL)
3691                    Store (IOAH, IOHI)
3692                    Store (IOAH, IORH)
3693                    Store (One, Local0)
3694                    ShiftLeft (Local0, INTR, IRQW)
3695                    EXFG ()
3696                    Return (BUF1)
3697                }
3698
3699                Name (_PRS, ResourceTemplate ()  // _PRS: Possible Resource Settings
3700                {
3701                    StartDependentFnNoPri ()
3702                    {
3703                        IO (Decode16,
3704                            0x0330,             // Range Minimum
3705                            0x0330,             // Range Maximum
3706                            0x01,               // Alignment
3707                            0x02,               // Length
3708                            )
3709                        IRQNoFlags ()
3710                            {3,4,5,7,9,10,11,12}
3711                    }
3712                    StartDependentFnNoPri ()
3713                    {
3714                        IO (Decode16,
3715                            0x0300,             // Range Minimum
3716                            0x0300,             // Range Maximum
3717                            0x01,               // Alignment
3718                            0x02,               // Length
3719                            )
3720                        IRQNoFlags ()
3721                            {3,4,5,7,9,10,11,12}
3722                    }
3723                    StartDependentFnNoPri ()
3724                    {
3725                        IO (Decode16,
3726                            0x0290,             // Range Minimum
3727                            0x0290,             // Range Maximum
3728                            0x01,               // Alignment
3729                            0x02,               // Length
3730                            )
3731                        IRQNoFlags ()
3732                            {3,4,5,7,9,10,11,12}
3733                    }
3734                    EndDependentFn ()
3735                })
3736                Method (_SRS, 1, NotSerialized)  // _SRS: Set Resource Settings
3737                {
3738                    CreateByteField (Arg0, 0x02, IOLO)
3739                    CreateByteField (Arg0, 0x03, IOHI)
3740                    CreateWordField (Arg0, 0x02, IOAD)
3741                    CreateWordField (Arg0, 0x09, IRQW)
3742                    ENFG ()
3743                    Store (0x08, LDN)
3744                    Store (0x01, ACTR)
3745                    Store (IOLO, IOAL)
3746                    Store (IOHI, IOAH)
3747                    FindSetLeftBit (IRQW, Local0)
3748                    Subtract (Local0, 0x01, Local0)
3749                    Store (Local0, INTR)
3750                    EXFG ()
3751                    CKIO (IOAD, 0x05)
3752                    If (LEqual (IOAD, 0x0290))
3753                    {
3754                        And (ST1, 0x40, Local0)
3755                        While (LEqual (Local0, 0x40))
3756                        {
3757                            Store (MD1, Local0)
3758                            And (ST1, 0x40, Local0)
3759                        }
3760                    }
3761                    Else
3762                    {
3763                        If (LEqual (IOAD, 0x0300))
3764                        {
3765                            And (ST2, 0x40, Local0)
3766                            While (LEqual (Local0, 0x40))
3767                            {
3768                                Store (MD2, Local0)
3769                                And (ST2, 0x40, Local0)
3770                            }
3771                        }
3772                        Else
3773                        {
3774                            And (ST3, 0x40, Local0)
3775                            While (LEqual (Local0, 0x40))
3776                            {
3777                                Store (MD3, Local0)
3778                                And (ST3, 0x40, Local0)
3779                            }
3780                        }
3781                    }
3782                }
3783            }
3784
3785            Method (\_SB.PCI0._PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
3786            {
3787                Return (Package (0x02)
3788                {
3789                    0x0B,
3790                    0x05
3791                })
3792            }
3793
3794            Method (\_SB.PCI0.UAR1._PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
3795            {
3796                Return (Package (0x02)
3797                {
3798                    0x08,
3799                    0x05
3800                })
3801            }
3802
3803            Method (\_SB.FUTS._PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
3804            {
3805                Return (Package (0x02)
3806                {
3807                    0x13,
3808                    0x04
3809                })
3810            }
3811
3812            Method (\_SB.PCI0.USB0._PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
3813            {
3814                If (LEqual (OSFL, 0x00))
3815                {
3816                    Return (Package (0x02)
3817                    {
3818                        0x0E,
3819                        0x03
3820                    })
3821                }
3822
3823                If (LEqual (OSFL, 0x01))
3824                {
3825                    Return (Package (0x02)
3826                    {
3827                        0x0E,
3828                        0x05
3829                    })
3830                }
3831
3832                If (LEqual (OSFL, 0x02))
3833                {
3834                    Return (Package (0x02)
3835                    {
3836                        0x0E,
3837                        0x05
3838                    })
3839                }
3840            }
3841
3842            Method (\_SB.PCI0.USB1._PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
3843            {
3844                If (LEqual (OSFL, 0x00))
3845                {
3846                    Return (Package (0x02)
3847                    {
3848                        0x04,
3849                        0x03
3850                    })
3851                }
3852
3853                If (LEqual (OSFL, 0x01))
3854                {
3855                    Return (Package (0x02)
3856                    {
3857                        0x04,
3858                        0x05
3859                    })
3860                }
3861
3862                If (LEqual (OSFL, 0x02))
3863                {
3864                    Return (Package (0x02)
3865                    {
3866                        0x04,
3867                        0x05
3868                    })
3869                }
3870            }
3871
3872            Method (\_SB.PCI0.USB2._PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
3873            {
3874                If (LEqual (OSFL, 0x00))
3875                {
3876                    Return (Package (0x02)
3877                    {
3878                        0x07,
3879                        0x03
3880                    })
3881                }
3882
3883                If (LEqual (OSFL, 0x01))
3884                {
3885                    Return (Package (0x02)
3886                    {
3887                        0x07,
3888                        0x05
3889                    })
3890                }
3891
3892                If (LEqual (OSFL, 0x02))
3893                {
3894                    Return (Package (0x02)
3895                    {
3896                        0x07,
3897                        0x05
3898                    })
3899                }
3900            }
3901
3902            Method (\_SB.PCI0.USB3._PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
3903            {
3904                If (LEqual (OSFL, 0x00))
3905                {
3906                    Return (Package (0x02)
3907                    {
3908                        0x06,
3909                        0x03
3910                    })
3911                }
3912
3913                If (LEqual (OSFL, 0x01))
3914                {
3915                    Return (Package (0x02)
3916                    {
3917                        0x06,
3918                        0x05
3919                    })
3920                }
3921
3922                If (LEqual (OSFL, 0x02))
3923                {
3924                    Return (Package (0x02)
3925                    {
3926                        0x06,
3927                        0x05
3928                    })
3929                }
3930            }
3931
3932            Method (\_SB.PCI0.MAC0._PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
3933            {
3934                Return (Package (0x02)
3935                {
3936                    0x0C,
3937                    0x05
3938                })
3939            }
3940
3941            Method (\_SB.PCI0.AMR0._PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
3942            {
3943                Return (Package (0x02)
3944                {
3945                    0x05,
3946                    0x04
3947                })
3948            }
3949
3950            Method (\_SB.PCI0.PS2M._PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
3951            {
3952                Return (Package (0x02)
3953                {
3954                    0x0D,
3955                    0x05
3956                })
3957            }
3958
3959            Method (\_SB.PCI0.PS2K._PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
3960            {
3961                Return (Package (0x02)
3962                {
3963                    0x0F,
3964                    0x04
3965                })
3966            }
3967        }
3968    }
3969
3970    OperationRegion (TEMM, SystemMemory, 0x000FF810, 0x0C)
3971    Field (TEMM, WordAcc, NoLock, Preserve)
3972    {
3973        TP1H,   16,
3974        TP1L,   16,
3975        TP2H,   16,
3976        TP2L,   16,
3977        TRPC,   16,
3978        SENF,   16
3979    }
3980
3981    Name (TVAR, Buffer (0x05)
3982    {
3983         0x00, 0x00, 0x00, 0x00, 0x00
3984    })
3985    CreateByteField (TVAR, 0x00, PLCY)
3986    CreateWordField (TVAR, 0x01, CTOS)
3987    CreateWordField (TVAR, 0x03, CTHY)
3988    Name (TBUF, Buffer (0x04)
3989    {
3990         0x00, 0x00, 0x00, 0x00
3991    })
3992    CreateByteField (TBUF, 0x00, DB00)
3993    CreateByteField (TBUF, 0x01, DB01)
3994    CreateWordField (TBUF, 0x00, DW00)
3995    CreateWordField (TBUF, 0x02, DW01)
3996    CreateDWordField (TBUF, 0x00, DATD)
3997    OperationRegion (IP, SystemIO, 0x0295, 0x02)
3998    Field (IP, ByteAcc, NoLock, Preserve)
3999    {
4000        INDS,   8,
4001        DATS,   8
4002    }
4003
4004    Method (SCFG, 1, NotSerialized)
4005    {
4006        SBYT (0x40, Arg0)
4007    }
4008
4009    Method (STOS, 3, NotSerialized)
4010    {
4011        Store (GBYT (0x4E), Local0)
4012        Or (Local0, 0x01, Local1)
4013        SBYT (0x4E, Local1)
4014        SBYT (0x55, Arg1)
4015        SBYT (0x56, Arg0)
4016        SBYT (0x4E, Local0)
4017    }
4018
4019    Method (STHY, 3, NotSerialized)
4020    {
4021        Store (GBYT (0x4E), Local0)
4022        Or (Local0, 0x01, Local1)
4023        SBYT (0x4E, Local1)
4024        SBYT (0x53, Arg1)
4025        SBYT (0x54, Arg0)
4026        SBYT (0x4E, Local0)
4027    }
4028
4029    Method (RTMP, 0, NotSerialized)
4030    {
4031        Store (GBYT (0x4E), Local0)
4032        Or (Local0, 0x01, Local1)
4033        SBYT (0x4E, Local1)
4034        Store (GBYT (0x50), Local1)
4035        Store (GBYT (0x51), Local2)
4036        ShiftLeft (Local1, 0x08, Local1)
4037        Or (Local1, Local2, Local3)
4038        ShiftRight (Local3, 0x07, Local3)
4039        ShiftLeft (Local3, 0x02, Local1)
4040        Add (Local3, Local1, Local3)
4041        Add (Local3, 0x0AAC, Local3)
4042        If (LGreater (Local3, 0x0E8A))
4043        {
4044            Store (0x0AAC, Local3)
4045        }
4046
4047        SBYT (0x4E, Local0)
4048        Return (Local3)
4049    }
4050
4051    Method (SBYT, 2, NotSerialized)
4052    {
4053        Store (Arg0, INDS)
4054        Store (Arg1, DATS)
4055    }
4056
4057    Method (GBYT, 1, NotSerialized)
4058    {
4059        Store (Arg0, INDS)
4060        Store (DATS, Local7)
4061        Return (Local7)
4062    }
4063
4064    Method (SFAN, 1, NotSerialized)
4065    {
4066        SBYT (0x01, Arg0)
4067        SBYT (0x02, Arg0)
4068    }
4069
4070    Scope (\_TZ)
4071    {
4072        Device (FAN)
4073        {
4074            Name (_HID, EisaId ("PNP0C0B"))  // _HID: Hardware ID
4075            Method (_INI, 0, NotSerialized)  // _INI: Initialize
4076            {
4077                Store (TP1H, CTOS)
4078                Store (TP1L, CTHY)
4079            }
4080        }
4081
4082        ThermalZone (THRM)
4083        {
4084            Name (_AL0, Package (0x01)  // _ALx: Active List
4085            {
4086                FAN
4087            })
4088            Method (_AC0, 0, NotSerialized)  // _ACx: Active Cooling
4089            {
4090                If (Or (PLCY, PLCY, Local7))
4091                {
4092                    Return (TP2H)
4093                }
4094                Else
4095                {
4096                    Return (TP1H)
4097                }
4098            }
4099
4100            Name (_PSL, Package (0x01)  // _PSL: Passive List
4101            {
4102                \_PR.CPU0
4103            })
4104            Name (_TSP, 0x3C)  // _TSP: Thermal Sampling Period
4105            Name (_TC1, 0x04)  // _TC1: Thermal Constant 1
4106            Name (_TC2, 0x03)  // _TC2: Thermal Constant 2
4107            Method (_PSV, 0, NotSerialized)  // _PSV: Passive Temperature
4108            {
4109                If (Or (PLCY, PLCY, Local7))
4110                {
4111                    Return (TP1H)
4112                }
4113                Else
4114                {
4115                    Return (TP2H)
4116                }
4117            }
4118
4119            Method (_CRT, 0, NotSerialized)  // _CRT: Critical Temperature
4120            {
4121                Return (TRPC)
4122            }
4123
4124            Method (_TMP, 0, NotSerialized)  // _TMP: Temperature
4125            {
4126                And (SENF, 0x01, Local6)
4127                If (LEqual (Local6, 0x01))
4128                {
4129                    Return (RTMP ())
4130                }
4131                Else
4132                {
4133                    Return (0x0B86)
4134                }
4135            }
4136
4137            Method (_SCP, 1, NotSerialized)  // _SCP: Set Cooling Policy
4138            {
4139                If (Arg0)
4140                {
4141                    Store (One, PLCY)
4142                }
4143                Else
4144                {
4145                    Store (Zero, PLCY)
4146                }
4147
4148                Notify (\_TZ.THRM, 0x81)
4149            }
4150
4151            Method (STMP, 2, NotSerialized)
4152            {
4153                Store (Arg1, DW00)
4154                If (Arg0)
4155                {
4156                    STHY (DB00, DB01, DW00)
4157                }
4158                Else
4159                {
4160                    STOS (DB00, DB01, DW00)
4161                }
4162            }
4163        }
4164    }
4165}
4166