Jump to content
2 posts in this topic

Recommended Posts

Ok the hardware first: Intel DG35EC mobo. Linux codec dump says ALC1200 but vender ID is 0888, and intel web site says ALC888S so I am inclined to say the 888S is the correct codec. I have been trying to get full audio by using DSDT patching. So far results are positive but not quite there yet.

 

When booting I get the "thump" from my speakers telling me my sound card is initializing. I also get the tell-tale "thump" when I shut down and re-start. However I get no audio devices (input or output) in system prefs and I cant seem to get this to work. What am i missing?

 

In system profiler I get:

 

Intel High Definition Audio:

 

Device ID: 0x8086D701

Audio ID: 12

Available Devices:

Line Out:

Connection: 1/8-Inch Jack

External Microphone:

Connection: 1/8-Inch Jack

External Microphone:

Connection: 1/8-Inch Jack

Headphone:

Connection: 1/8-Inch Jack

S/P-DIF Out:

Connection: Internal

 

That is actually correct and matches the info in the codec dump.

 

 

 

 

my dsdt.dsl file:

/*
* Intel ACPI Component Architecture
* AML Disassembler version 20090521
*
* Disassembly of /Users/chrislyons/Downloads/DSDT_Patcher1.0.1e/dsdt.aml, Wed Jan 27 15:26:56 2010
*
*
* Original Table Header:
*     Signature        "DSDT"
*     Length           0x00005764 (22372)
*     Revision         0x01 **** ACPI 1.0, no 64-bit math support
*     Checksum         0xA4
*     OEM ID           "INTEL "
*     OEM Table ID     "ECG3510M"
*     OEM Revision     0x00000075 (117)
*     Compiler ID      "INTL"
*     Compiler Version 0x20080926 (537397542)
*/
DefinitionBlock ("/Users/chrislyons/Downloads/DSDT_Patcher1.0.1e/dsdt.aml", "DSDT", 1, "INTEL ", "ECG3510M", 0x00000075)
{
   External (LANS)
   External (SCIS)
   External (\_SB_.PCI0.LPC_.IELK)
   External (\_SB_.PCI0.LPC_.IELK.ELPB)

   Scope (_PR)
   {
       Processor (CPU0, 0x01, 0x00000410, 0x06) {}
       Processor (CPU1, 0x02, 0x00000410, 0x06) {}
       Processor (CPU2, 0x03, 0x00000410, 0x06) {}
       Processor (CPU3, 0x04, 0x00000410, 0x06) {}
   }

   Name (_S0, Package (0x04)
   {
       Zero, 
       Zero, 
       Zero, 
       Zero
   })
   Name (_S1, Package (0x04)
   {
       One, 
       Zero, 
       Zero, 
       Zero
   })
   Name (_S3, Package (0x04)
   {
       0x05, 
       Zero, 
       Zero, 
       Zero
   })
   Name (_S4, Package (0x04)
   {
       0x06, 
       Zero, 
       Zero, 
       Zero
   })
   Name (_S5, Package (0x04)
   {
       0x07, 
       Zero, 
       Zero, 
       Zero
   })
   Scope (_GPE)
   {
       Method (_L03, 0, NotSerialized)
       {
           Notify (\_SB.PCI0.UHC1, 0x02)
           Notify (\_SB.SLPB, 0x02)
       }

       Method (_L04, 0, NotSerialized)
       {
           Notify (\_SB.PCI0.UHC2, 0x02)
           Notify (\_SB.SLPB, 0x02)
       }

       Method (_L05, 0, NotSerialized)
       {
           Notify (\_SB.PCI0.UHC5, 0x02)
           Notify (\_SB.SLPB, 0x02)
       }

       Method (_L06, 0, Serialized)
       {
           If (\_SB.PCI0.IGFX.GSSE)
           {
               \_SB.PCI0.IGFX.GSCI ()
           }
           Else
           {
               Store (One, SCIS)
           }
       }

       Method (_L07, 0, Serialized)
       {
       }

       Method (_L08, 0, NotSerialized)
       {
           Notify (\_SB.SLPB, 0x02)
       }

       Method (_L09, 0, NotSerialized)
       {
           If (\_SB.PCI0.PEX0.XPM1 (Zero))
           {
               Notify (\_SB.PCI0.PEX0, 0x02)
           }

           If (\_SB.PCI0.PEX1.XPM1 (One))
           {
               Notify (\_SB.PCI0.PEX1, 0x02)
           }

           If (\_SB.PCI0.PEX2.XPM1 (0x02))
           {
               Notify (\_SB.PCI0.PEX2, 0x02)
           }

           If (\_SB.PCI0.PEX3.XPM1 (0x03))
           {
               Notify (\_SB.PCI0.PEX3, 0x02)
           }

           If (\_SB.PCI0.PEX4.XPM1 (0x04))
           {
               Notify (\_SB.PCI0.PEX4, 0x02)
           }

           If (\_SB.PCI0.PEX5.XPM1 (0x05))
           {
               Notify (\_SB.PCI0.PEX5, 0x02)
           }

           If (\_SB.PCI0.PEGP.XPM1 (0x08))
           {
               Notify (\_SB.PCI0.PEGP, 0x02)
           }

           Notify (\_SB.SLPB, 0x02)
       }

       Method (_L0A, 0, NotSerialized)
       {
           Notify (\_SB.PCI0.LPC.IELK, 0x81)
           Store (One, \_SB.PCI0.LPC.IELK.ELPB)
       }

       Method (_L0B, 0, NotSerialized)
       {
           Notify (\_SB.PCI0.P32, 0x02)
           Notify (\_SB.SLPB, 0x02)
       }

       Method (_L0C, 0, NotSerialized)
       {
           Notify (\_SB.PCI0.UHC3, 0x02)
           Notify (\_SB.SLPB, 0x02)
       }

       Method (_L0D, 0, NotSerialized)
       {
           Notify (\_SB.PCI0.EHCI, 0x02)
           Notify (\_SB.PCI0.EHC2, 0x02)
           Notify (\_SB.PCI0.HDEF, 0x02)
           Notify (\_SB.PCI0.ILAN, 0x02)
           Notify (\_SB.SLPB, 0x02)
       }

       Method (_L0E, 0, NotSerialized)
       {
           Notify (\_SB.PCI0.UHC4, 0x02)
           Notify (\_SB.PCI0.UH42, 0x02)
           Notify (\_SB.SLPB, 0x02)
       }

       Method (_L1D, 0, NotSerialized)
       {
           Notify (\_SB.PCI0.LPC.PS2K, 0x02)
           Notify (\_SB.PCI0.LPC.PS2M, 0x02)
           Notify (\_SB.SLPB, 0x02)
       }
   }

   Device (_SB.SLPB)
   {
       Name (_HID, EisaId ("PNP0C0E"))
       Method (_PRW, 0, NotSerialized)
       {
           Return (Package (0x02)
           {
               0x1D, 
               0x04
           })
       }
   }

   Method (_WAK, 1, Serialized)
   {
       \_SB.PCI0.LPC.WAK (Arg0)
       If (CondRefOf (_OSI, Local0))
       {
           Store (0x21, OSTY)
       }

       Notify (\_SB.PCI0.UHC1, Zero)
       Notify (\_SB.PCI0.UHC2, Zero)
       Notify (\_SB.PCI0.UHC3, Zero)
       Notify (\_SB.PCI0.UHC4, Zero)
       Notify (\_SB.PCI0.UH42, Zero)
       Notify (\_SB.PCI0.UHC5, Zero)
       Notify (\_SB.PCI0.EHCI, Zero)
       Notify (\_SB.PCI0.EHC2, Zero)
       Return (Zero)
   }

Method (DTGP, 5, NotSerialized)
   	{
   		If (LEqual (Arg0, Buffer (0x10)
              {
                  /* 0000 */    0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44, 
                  /* 0008 */    0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B
               }))
       	{
           	If (LEqual (Arg1, One))
           	{
               	If (LEqual (Arg2, Zero))
               	{
                   	Store (Buffer (One)
                       	{
                           	0x03
                       	}, Arg4)
                   	Return (One)
               	}

               	If (LEqual (Arg2, One))
               	{
                   	Return (One)
               	}
           	}
       	}

      	 	Store (Buffer (One)
        	{
          		0x00
        	}, Arg4)
    		Return (Zero)
  		 }
  		 Name (BUFA, ResourceTemplate ()
           {
               IRQ (Level, ActiveLow, Shared, )
                   {3,4,5,6,7,9,10,11,12,14,15}
           })
        Name (BUFB, ResourceTemplate ()
           {
               IRQ (Level, ActiveLow, Shared, )
                   {}
           })
        CreateWordField (BUFB, One, IRQV)

   Method (_PTS, 1, NotSerialized)
   {
       \_SB.PCI0.PEX0.XPM1 (Zero)
       \_SB.PCI0.PEX1.XPM1 (Zero)
       \_SB.PCI0.PEX2.XPM1 (Zero)
       \_SB.PCI0.PEX3.XPM1 (Zero)
       \_SB.PCI0.PEX4.XPM1 (Zero)
       \_SB.PCI0.PEX5.XPM1 (Zero)
       \_SB.PCI0.PEGP.XPM1 (0x08)
       While (PXGS)
       {
           Store (One, PXGS)
       }

       \_SB.PCI0.LPC.PTS (Arg0)
   }

   Name (GPIC, Zero)
   Method (_PIC, 1, NotSerialized)
   {
       Store (Arg0, GPIC)
   }

   OperationRegion (DBG0, SystemIO, 0x80, One)
   Field (DBG0, ByteAcc, NoLock, Preserve)
   {
       IO80,   8
   }

   OperationRegion (ACMS, SystemIO, 0x72, 0x02)
   Field (ACMS, ByteAcc, NoLock, Preserve)
   {
       CMSI,   8, 
       CMSD,   8
   }

   IndexField (CMSI, CMSD, ByteAcc, NoLock, Preserve)
   {
               Offset (0x6E), 
       WAS4,   8, 
       OSTY,   8, 
               Offset (0x7D), 
       HPEE,   1, 
       VOFF,   1, 
               Offset (0x7E), 
           ,   2, 
       MSEP,   1, 
           ,   1, 
       TPME,   1, 
       SPND,   1, 
       KBEP,   1, 
       MSAR,   1
   }

   OperationRegion (GPE0, SystemIO, 0x0428, 0x02)
   Field (GPE0, ByteAcc, NoLock, WriteAsZeros)
   {
           ,   9, 
       PXGS,   1, 
               Offset (0x02)
   }

   OperationRegion (SMIO, SystemIO, 0xB2, 0x02)
   Field (SMIO, ByteAcc, NoLock, Preserve)
   {
       APMC,   8, 
       APMD,   8
   }

   Scope (_SB)
   {
       Device (PCI0)
       {
           Name (_HID, EisaId ("PNP0A03"))
           Name (_ADR, Zero)
           Method (_INI, 0, NotSerialized)
           {
               If (CondRefOf (_OSI, Local0))
               {
                   Store (0x21, OSTY)
               }
           }

           Name (PBRS, ResourceTemplate ()
           {
               WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
                   0x0000,             // Granularity
                   0x0000,             // Range Minimum
                   0x00FF,             // Range Maximum
                   0x0000,             // Translation Offset
                   0x0100,             // Length
                   ,, )
               IO (Decode16,
                   0x0CF8,             // Range Minimum
                   0x0CF8,             // Range Maximum
                   0x01,               // Alignment
                   0x08,               // Length
                   )
               WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                   0x0000,             // Granularity
                   0x0000,             // Range Minimum
                   0x0CF7,             // Range Maximum
                   0x0000,             // Translation Offset
                   0x0CF8,             // Length
                   ,, , TypeStatic)
               WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                   0x0000,             // Granularity
                   0x0D00,             // Range Minimum
                   0xFFFF,             // Range Maximum
                   0x0000,             // Translation Offset
                   0xF300,             // Length
                   ,, , TypeStatic)
               DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                   0x00000000,         // Granularity
                   0x000A0000,         // Range Minimum
                   0x000BFFFF,         // Range Maximum
                   0x00000000,         // Translation Offset
                   0x00020000,         // Length
                   ,, , AddressRangeMemory, TypeStatic)
               DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                   0x00000000,         // Granularity
                   0x00000000,         // Range Minimum
                   0x00000000,         // Range Maximum
                   0x00000000,         // Translation Offset
                   0x00000000,         // Length
                   ,, _Y01, AddressRangeMemory, TypeStatic)
               DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                   0x00000000,         // Granularity
                   0xF8000000,         // Range Minimum
                   0xFEAFFFFF,         // Range Maximum
                   0x00000000,         // Translation Offset
                   0x06B00000,         // Length
                   ,, , AddressRangeMemory, TypeStatic)
               DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                   0x00000000,         // Granularity
                   0x00000000,         // Range Minimum
                   0x00000000,         // Range Maximum
                   0x00000000,         // Translation Offset
                   0x00000000,         // Length
                   ,, _Y00, AddressRangeMemory, TypeStatic)
           })
           Method (_CRS, 0, NotSerialized)
           {
               CreateDWordField (PBRS, \_SB.PCI0._Y00._MIN, TMIN)
               CreateDWordField (PBRS, \_SB.PCI0._Y00._MAX, TMAX)
               CreateDWordField (PBRS, \_SB.PCI0._Y00._LEN, TLEN)
               If (LNotEqual (MDET (), 0xF0000000))
               {
                   Store (MDET (), TMIN)
                   Store (0xEFFFFFFF, TMAX)
                   Subtract (TMAX, TMIN, TLEN)
                   Increment (TLEN)
               }

               EROM ()
               Return (PBRS)
           }

           OperationRegion (TMEM, PCI_Config, 0xB0, 0x02)
           Field (TMEM, WordAcc, NoLock, Preserve)
           {
               TOUD,   16
           }

           Method (MDET, 0, NotSerialized)
           {
               Store (TOUD, Local0)
               And (Local0, 0x0FFF, Local1)
               If (Local1)
               {
                   And (Local0, 0xF000, Local0)
                   Add (Local0, 0x1000, Local0)
               }

               ShiftLeft (Local0, 0x10, Local0)
               Return (Local0)
           }

           OperationRegion (PAMX, PCI_Config, 0x90, 0x07)
           Field (PAMX, ByteAcc, NoLock, Preserve)
           {
                   ,   4, 
               BSEG,   4, 
               PAMS,   48
           }

           Name (ERNG, Package (0x0D)
           {
               0x000C0000, 
               0x000C4000, 
               0x000C8000, 
               0x000CC000, 
               0x000D0000, 
               0x000D4000, 
               0x000D8000, 
               0x000DC000, 
               0x000E0000, 
               0x000E4000, 
               0x000E8000, 
               0x000EC000, 
               0x000F0000
           })
           Name (PAMB, Buffer (0x07) {})
           Method (EROM, 0, NotSerialized)
           {
               CreateDWordField (PBRS, \_SB.PCI0._Y01._MIN, RMIN)
               CreateDWordField (PBRS, \_SB.PCI0._Y01._MAX, RMAX)
               CreateDWordField (PBRS, \_SB.PCI0._Y01._LEN, RLEN)
               CreateByteField (PAMB, 0x06, BREG)
               Store (PAMS, PAMB)
               Store (BSEG, BREG)
               Store (Zero, RMIN)
               Store (Zero, RMAX)
               Store (Zero, RLEN)
               Store (Zero, Local0)
               While (LLess (Local0, 0x0D))
               {
                   ShiftRight (Local0, One, Local1)
                   Store (DerefOf (Index (PAMB, Local1)), Local2)
                   If (And (Local0, One))
                   {
                       ShiftRight (Local2, 0x04, Local2)
                   }

                   And (Local2, 0x03, Local2)
                   If (RMIN)
                   {
                       If (LEqual (Local2, 0x03))
                       {
                           Add (DerefOf (Index (ERNG, Local0)), 0x3FFF, RMAX)
                           If (LEqual (RMAX, 0x000F3FFF))
                           {
                               Store (0x000FFFFF, RMAX)
                           }

                           Subtract (RMAX, RMIN, RLEN)
                           Increment (RLEN)
                       }
                       Else
                       {
                           Store (0x0C, Local0)
                       }
                   }
                   Else
                   {
                       If (LEqual (Local2, 0x03))
                       {
                           Store (DerefOf (Index (ERNG, Local0)), RMIN)
                           Add (DerefOf (Index (ERNG, Local0)), 0x3FFF, RMAX)
                           If (LEqual (RMAX, 0x000F3FFF))
                           {
                               Store (0x000FFFFF, RMAX)
                           }

                           Subtract (RMAX, RMIN, RLEN)
                           Increment (RLEN)
                       }
                       Else
                       {
                       }
                   }

                   Increment (Local0)
               }
           }

           Device (IOCM)
           {
               Name (_HID, EisaId ("PNP0C02"))
               Name (_UID, 0x03)
               Name (_CRS, ResourceTemplate ()
               {
                   Memory32Fixed (ReadOnly,
                       0xF0000000,         // Address Base
                       0x08000000,         // Address Length
                       )
                   Memory32Fixed (ReadOnly,
                       0xFED13000,         // Address Base
                       0x00001000,         // Address Length
                       )
                   Memory32Fixed (ReadOnly,
                       0xFED14000,         // Address Base
                       0x00004000,         // Address Length
                       )
                   Memory32Fixed (ReadOnly,
                       0xFED18000,         // Address Base
                       0x00001000,         // Address Length
                       )
                   Memory32Fixed (ReadOnly,
                       0xFED19000,         // Address Base
                       0x00001000,         // Address Length
                       )
                   Memory32Fixed (ReadOnly,
                       0xFED1C000,         // Address Base
                       0x00004000,         // Address Length
                       )
                   Memory32Fixed (ReadOnly,
                       0xFED20000,         // Address Base
                       0x00020000,         // Address Length
                       )
                   Memory32Fixed (ReadOnly,
                       0xFED45000,         // Address Base
                       0x00055000,         // Address Length
                       )
                   Memory32Fixed (ReadOnly,
                       0x000C0000,         // Address Base
                       0x00020000,         // Address Length
                       )
                   Memory32Fixed (ReadOnly,
                       0x000E0000,         // Address Base
                       0x00020000,         // Address Length
                       )
               })
           }

           Method (_PRT, 0, NotSerialized)
           {
               If (LEqual (GPIC, Zero))
               {
                   Return (Package (0x18)
                   {
                       Package (0x04)
                       {
                           0x0001FFFF, 
                           Zero, 
                           ^LPC.LNKA, 
                           Zero
                       }, 

                       Package (0x04)
                       {
                           0x0001FFFF, 
                           One, 
                           ^LPC.LNKB, 
                           Zero
                       }, 

                       Package (0x04)
                       {
                           0x0001FFFF, 
                           0x02, 
                           ^LPC.LNKC, 
                           Zero
                       }, 

                       Package (0x04)
                       {
                           0x0001FFFF, 
                           0x03, 
                           ^LPC.LNKD, 
                           Zero
                       }, 

                       Package (0x04)
                       {
                           0x0002FFFF, 
                           Zero, 
                           ^LPC.LNKA, 
                           Zero
                       }, 

                       Package (0x04)
                       {
                           0x0003FFFF, 
                           Zero, 
                           ^LPC.LNKA, 
                           Zero
                       }, 

                       Package (0x04)
                       {
                           0x0003FFFF, 
                           One, 
                           ^LPC.LNKB, 
                           Zero
                       }, 

                       Package (0x04)
                       {
                           0x0003FFFF, 
                           0x02, 
                           ^LPC.LNKC, 
                           Zero
                       }, 

                       Package (0x04)
                       {
                           0x0019FFFF, 
                           Zero, 
                           ^LPC.LNKE, 
                           Zero
                       }, 

                       Package (0x04)
                       {
                           0x001AFFFF, 
                           Zero, 
                           ^LPC.LNKA, 
                           Zero
                       }, 

                       Package (0x04)
                       {
                           0x001AFFFF, 
                           One, 
                           ^LPC.LNKF, 
                           Zero
                       }, 

                       Package (0x04)
                       {
                           0x001AFFFF, 
                           0x02, 
                           ^LPC.LNKC, 
                           Zero
                       }, 

                       Package (0x04)
                       {
                           0x001BFFFF, 
                           Zero, 
                           ^LPC.LNKG, 
                           Zero
                       }, 

                       Package (0x04)
                       {
                           0x001CFFFF, 
                           Zero, 
                           ^LPC.LNKB, 
                           Zero
                       }, 

                       Package (0x04)
                       {
                           0x001CFFFF, 
                           One, 
                           ^LPC.LNKA, 
                           Zero
                       }, 

                       Package (0x04)
                       {
                           0x001CFFFF, 
                           0x02, 
                           ^LPC.LNKC, 
                           Zero
                       }, 

                       Package (0x04)
                       {
                           0x001CFFFF, 
                           0x03, 
                           ^LPC.LNKD, 
                           Zero
                       }, 

                       Package (0x04)
                       {
                           0x001DFFFF, 
                           Zero, 
                           ^LPC.LNKH, 
                           Zero
                       }, 

                       Package (0x04)
                       {
                           0x001DFFFF, 
                           One, 
                           ^LPC.LNKD, 
                           Zero
                       }, 

                       Package (0x04)
                       {
                           0x001DFFFF, 
                           0x02, 
                           ^LPC.LNKC, 
                           Zero
                       }, 

                       Package (0x04)
                       {
                           0x001DFFFF, 
                           0x03, 
                           ^LPC.LNKA, 
                           Zero
                       }, 

                       Package (0x04)
                       {
                           0x001FFFFF, 
                           Zero, 
                           ^LPC.LNKD, 
                           Zero
                       }, 

                       Package (0x04)
                       {
                           0x001FFFFF, 
                           One, 
                           ^LPC.LNKF, 
                           Zero
                       }, 

                       Package (0x04)
                       {
                           0x001FFFFF, 
                           0x02, 
                           ^LPC.LNKA, 
                           Zero
                       }
                   })
               }
               Else
               {
                   Return (Package (0x18)
                   {
                       Package (0x04)
                       {
                           0x0001FFFF, 
                           Zero, 
                           Zero, 
                           0x10
                       }, 

                       Package (0x04)
                       {
                           0x0001FFFF, 
                           One, 
                           Zero, 
                           0x11
                       }, 

                       Package (0x04)
                       {
                           0x0001FFFF, 
                           0x02, 
                           Zero, 
                           0x12
                       }, 

                       Package (0x04)
                       {
                           0x0001FFFF, 
                           0x03, 
                           Zero, 
                           0x13
                       }, 

                       Package (0x04)
                       {
                           0x0002FFFF, 
                           Zero, 
                           Zero, 
                           0x10
                       }, 

                       Package (0x04)
                       {
                           0x0003FFFF, 
                           Zero, 
                           Zero, 
                           0x10
                       }, 

                       Package (0x04)
                       {
                           0x0003FFFF, 
                           One, 
                           Zero, 
                           0x11
                       }, 

                       Package (0x04)
                       {
                           0x0003FFFF, 
                           0x02, 
                           Zero, 
                           0x12
                       }, 

                       Package (0x04)
                       {
                           0x0019FFFF, 
                           Zero, 
                           Zero, 
                           0x14
                       }, 

                       Package (0x04)
                       {
                           0x001AFFFF, 
                           Zero, 
                           Zero, 
                           0x10
                       }, 

                       Package (0x04)
                       {
                           0x001AFFFF, 
                           One, 
                           Zero, 
                           0x15
                       }, 

                       Package (0x04)
                       {
                           0x001AFFFF, 
                           0x02, 
                           Zero, 
                           0x12
                       }, 

                       Package (0x04)
                       {
                           0x001BFFFF, 
                           Zero, 
                           Zero, 
                           0x16
                       }, 

                       Package (0x04)
                       {
                           0x001CFFFF, 
                           Zero, 
                           Zero, 
                           0x11
                       }, 

                       Package (0x04)
                       {
                           0x001CFFFF, 
                           One, 
                           Zero, 
                           0x10
                       }, 

                       Package (0x04)
                       {
                           0x001CFFFF, 
                           0x02, 
                           Zero, 
                           0x12
                       }, 

                       Package (0x04)
                       {
                           0x001CFFFF, 
                           0x03, 
                           Zero, 
                           0x13
                       }, 

                       Package (0x04)
                       {
                           0x001DFFFF, 
                           Zero, 
                           Zero, 
                           0x17
                       }, 

                       Package (0x04)
                       {
                           0x001DFFFF, 
                           One, 
                           Zero, 
                           0x13
                       }, 

                       Package (0x04)
                       {
                           0x001DFFFF, 
                           0x02, 
                           Zero, 
                           0x12
                       }, 

                       Package (0x04)
                       {
                           0x001DFFFF, 
                           0x03, 
                           Zero, 
                           0x10
                       }, 

                       Package (0x04)
                       {
                           0x001FFFFF, 
                           Zero, 
                           Zero, 
                           0x13
                       }, 

                       Package (0x04)
                       {
                           0x001FFFFF, 
                           One, 
                           Zero, 
                           0x15
                       }, 

                       Package (0x04)
                       {
                           0x001FFFFF, 
                           0x02, 
                           Zero, 
                           0x10
                       }
                   })
               }
           }

           Device (P32)
           {
               Name (_ADR, 0x001E0000)
               Name (UPS1, Package (0x02)
               {
                   0x0B, 
                   0x04
               })
               Method (_PRW, 0, NotSerialized)
               {
                   Return (UPS1)
               }

               Method (_PRT, 0, NotSerialized)
               {
                   If (LEqual (GPIC, Zero))
                   {
                       Return (Package (0x06)
                       {
                           Package (0x04)
                           {
                               0x0008FFFF, 
                               Zero, 
                               ^^LPC.LNKE, 
                               Zero
                           }, 

                           Package (0x04)
                           {
                               0x0003FFFF, 
                               Zero, 
                               ^^LPC.LNKB, 
                               Zero
                           }, 

                           Package (0x04)
                           {
                               0x0003FFFF, 
                               One, 
                               ^^LPC.LNKC, 
                               Zero
                           }, 

                           Package (0x04)
                           {
                               0x0003FFFF, 
                               0x02, 
                               ^^LPC.LNKD, 
                               Zero
                           }, 

                           Package (0x04)
                           {
                               0x0003FFFF, 
                               0x03, 
                               ^^LPC.LNKA, 
                               Zero
                           }, 

                           Package (0x04)
                           {
                               0x0005FFFF, 
                               Zero, 
                               ^^LPC.LNKE, 
                               Zero
                           }
                       })
                   }
                   Else
                   {
                       Return (Package (0x06)
                       {
                           Package (0x04)
                           {
                               0x0008FFFF, 
                               Zero, 
                               Zero, 
                               0x14
                           }, 

                           Package (0x04)
                           {
                               0x0003FFFF, 
                               Zero, 
                               Zero, 
                               0x11
                           }, 

                           Package (0x04)
                           {
                               0x0003FFFF, 
                               One, 
                               Zero, 
                               0x12
                           }, 

                           Package (0x04)
                           {
                               0x0003FFFF, 
                               0x02, 
                               Zero, 
                               0x13
                           }, 

                           Package (0x04)
                           {
                               0x0003FFFF, 
                               0x03, 
                               Zero, 
                               0x10
                           }, 

                           Package (0x04)
                           {
                               0x0005FFFF, 
                               Zero, 
                               Zero, 
                               0x14
                           }
                       })
                   }
               }
           }

           Device (LPC)
           {
               Name (_ADR, 0x001F0000)
               OperationRegion (LPIO, PCI_Config, 0x80, 0x04)
               Scope (\)
               {
                   Field (\_SB.PCI0.LPC.LPIO, ByteAcc, NoLock, Preserve)
                   {
                       UAIO,   8, 
                       PRIO,   8, 
                       LPE1,   8, 
                       LPE2,   8
                   }

                   Method (DISD, 1, NotSerialized)
                   {
                       If (LEqual (Arg0, Zero))
                       {
                           And (LPE1, 0xFE, LPE1)
                       }

                       If (LEqual (Arg0, 0x02))
                       {
                           And (LPE1, 0xFB, LPE1)
                       }

                       If (LEqual (Arg0, 0x03))
                       {
                           And (LPE1, 0xF7, LPE1)
                       }
                   }

                   Method (CKIO, 2, NotSerialized)
                   {
                       If (LEqual (Arg1, Zero))
                       {
                           Or (LPE1, One, LPE1)
                           And (UAIO, 0xF0, Local0)
                           If (LEqual (Arg0, 0x03F8))
                           {
                               Or (Local0, Zero, UAIO)
                           }

                           If (LEqual (Arg0, 0x02F8))
                           {
                               Or (Local0, One, UAIO)
                           }

                           If (LEqual (Arg0, 0x02E8))
                           {
                               Or (Local0, 0x05, UAIO)
                           }

                           If (LEqual (Arg0, 0x03E8))
                           {
                               Or (Local0, 0x07, UAIO)
                           }
                       }

                       If (LEqual (Arg1, 0x02))
                       {
                           Or (LPE1, 0x04, LPE1)
                           And (PRIO, 0xFC, Local0)
                           If (LEqual (Arg0, 0x0378))
                           {
                               Or (Local0, Zero, PRIO)
                           }

                           If (LEqual (Arg0, 0x0278))
                           {
                               Or (Local0, One, PRIO)
                           }
                       }

                       If (LEqual (Arg1, 0x03))
                       {
                           Or (LPE1, 0x08, LPE1)
                       }
                   }
               }

               OperationRegion (PRR0, PCI_Config, 0x60, 0x04)
               Field (PRR0, AnyAcc, NoLock, Preserve)
               {
                   PIRA,   8, 
                   PIRB,   8, 
                   PIRC,   8, 
                   PIRD,   8
               }

               OperationRegion (PRR1, PCI_Config, 0x68, 0x04)
               Field (PRR1, AnyAcc, NoLock, Preserve)
               {
                   PIRE,   8, 
                   PIRF,   8, 
                   PIRG,   8, 
                   PIRH,   8
               }

               Device (LNKA)
               {
                   Name (_HID, EisaId ("PNP0C0F"))
                   Name (_UID, One)
                   Method (_STA, 0, NotSerialized)
                   {
                       If (And (PIRA, 0x80))
                       {
                           Return (0x09)
                       }
                       Else
                       {
                           Return (0x0B)
                       }
                   }

                   Method (_DIS, 0, NotSerialized)
                   {
                       Or (PIRA, 0x80, PIRA)
                   }

                   Method (_CRS, 0, NotSerialized)
                   {
                       Name (BUF0, ResourceTemplate ()
                       {
                           IRQ (Level, ActiveLow, Shared, )
                               {0}
                       })
                       CreateWordField (BUF0, One, IRQW)
                       If (And (PIRA, 0x80))
                       {
                           Store (Zero, Local0)
                       }
                       Else
                       {
                           Store (One, Local0)
                       }

                       ShiftLeft (Local0, And (PIRA, 0x0F), IRQW)
                       Return (BUF0)
                   }

                   Name (_PRS, ResourceTemplate ()
                   {
                       IRQ (Level, ActiveLow, Shared, )
                           {3,4,5,7,9,10,11,12}
                   })
                   Method (_SRS, 1, NotSerialized)
                   {
                       CreateWordField (Arg0, One, IRQW)
                       FindSetRightBit (IRQW, Local0)
                       If (LNotEqual (IRQW, Zero))
                       {
                           And (Local0, 0x7F, Local0)
                           Decrement (Local0)
                       }
                       Else
                       {
                           Or (Local0, 0x80, Local0)
                       }

                       Store (Local0, PIRA)
                   }
               }

               Device (LNKB)
               {
                   Name (_HID, EisaId ("PNP0C0F"))
                   Name (_UID, 0x02)
                   Method (_STA, 0, NotSerialized)
                   {
                       If (And (PIRB, 0x80))
                       {
                           Return (0x09)
                       }
                       Else
                       {
                           Return (0x0B)
                       }
                   }

                   Method (_DIS, 0, NotSerialized)
                   {
                       Or (PIRB, 0x80, PIRB)
                   }

                   Method (_CRS, 0, NotSerialized)
                   {
                       Name (BUF0, ResourceTemplate ()
                       {
                           IRQ (Level, ActiveLow, Shared, )
                               {0}
                       })
                       CreateWordField (BUF0, One, IRQW)
                       If (And (PIRB, 0x80))
                       {
                           Store (Zero, Local0)
                       }
                       Else
                       {
                           Store (One, Local0)
                       }

                       ShiftLeft (Local0, And (PIRB, 0x0F), IRQW)
                       Return (BUF0)
                   }

                   Name (_PRS, ResourceTemplate ()
                   {
                       IRQ (Level, ActiveLow, Shared, )
                           {3,4,5,7,9,10,11,12}
                   })
                   Method (_SRS, 1, NotSerialized)
                   {
                       CreateWordField (Arg0, One, IRQW)
                       FindSetRightBit (IRQW, Local0)
                       If (LNotEqual (IRQW, Zero))
                       {
                           And (Local0, 0x7F, Local0)
                           Decrement (Local0)
                       }
                       Else
                       {
                           Or (Local0, 0x80, Local0)
                       }

                       Store (Local0, PIRB)
                   }
               }

               Device (LNKC)
               {
                   Name (_HID, EisaId ("PNP0C0F"))
                   Name (_UID, 0x03)
                   Method (_STA, 0, NotSerialized)
                   {
                       If (And (PIRC, 0x80))
                       {
                           Return (0x09)
                       }
                       Else
                       {
                           Return (0x0B)
                       }
                   }

                   Method (_DIS, 0, NotSerialized)
                   {
                       Or (PIRC, 0x80, PIRC)
                   }

                   Method (_CRS, 0, NotSerialized)
                   {
                       Name (BUF0, ResourceTemplate ()
                       {
                           IRQ (Level, ActiveLow, Shared, )
                               {0}
                       })
                       CreateWordField (BUF0, One, IRQW)
                       If (And (PIRC, 0x80))
                       {
                           Store (Zero, Local0)
                       }
                       Else
                       {
                           Store (One, Local0)
                       }

                       ShiftLeft (Local0, And (PIRC, 0x0F), IRQW)
                       Return (BUF0)
                   }

                   Name (_PRS, ResourceTemplate ()
                   {
                       IRQ (Level, ActiveLow, Shared, )
                           {3,4,5,7,9,10,11,12}
                   })
                   Method (_SRS, 1, NotSerialized)
                   {
                       CreateWordField (Arg0, One, IRQW)
                       FindSetRightBit (IRQW, Local0)
                       If (LNotEqual (IRQW, Zero))
                       {
                           And (Local0, 0x7F, Local0)
                           Decrement (Local0)
                       }
                       Else
                       {
                           Or (Local0, 0x80, Local0)
                       }

                       Store (Local0, PIRC)
                   }
               }

               Device (LNKD)
               {
                   Name (_HID, EisaId ("PNP0C0F"))
                   Name (_UID, 0x04)
                   Method (_STA, 0, NotSerialized)
                   {
                       If (And (PIRD, 0x80))
                       {
                           Return (0x09)
                       }
                       Else
                       {
                           Return (0x0B)
                       }
                   }

                   Method (_DIS, 0, NotSerialized)
                   {
                       Or (PIRD, 0x80, PIRD)
                   }

                   Method (_CRS, 0, NotSerialized)
                   {
                       Name (BUF0, ResourceTemplate ()
                       {
                           IRQ (Level, ActiveLow, Shared, )
                               {0}
                       })
                       CreateWordField (BUF0, One, IRQW)
                       If (And (PIRD, 0x80))
                       {
                           Store (Zero, Local0)
                       }
                       Else
                       {
                           Store (One, Local0)
                       }

                       ShiftLeft (Local0, And (PIRD, 0x0F), IRQW)
                       Return (BUF0)
                   }

                   Name (_PRS, ResourceTemplate ()
                   {
                       IRQ (Level, ActiveLow, Shared, )
                           {3,4,5,7,9,10,11,12}
                   })
                   Method (_SRS, 1, NotSerialized)
                   {
                       CreateWordField (Arg0, One, IRQW)
                       FindSetRightBit (IRQW, Local0)
                       If (LNotEqual (IRQW, Zero))
                       {
                           And (Local0, 0x7F, Local0)
                           Decrement (Local0)
                       }
                       Else
                       {
                           Or (Local0, 0x80, Local0)
                       }

                       Store (Local0, PIRD)
                   }
               }

               Device (LNKE)
               {
                   Name (_HID, EisaId ("PNP0C0F"))
                   Name (_UID, 0x05)
                   Method (_STA, 0, NotSerialized)
                   {
                       If (And (PIRE, 0x80))
                       {
                           Return (0x09)
                       }
                       Else
                       {
                           Return (0x0B)
                       }
                   }

                   Method (_DIS, 0, NotSerialized)
                   {
                       Or (PIRE, 0x80, PIRE)
                   }

                   Method (_CRS, 0, NotSerialized)
                   {
                       Name (BUF0, ResourceTemplate ()
                       {
                           IRQ (Level, ActiveLow, Shared, )
                               {0}
                       })
                       CreateWordField (BUF0, One, IRQW)
                       If (And (PIRE, 0x80))
                       {
                           Store (Zero, Local0)
                       }
                       Else
                       {
                           Store (One, Local0)
                       }

                       ShiftLeft (Local0, And (PIRE, 0x0F), IRQW)
                       Return (BUF0)
                   }

                   Name (_PRS, ResourceTemplate ()
                   {
                       IRQ (Level, ActiveLow, Shared, )
                           {3,4,5,7,9,10,11,12}
                   })
                   Method (_SRS, 1, NotSerialized)
                   {
                       CreateWordField (Arg0, One, IRQW)
                       FindSetRightBit (IRQW, Local0)
                       If (LNotEqual (IRQW, Zero))
                       {
                           And (Local0, 0x7F, Local0)
                           Decrement (Local0)
                       }
                       Else
                       {
                           Or (Local0, 0x80, Local0)
                       }

                       Store (Local0, PIRE)
                   }
               }

               Device (LNKF)
               {
                   Name (_HID, EisaId ("PNP0C0F"))
                   Name (_UID, 0x06)
                   Method (_STA, 0, NotSerialized)
                   {
                       If (And (PIRF, 0x80))
                       {
                           Return (0x09)
                       }
                       Else
                       {
                           Return (0x0B)
                       }
                   }

                   Method (_DIS, 0, NotSerialized)
                   {
                       Or (PIRB, 0x80, PIRF)
                   }

                   Method (_CRS, 0, NotSerialized)
                   {
                       Name (BUF0, ResourceTemplate ()
                       {
                           IRQ (Level, ActiveLow, Shared, )
                               {0}
                       })
                       CreateWordField (BUF0, One, IRQW)
                       If (And (PIRF, 0x80))
                       {
                           Store (Zero, Local0)
                       }
                       Else
                       {
                           Store (One, Local0)
                       }

                       ShiftLeft (Local0, And (PIRF, 0x0F), IRQW)
                       Return (BUF0)
                   }

                   Name (_PRS, ResourceTemplate ()
                   {
                       IRQ (Level, ActiveLow, Shared, )
                           {3,4,5,7,9,10,11,12}
                   })
                   Method (_SRS, 1, NotSerialized)
                   {
                       CreateWordField (Arg0, One, IRQW)
                       FindSetRightBit (IRQW, Local0)
                       If (LNotEqual (IRQW, Zero))
                       {
                           And (Local0, 0x7F, Local0)
                           Decrement (Local0)
                       }
                       Else
                       {
                           Or (Local0, 0x80, Local0)
                       }

                       Store (Local0, PIRF)
                   }
               }

               Device (LNKG)
               {
                   Name (_HID, EisaId ("PNP0C0F"))
                   Name (_UID, 0x07)
                   Method (_STA, 0, NotSerialized)
                   {
                       If (And (PIRG, 0x80))
                       {
                           Return (0x09)
                       }
                       Else
                       {
                           Return (0x0B)
                       }
                   }

                   Method (_DIS, 0, NotSerialized)
                   {
                       Or (PIRG, 0x80, PIRG)
                   }

                   Method (_CRS, 0, NotSerialized)
                   {
                       Name (BUF0, ResourceTemplate ()
                       {
                           IRQ (Level, ActiveLow, Shared, )
                               {0}
                       })
                       CreateWordField (BUF0, One, IRQW)
                       If (And (PIRG, 0x80))
                       {
                           Store (Zero, Local0)
                       }
                       Else
                       {
                           Store (One, Local0)
                       }

                       ShiftLeft (Local0, And (PIRG, 0x0F), IRQW)
                       Return (BUF0)
                   }

                   Name (_PRS, ResourceTemplate ()
                   {
                       IRQ (Level, ActiveLow, Shared, )
                           {3,4,5,7,9,10,11,12}
                   })
                   Method (_SRS, 1, NotSerialized)
                   {
                       CreateWordField (Arg0, One, IRQW)
                       FindSetRightBit (IRQW, Local0)
                       If (LNotEqual (IRQW, Zero))
                       {
                           And (Local0, 0x7F, Local0)
                           Decrement (Local0)
                       }
                       Else
                       {
                           Or (Local0, 0x80, Local0)
                       }

                       Store (Local0, PIRG)
                   }
               }

               Device (LNKH)
               {
                   Name (_HID, EisaId ("PNP0C0F"))
                   Name (_UID, 0x08)
                   Method (_STA, 0, NotSerialized)
                   {
                       If (And (PIRH, 0x80))
                       {
                           Return (0x09)
                       }
                       Else
                       {
                           Return (0x0B)
                       }
                   }

                   Method (_DIS, 0, NotSerialized)
                   {
                       Or (PIRH, 0x80, PIRH)
                   }

                   Method (_CRS, 0, NotSerialized)
                   {
                       Name (BUF0, ResourceTemplate ()
                       {
                           IRQ (Level, ActiveLow, Shared, )
                               {0}
                       })
                       CreateWordField (BUF0, One, IRQW)
                       If (And (PIRH, 0x80))
                       {
                           Store (Zero, Local0)
                       }
                       Else
                       {
                           Store (One, Local0)
                       }

                       ShiftLeft (Local0, And (PIRH, 0x0F), IRQW)
                       Return (BUF0)
                   }

                   Name (_PRS, ResourceTemplate ()
                   {
                       IRQ (Level, ActiveLow, Shared, )
                           {3,4,5,7,9,10,11,12}
                   })
                   Method (_SRS, 1, NotSerialized)
                   {
                       CreateWordField (Arg0, One, IRQW)
                       FindSetRightBit (IRQW, Local0)
                       If (LNotEqual (IRQW, Zero))
                       {
                           And (Local0, 0x7F, Local0)
                           Decrement (Local0)
                       }
                       Else
                       {
                           Or (Local0, 0x80, Local0)
                       }

                       Store (Local0, PIRH)
                   }
               }

               Device (DMAC)
               {
                   Name (_HID, EisaId ("PNP0200"))
                   Name (_CRS, ResourceTemplate ()
                   {
                       IO (Decode16,
                           0x0000,             // Range Minimum
                           0x0000,             // Range Maximum
                           0x00,               // Alignment
                           0x10,               // Length
                           )
                       IO (Decode16,
                           0x0081,             // Range Minimum
                           0x0081,             // Range Maximum
                           0x00,               // Alignment
                           0x03,               // Length
                           )
                       IO (Decode16,
                           0x0087,             // Range Minimum
                           0x0087,             // Range Maximum
                           0x00,               // Alignment
                           0x01,               // Length
                           )
                       IO (Decode16,
                           0x0089,             // Range Minimum
                           0x0089,             // Range Maximum
                           0x00,               // Alignment
                           0x03,               // Length
                           )
                       IO (Decode16,
                           0x008F,             // Range Minimum
                           0x008F,             // Range Maximum
                           0x00,               // Alignment
                           0x01,               // Length
                           )
                       IO (Decode16,
                           0x00C0,             // Range Minimum
                           0x00C0,             // Range Maximum
                           0x00,               // Alignment
                           0x20,               // Length
                           )
                       DMA (Compatibility, NotBusMaster, Transfer8, )
                           {4}
                   })
               }

               Device (RTC)
               {
                   Name (_HID, EisaId ("PNP0B00"))
                   Name (_CRS, ResourceTemplate ()
                   {
                       IO (Decode16,
                           0x0070,             // Range Minimum
                           0x0070,             // Range Maximum
                           0x01,               // Alignment
                           0x02,               // Length
                           )
                       IO (Decode16,
                           0x0074,             // Range Minimum
                           0x0074,             // Range Maximum
                           0x01,               // Alignment
                           0x04,               // Length
                           )
                   })
               }

               Device (PIC)
               {
                   Name (_HID, EisaId ("PNP0000"))
                   Name (_CRS, ResourceTemplate ()
                   {
                       IO (Decode16,
                           0x0020,             // Range Minimum
                           0x0020,             // Range Maximum
                           0x01,               // Alignment
                           0x1E,               // Length
                           )
                       IO (Decode16,
                           0x00A0,             // Range Minimum
                           0x00A0,             // Range Maximum
                           0x01,               // Alignment
                           0x1E,               // Length
                           )
                       IO (Decode16,
                           0x04D0,             // Range Minimum
                           0x04D0,             // Range Maximum
                           0x01,               // Alignment
                           0x02,               // Length
                           )
                   })
               }

               Device (FPU)
               {
                   Name (_HID, EisaId ("PNP0C04"))
                   Name (_CRS, ResourceTemplate ()
                   {
                       IO (Decode16,
                           0x00F0,             // Range Minimum
                           0x00F0,             // Range Maximum
                           0x01,               // Alignment
                           0x01,               // Length
                           )
                       IRQNoFlags ()
                           {13}
                   })
               }

               Device (TMR)
               {
                   Name (_HID, EisaId ("PNP0100"))
                   Name (_CRS, ResourceTemplate ()
                   {
                       IO (Decode16,
                           0x0040,             // Range Minimum
                           0x0040,             // Range Maximum
                           0x01,               // Alignment
                           0x04,               // Length
                           )
                       IO (Decode16,
                           0x0050,             // Range Minimum
                           0x0050,             // Range Maximum
                           0x01,               // Alignment
                           0x04,               // Length
                           )
                       IRQNoFlags ()
                           {0}
                   })
               }

               Device (SPKR)
               {
                   Name (_HID, EisaId ("PNP0800"))
                   Name (_CRS, ResourceTemplate ()
                   {
                       IO (Decode16,
                           0x0061,             // Range Minimum
                           0x0061,             // Range Maximum
                           0x01,               // Alignment
                           0x01,               // Length
                           )
                   })
               }

               Device (XTRA)
               {
                   Name (_HID, EisaId ("PNP0C02"))
                   Name (_UID, One)
                   Name (_CRS, ResourceTemplate ()
                   {
                       IO (Decode16,
                           0x0500,             // Range Minimum
                           0x0500,             // Range Maximum
                           0x01,               // Alignment
                           0x40,               // Length
                           )
                       IO (Decode16,
                           0x0400,             // Range Minimum
                           0x0400,             // Range Maximum
                           0x01,               // Alignment
                           0x80,               // Length
                           )
                       IO (Decode16,
                           0x0092,             // Range Minimum
                           0x0092,             // Range Maximum
                           0x01,               // Alignment
                           0x01,               // Length
                           )
                       IO (Decode16,
                           0x0360,             // Range Minimum
                           0x0360,             // Range Maximum
                           0x01,               // Alignment
                           0x02,               // Length
                           )
                       IO (Decode16,
                           0x0680,             // Range Minimum
                           0x0680,             // Range Maximum
                           0x01,               // Alignment
                           0x80,               // Length
                           )
                       IO (Decode16,
                           0x0010,             // Range Minimum
                           0x0010,             // Range Maximum
                           0x01,               // Alignment
                           0x10,               // Length
                           )
                       IO (Decode16,
                           0x0072,             // Range Minimum
                           0x0072,             // Range Maximum
                           0x01,               // Alignment
                           0x02,               // Length
                           )
                       IO (Decode16,
                           0x0080,             // Range Minimum
                           0x0080,             // Range Maximum
                           0x01,               // Alignment
                           0x01,               // Length
                           )
                       IO (Decode16,
                           0x0084,             // Range Minimum
                           0x0084,             // Range Maximum
                           0x01,               // Alignment
                           0x03,               // Length
                           )
                       IO (Decode16,
                           0x0088,             // Range Minimum
                           0x0088,             // Range Maximum
                           0x01,               // Alignment
                           0x01,               // Length
                           )
                       IO (Decode16,
                           0x008C,             // Range Minimum
                           0x008C,             // Range Maximum
                           0x01,               // Alignment
                           0x03,               // Length
                           )
                       IO (Decode16,
                           0x0090,             // Range Minimum
                           0x0090,             // Range Maximum
                           0x01,               // Alignment
                           0x10,               // Length
                           )
                   })
               }

               OperationRegion (TPMM, SystemMemory, 0xFED40000, One)
               Field (TPMM, AnyAcc, NoLock, Preserve)
               {
                   TPMA,   8
               }

               Device (TPM)
               {
                   Name (_HID, EisaId ("PNP0C31"))
                   Name (_CID, EisaId ("PNP0C02"))
                   Name (_UID, One)
                   Name (_CRS, ResourceTemplate ()
                   {
                       Memory32Fixed (ReadOnly,
                           0xFED40000,         // Address Base
                           0x00005000,         // Address Length
                           )
                   })
                   Method (_STA, 0, NotSerialized)
                   {
                       If (LEqual (TPMA, 0xFF))
                       {
                           Return (Zero)
                       }
                       Else
                       {
                           If (TPME)
                           {
                               Return (0x0F)
                           }
                           Else
                           {
                               Return (0x0B)
                           }
                       }
                   }

                   Name (TPMR, Zero)
                   Method (_DSM, 4, NotSerialized)
                   {
                       If (LEqual (Arg0, Buffer (0x10)
                               {
                                   /* 0000 */    0xA6, 0xFA, 0xDD, 0x3D, 0x1B, 0x36, 0xB4, 0x4E, 
                                   /* 0008 */    0xA4, 0x24, 0x8D, 0x10, 0x08, 0x9D, 0x16, 0x53
                               }))
                       {
                           If (LEqual (Arg2, Zero))
                           {
                               Return (0x3F)
                           }

                           If (LEqual (Arg2, One))
                           {
                               Return ("1.0")
                           }

                           If (LEqual (Arg2, 0x02))
                           {
                               Store (Arg3, TPMR)
                               Return (Zero)
                           }

                           If (LEqual (Arg2, 0x03))
                           {
                               Return (Package (0x02)
                               {
                                   Zero, 
                                   TPMR
                               })
                           }

                           If (LEqual (Arg2, 0x04))
                           {
                               Return (0x02)
                           }

                           If (LEqual (Arg2, 0x05))
                           {
                               Return (Package (0x03)
                               {
                                   Zero, 
                                   Zero, 
                                   Zero
                               })
                           }
                       }

                       If (LEqual (Arg0, Buffer (0x10)
                               {
                                   /* 0000 */    0xED, 0x54, 0x60, 0x37, 0x13, 0xCC, 0x75, 0x46, 
                                   /* 0008 */    0x90, 0x1C, 0x47, 0x56, 0xD7, 0xF2, 0xD4, 0x5D
                               }))
                       {
                           If (LEqual (Arg2, Zero))
                           {
                               Return (0x03)
                           }

                           If (LEqual (Arg2, One))
                           {
                               Return (Zero)
                           }
                       }

                       Return (Zero)
                   }
               }

               Device (XTR2)
               {
                   Name (_HID, EisaId ("PNP0C02"))
                   Name (_UID, 0x02)
                   Method (_STA, 0, NotSerialized)
                   {
                       If (LOr (KBEP, MSEP))
                       {
                           Return (Zero)
                       }
                       Else
                       {
                           Return (0x0F)
                       }
                   }

                   Name (_CRS, ResourceTemplate ()
                   {
                       IO (Decode16,
                           0x0060,             // Range Minimum
                           0x0060,             // Range Maximum
                           0x01,               // Alignment
                           0x01,               // Length
                           )
                       IO (Decode16,
                           0x0064,             // Range Minimum
                           0x0064,             // Range Maximum
                           0x01,               // Alignment
                           0x01,               // Length
                           )
                   })
               }

               OperationRegion (WINB, SystemIO, 0x2E, 0x02)
               Field (WINB, ByteAcc, NoLock, Preserve)
               {
                   INDX,   8, 
                   DATA,   8
               }

               IndexField (INDX, DATA, ByteAcc, NoLock, Preserve)
               {
                           Offset (0x07), 
                   LDN,    8, 
                           Offset (0x22), 
                   PWRC,   8, 
                           Offset (0x30), 
                   ACTR,   8, 
                           Offset (0x60), 
                   IOAH,   8, 
                   IOAL,   8, 
                           Offset (0x70), 
                   INTR,   8, 
                           Offset (0x72), 
                   INT1,   8, 
                           Offset (0x74), 
                   DMCH,   8, 
                           Offset (0xC0), 
                   GP40,   8, 
                           Offset (0xE0), 
                   RGE0,   8, 
                   RGE1,   8, 
                   RGE2,   8, 
                   RGE3,   8, 
                   RGE4,   8, 
                   RGE5,   8, 
                   RGE6,   8, 
                   RGE7,   8, 
                           Offset (0xF0), 
                   OPT0,   8, 
                   OPT1,   8, 
                   OPT2,   8, 
                   OPT3,   8, 
                   OPT4,   8, 
                   OPT5,   8, 
                   OPT6,   8, 
                   OPT7,   8, 
                   OPT8,   8, 
                   OPT9,   8
               }

               Method (ENCG, 0, NotSerialized)
               {
                   Store (0x87, INDX)
                   Store (0x87, INDX)
               }

               Method (EXCG, 0, NotSerialized)
               {
                   Store (0xAA, INDX)
               }

               Name (MSPM, Zero)
               Name (KBPM, Zero)
               Device (FDC0)
               {
                   Name (_HID, EisaId ("PNP0700"))
                   Method (_STA, 0, NotSerialized)
                   {
                       ENCG ()
                       Store (Zero, LDN)
                       If (ACTR)
                       {
                           EXCG ()
                           Return (0x0F)
                       }
                       Else
                       {
                           If (LOr (IOAH, IOAL))
                           {
                               EXCG ()
                               Return (0x0D)
                           }
                           Else
                           {
                               EXCG ()
                               Return (Zero)
                           }
                       }
                   }

                   Method (_DIS, 0, NotSerialized)
                   {
                       ENCG ()
                       Store (Zero, LDN)
                       Store (Zero, ACTR)
                       EXCG ()
                       DISD (0x03)
                   }

                   Method (_CRS, 0, NotSerialized)
                   {
                       Name (BUF0, ResourceTemplate ()
                       {
                           IO (Decode16,
                               0x03F0,             // Range Minimum
                               0x03F0,             // Range Maximum
                               0x01,               // Alignment
                               0x06,               // Length
                               _Y02)
                           IO (Decode16,
                               0x03F7,             // Range Minimum
                               0x03F7,             // Range Maximum
                               0x01,               // Alignment
                               0x01,               // Length
                               _Y03)
                           IRQNoFlags (_Y04)
                               {6}
                           DMA (Compatibility, NotBusMaster, Transfer8, _Y05)
                               {2}
                       })
                       CreateByteField (BUF0, \_SB.PCI0.LPC.FDC0._CRS._Y02._MIN, IOLO)
                       CreateByteField (BUF0, 0x03, IOHI)
                       CreateByteField (BUF0, \_SB.PCI0.LPC.FDC0._CRS._Y02._MAX, IORL)
                       CreateByteField (BUF0, 0x05, IORH)
                       CreateByteField (BUF0, \_SB.PCI0.LPC.FDC0._CRS._Y03._MIN, I2LO)
                       CreateByteField (BUF0, 0x0B, I2HI)
                       CreateByteField (BUF0, \_SB.PCI0.LPC.FDC0._CRS._Y03._MAX, I2RL)
                       CreateByteField (BUF0, 0x0D, I2RH)
                       CreateByteField (BUF0, \_SB.PCI0.LPC.FDC0._CRS._Y04._INT, IRQL)
                       CreateByteField (BUF0, \_SB.PCI0.LPC.FDC0._CRS._Y05._DMA, DMAV)
                       ENCG ()
                       Store (Zero, LDN)
                       Store (IOAL, IOLO)
                       Store (IOAL, IORL)
                       Store (IOAL, I2LO)
                       Store (IOAL, I2RL)
                       Store (IOAH, IOHI)
                       Store (IOAH, IORH)
                       Store (IOAH, I2HI)
                       Store (IOAH, I2RH)
                       ShiftLeft (One, INTR, IRQL)
                       ShiftLeft (One, DMCH, DMAV)
                       EXCG ()
                       Return (BUF0)
                   }

                   Method (_PRS, 0, NotSerialized)
                   {
                       Name (BUF0, ResourceTemplate ()
                       {
                           StartDependentFn (0x00, 0x00)
                           {
                               IO (Decode16,
                                   0x03F0,             // Range Minimum
                                   0x03F0,             // Range Maximum
                                   0x01,               // Alignment
                                   0x06,               // Length
                                   )
                               IO (Decode16,
                                   0x03F7,             // Range Minimum
                                   0x03F7,             // Range Maximum
                                   0x01,               // Alignment
                                   0x01,               // Length
                                   )
                               IRQNoFlags ()
                                   {6}
                               DMA (Compatibility, NotBusMaster, Transfer8, )
                                   {2}
                           }
                           EndDependentFn ()
                       })
                       Return (BUF0)
                   }

                   Method (_SRS, 1, NotSerialized)
                   {
                       CreateByteField (Arg0, 0x02, IOLO)
                       CreateByteField (Arg0, 0x03, IOHI)
                       CreateWordField (Arg0, 0x02, IOAD)
                       CreateByteField (Arg0, 0x11, IRQL)
                       CreateByteField (Arg0, 0x14, DMAV)
                       ENCG ()
                       Store (Zero, LDN)
                       And (IOLO, 0xF8, Local0)
                       Store (Local0, IOAL)
                       Store (IOHI, IOAH)
                       FindSetRightBit (IRQL, INTR)
                       If (LNotEqual (IRQL, Zero))
                       {
                           Decrement (INTR)
                       }

                       If (LEqual (DMAV, Zero))
                       {
                           Store (0x04, DMCH)
                       }
                       Else
                       {
                           FindSetRightBit (DMAV, DMCH)
                           Decrement (DMCH)
                       }

                       Store (One, ACTR)
                       EXCG ()
                       CKIO (IOAD, 0x03)
                   }

                   Method (_PSC, 0, NotSerialized)
                   {
                       ENCG ()
                       If (And (PWRC, One))
                       {
                           EXCG ()
                           Return (Zero)
                       }
                       Else
                       {
                           EXCG ()
                           Return (0x03)
                       }
                   }

                   Method (_PS0, 0, NotSerialized)
                   {
                       ENCG ()
                       Store (PWRC, Local0)
                       Or (Local0, One, Local0)
                       Store (Local0, PWRC)
                       EXCG ()
                   }

                   Method (_PS3, 0, NotSerialized)
                   {
                       ENCG ()
                       Store (PWRC, Local0)
                       And (Local0, 0xFE, Local0)
                       Store (Local0, PWRC)
                       EXCG ()
                   }
               }

               Device (PS2M)
               {
                   Name (_HID, EisaId ("PNP0F03"))
                   Name (_CID, EisaId ("PNP0F13"))
                   Method (_STA, 0, NotSerialized)
                   {
                       If (MSEP)
                       {
                           Return (0x0F)
                       }
                       Else
                       {
                           Return (Zero)
                       }
                   }

                   Name (_CRS, ResourceTemplate ()
                   {
                       IO (Decode16,
                           0x0060,             // Range Minimum
                           0x0060,             // Range Maximum
                           0x01,               // Alignment
                           0x01,               // Length
                           )
                       IO (Decode16,
                           0x0064,             // Range Minimum
                           0x0064,             // Range Maximum
                           0x01,               // Alignment
                           0x01,               // Length
                           )
                       IRQNoFlags ()
                           {12}
                   })
                   Name (MSS4, Package (0x02)
                   {
                       0x1D, 
                       0x04
                   })
                   Method (_PRW, 0, NotSerialized)
                   {
                       Return (MSS4)
                   }

                   Method (_PSW, 1, NotSerialized)
                   {
                       And (OPT2, 0xFE, OPT2)
                       Store (Arg0, MSPM)
                   }
               }

               Device (PS2K)
               {
                   Name (_HID, EisaId ("PNP0303"))
                   Name (_CID, EisaId ("PNP030B"))
                   Method (_STA, 0, NotSerialized)
                   {
                       If (KBEP)
                       {
                           Return (0x0F)
                       }
                       Else
                       {
                           Return (Zero)
                       }
                   }

                   Name (_CRS, ResourceTemplate ()
                   {
                       IO (Decode16,
                           0x0060,             // Range Minimum
                           0x0060,             // Range Maximum
                           0x01,               // Alignment
                           0x01,               // Length
                           )
                       IO (Decode16,
                           0x0064,             // Range Minimum
                           0x0064,             // Range Maximum
                           0x01,               // Alignment
                           0x01,               // Length
                           )
                       IRQNoFlags ()
                           {1}
                   })
                   Name (KBS4, Package (0x02)
                   {
                       0x1D, 
                       0x04
                   })
                   Method (_PRW, 0, NotSerialized)
                   {
                       Return (KBS4)
                   }

                   Method (_PSW, 1, NotSerialized)
                   {
                       And (OPT2, 0xFE, OPT2)
                       Store (Arg0, KBPM)
                   }
               }

               Device (UAR1)
               {
                   Name (_HID, EisaId ("PNP0501"))
                   Name (_UID, One)
                   Method (_STA, 0, NotSerialized)
                   {
                       ENCG ()
                       Store (0x02, LDN)
                       If (ACTR)
                       {
                           EXCG ()
                           Return (0x0F)
                       }
                       Else
                       {
                           If (LOr (IOAH, IOAL))
                           {
                               EXCG ()
                               Return (0x0D)
                           }
                           Else
                           {
                               EXCG ()
                               Return (Zero)
                           }
                       }
                   }

                   Method (_DIS, 0, NotSerialized)
                   {
                       ENCG ()
                       Store (0x02, LDN)
                       Store (Zero, ACTR)
                       EXCG ()
                       DISD (Zero)
                   }

                   Method (_CRS, 0, NotSerialized)
                   {
                       Name (BUF0, ResourceTemplate ()
                       {
                           IO (Decode16,
                               0x03F8,             // Range Minimum
                               0x03F8,             // Range Maximum
                               0x08,               // Alignment
                               0x08,               // Length
                               _Y06)
                           IRQNoFlags (_Y07)
                               {4}
                       })
                       CreateByteField (BUF0, \_SB.PCI0.LPC.UAR1._CRS._Y06._MIN, IOLO)
                       CreateByteField (BUF0, 0x03, IOHI)
                       CreateByteField (BUF0, \_SB.PCI0.LPC.UAR1._CRS._Y06._MAX, IORL)
                       CreateByteField (BUF0, 0x05, IORH)
                       CreateWordField (BUF0, \_SB.PCI0.LPC.UAR1._CRS._Y07._INT, IRQL)
                       ENCG ()
                       Store (0x02, LDN)
                       Store (IOAL, IOLO)
                       Store (IOAL, IORL)
                       Store (IOAH, IOHI)
                       Store (IOAH, IORH)
                       Store (One, Local0)
                       ShiftLeft (Local0, INTR, IRQL)
                       EXCG ()
                       Return (BUF0)
                   }

                   Method (_PRS, 0, NotSerialized)
                   {
                       Name (BUF0, ResourceTemplate ()
                       {
                           StartDependentFn (0x00, 0x02)
                           {
                               IO (Decode16,
                                   0x03F8,             // Range Minimum
                                   0x03F8,             // Range Maximum
                                   0x01,               // Alignment
                                   0x08,               // Length
                                   )
                               IRQNoFlags ()
                                   {4}
                           }
                           StartDependentFn (0x00, 0x02)
                           {
                               IO (Decode16,
                                   0x03F8,             // Range Minimum
                                   0x03F8,             // Range Maximum
                                   0x01,               // Alignment
                                   0x08,               // Length
                                   )
                               IRQNoFlags ()
                                   {3}
                           }
                           StartDependentFn (0x00, 0x02)
                           {
                               IO (Decode16,
                                   0x03E8,             // Range Minimum
                                   0x03E8,             // Range Maximum
                                   0x01,               // Alignment
                                   0x08,               // Length
                                   )
                               IRQNoFlags ()
                                   {4}
                           }
                           StartDependentFn (0x00, 0x02)
                           {
                               IO (Decode16,
                                   0x03E8,             // Range Minimum
                                   0x03E8,             // Range Maximum
                                   0x01,               // Alignment
                                   0x08,               // Length
                                   )
                               IRQNoFlags ()
                                   {3}
                           }
                           StartDependentFn (0x00, 0x02)
                           {
                               IO (Decode16,
                                   0x02F8,             // Range Minimum
                                   0x02F8,             // Range Maximum
                                   0x01,               // Alignment
                                   0x08,               // Length
                                   )
                               IRQNoFlags ()
                                   {4}
                           }
                           StartDependentFn (0x00, 0x02)
                           {
                               IO (Decode16,
                                   0x02F8,             // Range Minimum
                                   0x02F8,             // Range Maximum
                                   0x01,               // Alignment
                                   0x08,               // Length
                                   )
                               IRQNoFlags ()
                                   {3}
                           }
                           StartDependentFn (0x00, 0x02)
                           {
                               IO (Decode16,
                                   0x02E8,             // Range Minimum
                                   0x02E8,             // Range Maximum
                                   0x01,               // Alignment
                                   0x08,               // Length
                                   )
                               IRQNoFlags ()
                                   {4}
                           }
                           StartDependentFn (0x00, 0x02)
                           {
                               IO (Decode16,
                                   0x02E8,             // Range Minimum
                                   0x02E8,             // Range Maximum
                                   0x01,               // Alignment
                                   0x08,               // Length
                                   )
                               IRQNoFlags ()
                                   {3}
                           }
                           StartDependentFn (0x00, 0x02)
                           {
                               IO (Decode16,
                                   0x0100,             // Range Minimum
                                   0x03F8,             // Range Maximum
                                   0x08,               // Alignment
                                   0x08,               // Length
                                   )
                               IRQNoFlags ()
                                   {1,3,4,5,6,7,8,10,11,12,13,14,15}
                           }
                           EndDependentFn ()
                       })
                       Return (BUF0)
                   }

                   Method (_SRS, 1, NotSerialized)
                   {
                       CreateByteField (Arg0, 0x02, IOLO)
                       CreateByteField (Arg0, 0x03, IOHI)
                       CreateWordField (Arg0, 0x02, IOAD)
                       CreateWordField (Arg0, 0x09, IRQL)
                       ENCG ()
                       Store (0x02, LDN)
                       Store (IOLO, IOAL)
                       Store (IOHI, IOAH)
                       FindSetRightBit (IRQL, INTR)
                       If (LNotEqual (IRQL, Zero))
                       {
                           Decrement (INTR)
                       }

                       Store (One, ACTR)
                       EXCG ()
                       CKIO (IOAD, Zero)
                   }

                   Name (CPS4, Package (0x02)
                   {
                       0x08, 
                       0x04
                   })
                   Method (_PRW, 0, NotSerialized)
                   {
                       Return (CPS4)
                   }

                   Method (_PSC, 0, NotSerialized)
                   {
                       ENCG ()
                       If (And (PWRC, 0x10))
                       {
                           EXCG ()
                           Return (Zero)
                       }
                       Else
                       {
                           EXCG ()
                           Return (0x03)
                       }
                   }

                   Method (_PS0, 0, NotSerialized)
                   {
                       ENCG ()
                       Store (PWRC, Local0)
                       Or (Local0, 0x10, Local0)
                       Store (Local0, PWRC)
                       EXCG ()
                   }

                   Method (_PS3, 0, NotSerialized)
                   {
                       ENCG ()
                       Store (PWRC, Local0)
                       And (Local0, 0xEF, Local0)
                       Store (Local0, PWRC)
                       EXCG ()
                   }
               }

               Method (WAK, 1, Serialized)
               {
                   If (LEqual (Arg0, One))
                   {
                       Store (0xE1, IO80)
                   }

                   If (LEqual (Arg0, 0x03))
                   {
                       Store (0xE3, IO80)
                   }

                   If (LEqual (Arg0, 0x04))
                   {
                       Store (0xE4, IO80)
                   }

                   ENCG ()
                   Store (0x0A, LDN)
                   Store (RGE3, Local0)
                   If (LEqual (Arg0, One))
                   {
                       And (RGE0, 0x9C, RGE0)
                       Store (0xFF, OPT3)
                       And (OPT6, 0xCF, OPT6)
                       And (OPT2, 0xFE, OPT2)
                       Store (Zero, ACTR)
                       Notify (SLPB, 0x02)
                   }

                   If (LEqual (Arg0, 0x03))
                   {
                       And (RGE0, 0x9C, RGE0)
                       And (RGE6, 0x7F, RGE6)
                   }

                   Store (OPT3, OPT3)
                   Store (0x09, LDN)
                   Store (Zero, OPT3)
                   EXCG ()
               }

               Method (PTS, 1, NotSerialized)
               {
                   If (LEqual (Arg0, One))
                   {
                       Store (0x51, IO80)
                   }

                   If (LEqual (Arg0, 0x03))
                   {
                       Store (0x53, IO80)
                   }

                   If (LEqual (Arg0, 0x04))
                   {
                       Store (0x54, IO80)
                   }

                   ENCG ()
                   Store (0x0A, LDN)
                   If (LEqual (Arg0, One))
                   {
                       Store (0xFF, OPT3)
                       Or (OPT6, 0x30, OPT6)
                       If (LEqual (MSPM, Zero))
                       {
                           And (OPT6, 0xDF, OPT6)
                           Or (RGE0, 0x63, RGE0)
                           Store (0xED, APMC)
                       }

                       If (LEqual (KBPM, Zero))
                       {
                           And (OPT6, 0xEF, OPT6)
                           Or (RGE0, 0x03, RGE0)
                           Store (0xEE, APMC)
                       }

                       Or (OPT2, One, OPT2)
                       Store (One, ACTR)
                   }

                   If (LEqual (Arg0, 0x03))
                   {
                       HDKM ()
                   }

                   Store (0xFF, OPT3)
                   Store (0x09, LDN)
                   Store (0x40, OPT3)
                   EXCG ()
               }

               Method (WAKE, 0, NotSerialized)
               {
               }

               Method (HDKM, 0, NotSerialized)
               {
                   Or (RGE0, 0x63, RGE0)
                   Or (RGE6, 0x80, RGE6)
                   If (LEqual (MSPM, Zero))
                   {
                       And (RGE0, 0xDD, RGE0)
                   }

                   If (LEqual (KBPM, Zero))
                   {
                       And (RGE0, 0xBE, RGE0)
                   }
               }
           }

           OperationRegion (SRCR, SystemMemory, 0xFED1C000, 0x4000)
           Field (SRCR, AnyAcc, NoLock, Preserve)
           {
                       Offset (0x3418), 
               CHPD,   1, 
                   ,   1, 
               SATD,   1, 
               SMBD,   1, 
               AZLD,   1, 
                   ,   2, 
               ILND,   1, 
               UH0D,   1, 
               UH1D,   1, 
               UH2D,   1, 
               UH3D,   1, 
               UH4D,   1, 
                   ,   1, 
               LPCD,   1, 
               EHCD,   1, 
               RP1D,   1, 
               RP2D,   1, 
               RP3D,   1, 
               RP4D,   1, 
               RP5D,   1, 
               RP6D,   1, 
                   ,   3, 
               SAD2,   1, 
                       Offset (0x341C)
           }

           Device (ILAN)
           {
               Name (_ADR, 0x00190000)
               Name (PPS1, Package (0x02)
               {
                   0x0D, 
                   0x04
               })
               OperationRegion (ORP0, PCI_Config, Zero, 0xFF)
               Field (ORP0, AnyAcc, NoLock, Preserve)
               {
                           Offset (0xCC), 
                   ILPS,   2, 
                           Offset (0xCD)
               }

               Method (_PRW, 0, NotSerialized)
               {
                   Return (PPS1)
               }

               Method (PTS, 1, NotSerialized)
               {
                   If (LEqual (Arg0, 0x05))
                   {
                       Store (ILPS, LANS)
                       Store (Zero, ILPS)
                   }
               }
           }

           Device (PEGP)
           {
               Name (_ADR, 0x00010000)
               Name (PPS1, Package (0x02)
               {
                   0x0B, 
                   0x04
               })
               Method (_PRW, 0, NotSerialized)
               {
                   Return (PPS1)
               }

               OperationRegion (ORP0, PCI_Config, Zero, 0xFF)
               Field (ORP0, AnyAcc, NoLock, Preserve)
               {
                   RPID,   32, 
                           Offset (0x34), 
                   CPLT,   8, 
                           Offset (0x58), 
                   SSLC,   10, 
                           Offset (0x5A), 
                   ABPX,   1, 
                       ,   2, 
                   PDCX,   1, 
                       ,   2, 
                   PDSX,   1, 
                           Offset (0x5B), 
                   LSCX,   1, 
                           Offset (0x60), 
                   SQID,   16, 
                   SPME,   1, 
                   SPMP,   1, 
                           Offset (0x64), 
                           Offset (0xB8), 
                   NSLC,   10, 
                           Offset (0xBA), 
                   NSLS,   7, 
                           Offset (0xBC), 
                           Offset (0xC0), 
                   NQID,   16, 
                   NPME,   1, 
                   NPMP,   1, 
                           Offset (0xC4), 
                           Offset (0xDC), 
                       ,   30, 
                   HPSX,   1, 
                   RPSC,   1
               }

               OperationRegion (PCEW, SystemIO, 0x0401, One)
               Field (PCEW, ByteAcc, NoLock, Preserve)
               {
                       ,   6, 
                   PCWS,   1
               }

               Method (XPM1, 1, NotSerialized)
               {
                   Store (Zero, Local0)
                   If (LEqual (RPID, Ones))
                   {
                       Return (Zero)
                   }

                   If (LGreaterEqual (Arg0, 0x08))
                   {
                       Store (NPME, Local0)
                       While (NPME)
                       {
                           Store (One, NPME)
                       }
                   }
                   Else
                   {
                       Store (SPME, Local0)
                       While (SPME)
                       {
                           Store (One, SPME)
                       }

                       While (RPSC)
                       {
                           Store (One, RPSC)
                       }
                   }

                   Store (One, PCWS)
                   Return (Local0)
               }

               Method (XRPW, 1, NotSerialized)
               {
                   Store (Zero, Local0)
                   If (LEqual (RPID, Ones))
                   {
                       Return (Zero)
                   }

                   If (LGreaterEqual (Arg0, 0x08))
                   {
                       Store (NPME, Local0)
                   }
                   Else
                   {
                       Store (SPME, Local0)
                   }

                   Return (Local0)
               }
           }

           Device (PEX0)
           {
               Name (_ADR, 0x001C0000)
               Name (PPS1, Package (0x02)
               {
                   0x0B, 
                   0x04
               })
               Method (_PRW, 0, NotSerialized)
               {
                   Return (PPS1)
               }

               OperationRegion (ORP0, PCI_Config, Zero, 0xFF)
               Field (ORP0, AnyAcc, NoLock, Preserve)
               {
                   RPID,   32, 
                           Offset (0x34), 
                   CPLT,   8, 
                           Offset (0x58), 
                   SSLC,   10, 
                           Offset (0x5A), 
                   ABPX,   1, 
                       ,   2, 
                   PDCX,   1, 
                       ,   2, 
                   PDSX,   1, 
                           Offset (0x5B), 
                   LSCX,   1, 
                           Offset (0x60), 
                   SQID,   16, 
                   SPME,   1, 
                   SPMP,   1, 
                           Offset (0x64), 
                           Offset (0xB8), 
                   NSLC,   10, 
                           Offset (0xBA), 
                   NSLS,   7, 
                           Offset (0xBC), 
                           Offset (0xC0), 
                   NQID,   16, 
                   NPME,   1, 
                   NPMP,   1, 
                           Offset (0xC4), 
                           Offset (0xDC), 
                       ,   30, 
                   HPSX,   1, 
                   RPSC,   1
               }

               OperationRegion (PCEW, SystemIO, 0x0401, One)
               Field (PCEW, ByteAcc, NoLock, Preserve)
               {
                       ,   6, 
                   PCWS,   1
               }

               Method (XPM1, 1, NotSerialized)
               {
                   Store (Zero, Local0)
                   If (LEqual (RPID, Ones))
                   {
                       Return (Zero)
                   }

                   If (LGreaterEqual (Arg0, 0x08))
                   {
                       Store (NPME, Local0)
                       While (NPME)
                       {
                           Store (One, NPME)
                       }
                   }
                   Else
                   {
                       Store (SPME, Local0)
                       While (SPME)
                       {
                           Store (One, SPME)
                       }

                       While (RPSC)
                       {
                           Store (One, RPSC)
                       }
                   }

                   Store (One, PCWS)
                   Return (Local0)
               }

               Method (XRPW, 1, NotSerialized)
               {
                   Store (Zero, Local0)
                   If (LEqual (RPID, Ones))
                   {
                       Return (Zero)
                   }

                   If (LGreaterEqual (Arg0, 0x08))
                   {
                       Store (NPME, Local0)
                   }
                   Else
                   {
                       Store (SPME, Local0)
                   }

                   Return (Local0)
               }

               Method (_PRT, 0, NotSerialized)
               {
                   If (LEqual (GPIC, Zero))
                   {
                       Return (Package (0x04)
                       {
                           Package (0x04)
                           {
                               0xFFFF, 
                               Zero, 
                               ^^LPC.LNKA, 
                               Zero
                           }, 

                           Package (0x04)
                           {
                               0xFFFF, 
                               One, 
                               ^^LPC.LNKB, 
                               Zero
                           }, 

                           Package (0x04)
                           {
                               0xFFFF, 
                               0x02, 
                               ^^LPC.LNKC, 
                               Zero
                           }, 

                           Package (0x04)
                           {
                               0xFFFF, 
                               0x03, 
                               ^^LPC.LNKD, 
                               Zero
                           }
                       })
                   }
                   Else
                   {
                       Return (Package (0x04)
                       {
                           Package (0x04)
                           {
                               0xFFFF, 
                               Zero, 
                               Zero, 
                               0x10
                           }, 

                           Package (0x04)
                           {
                               0xFFFF, 
                               One, 
                               Zero, 
                               0x11
                           }, 

                           Package (0x04)
                           {
                               0xFFFF, 
                               0x02, 
                               Zero, 
                               0x12
                           }, 

                           Package (0x04)
                           {
                               0xFFFF, 
                               0x03, 
                               Zero, 
                               0x13
                           }
                       })
                   }
               }
           }

           Device (PEX1)
           {
               Name (_ADR, 0x001C0001)
               Name (PPS1, Package (0x02)
               {
                   0x0B, 
                   0x04
               })
               Method (_PRW, 0, NotSerialized)
               {
                   Return (PPS1)
               }

               OperationRegion (ORP0, PCI_Config, Zero, 0xFF)
               Field (ORP0, AnyAcc, NoLock, Preserve)
               {
                   RPID,   32, 
                           Offset (0x34), 
                   CPLT,   8, 
                           Offset (0x58), 
                   SSLC,   10, 
                           Offset (0x5A), 
                   ABPX,   1, 
                       ,   2, 
                   PDCX,   1, 
                       ,   2, 
                   PDSX,   1, 
                           Offset (0x5B), 
                   LSCX,   1, 
                           Offset (0x60), 
                   SQID,   16, 
                   SPME,   1, 
                   SPMP,   1, 
                           Offset (0x64), 
                           Offset (0xB8), 
                   NSLC,   10, 
                           Offset (0xBA), 
                   NSLS,   7, 
                           Offset (0xBC), 
                           Offset (0xC0), 
                   NQID,   16, 
                   NPME,   1, 
                   NPMP,   1, 
                           Offset (0xC4), 
                           Offset (0xDC), 
                       ,   30, 
                   HPSX,   1, 
                   RPSC,   1
               }

               OperationRegion (PCEW, SystemIO, 0x0401, One)
               Field (PCEW, ByteAcc, NoLock, Preserve)
               {
                       ,   6, 
                   PCWS,   1
               }

               Method (XPM1, 1, NotSerialized)
               {
                   Store (Zero, Local0)
                   If (LEqual (RPID, Ones))
                   {
                       Return (Zero)
                   }

                   If (LGreaterEqual (Arg0, 0x08))
                   {
                       Store (NPME, Local0)
                       While (NPME)
                       {
                           Store (One, NPME)
                       }
                   }
                   Else
                   {
                       Store (SPME, Local0)
                       While (SPME)
                       {
                           Store (One, SPME)
                       }

                       While (RPSC)
                       {
                           Store (One, RPSC)
                       }
                   }

                   Store (One, PCWS)
                   Return (Local0)
               }

               Method (XRPW, 1, NotSerialized)
               {
                   Store (Zero, Local0)
                   If (LEqual (RPID, Ones))
                   {
                       Return (Zero)
                   }

                   If (LGreaterEqual (Arg0, 0x08))
                   {
                       Store (NPME, Local0)
                   }
                   Else
                   {
                       Store (SPME, Local0)
                   }

                   Return (Local0)
               }

               Method (_PRT, 0, NotSerialized)
               {
                   If (LEqual (GPIC, Zero))
                   {
                       Return (Package (0x04)
                       {
                           Package (0x04)
                           {
                               0xFFFF, 
                               Zero, 
                               ^^LPC.LNKB, 
                               Zero
                           }, 

                           Package (0x04)
                           {
                               0xFFFF, 
                               One, 
                               ^^LPC.LNKC, 
                               Zero
                           }, 

                           Package (0x04)
                           {
                               0xFFFF, 
                               0x02, 
                               ^^LPC.LNKD, 
                               Zero
                           }, 

                           Package (0x04)
                           {
                               0xFFFF, 
                               0x03, 
                               ^^LPC.LNKA, 
                               Zero
                           }
                       })
                   }
                   Else
                   {
                       Return (Package (0x04)
                       {
                           Package (0x04)
                           {
                               0xFFFF, 
                               Zero, 
                               Zero, 
                               0x11
                           }, 

                           Package (0x04)
                           {
                               0xFFFF, 
                               One, 
                               Zero, 
                               0x12
                           }, 

                           Package (0x04)
                           {
                               0xFFFF, 
                               0x02, 
                               Zero, 
                               0x13
                           }, 

                           Package (0x04)
                           {
                               0xFFFF, 
                               0x03, 
                               Zero, 
                               0x10
                           }
                       })
                   }
               }
           }

           Device (PEX2)
           {
               Name (_ADR, 0x001C0002)
               Name (PPS1, Package (0x02)
               {
                   0x0B, 
                   0x04
               })
               Method (_PRW, 0, NotSerialized)
               {
                   Return (PPS1)
               }

               OperationRegion (ORP0, PCI_Config, Zero, 0xFF)
               Field (ORP0, AnyAcc, NoLock, Preserve)
               {
                   RPID,   32, 
                           Offset (0x34), 
                   CPLT,   8, 
                           Offset (0x58), 
                   SSLC,   10, 
                           Offset (0x5A), 
                   ABPX,   1, 
                       ,   2, 
                   PDCX,   1, 
                       ,   2, 
                   PDSX,   1, 
                           Offset (0x5B), 
                   LSCX,   1, 
                           Offset (0x60), 
                   SQID,   16, 
                   SPME,   1, 
                   SPMP,   1, 
                           Offset (0x64), 
                           Offset (0xB8), 
                   NSLC,   10, 
                           Offset (0xBA), 
                   NSLS,   7, 
                           Offset (0xBC), 
                           Offset (0xC0), 
                   NQID,   16, 
                   NPME,   1, 
                   NPMP,   1, 
                           Offset (0xC4), 
                           Offset (0xDC), 
                       ,   30, 
                   HPSX,   1, 
                   RPSC,   1
               }

               OperationRegion (PCEW, SystemIO, 0x0401, One)
               Field (PCEW, ByteAcc, NoLock, Preserve)
               {
                       ,   6, 
                   PCWS,   1
               }

               Method (XPM1, 1, NotSerialized)
               {
                   Store (Zero, Local0)
                   If (LEqual (RPID, Ones))
                   {
                       Return (Zero)
                   }

                   If (LGreaterEqual (Arg0, 0x08))
                   {
                       Store (NPME, Local0)
                       While (NPME)
                       {
                           Store (One, NPME)
                       }
                   }
                   Else
                   {
                       Store (SPME, Local0)
                       While (SPME)
                       {
                           Store (One, SPME)
                       }

                       While (RPSC)
                       {
                           Store (One, RPSC)
                       }
                   }

                   Store (One, PCWS)
                   Return (Local0)
               }

               Method (XRPW, 1, NotSerialized)
               {
                   Store (Zero, Local0)
                   If (LEqual (RPID, Ones))
                   {
                       Return (Zero)
                   }

                   If (LGreaterEqual (Arg0, 0x08))
                   {
                       Store (NPME, Local0)
                   }
                   Else
                   {
                       Store (SPME, Local0)
                   }

                   Return (Local0)
               }

               Method (_PRT, 0, NotSerialized)
               {
                   If (LEqual (GPIC, Zero))
                   {
                       Return (Package (0x04)
                       {
                           Package (0x04)
                           {
                               0xFFFF, 
                               Zero, 
                               ^^LPC.LNKC, 
                               Zero
                           }, 

                           Package (0x04)
                           {
                               0xFFFF, 
                               One, 
                               ^^LPC.LNKD, 
                               Zero
                           }, 

                           Package (0x04)
                           {
                               0xFFFF, 
                               0x02, 
                               ^^LPC.LNKA, 
                               Zero
                           }, 

                           Package (0x04)
                           {
                               0xFFFF, 
                               0x03, 
                               ^^LPC.LNKB, 
                               Zero
                           }
                       })
                   }
                   Else
                   {
                       Return (Package (0x04)
                       {
                           Package (0x04)
                           {
                               0xFFFF, 
                               Zero, 
                               Zero, 
                               0x12
                           }, 

                           Package (0x04)
                           {
                               0xFFFF, 
                               One, 
                               Zero, 
                               0x13
                           }, 

                           Package (0x04)
                           {
                               0xFFFF, 
                               0x02, 
                               Zero, 
                               0x10
                           }, 

                           Package (0x04)
                           {
                               0xFFFF, 
                               0x03, 
                               Zero, 
                               0x11
                           }
                       })
                   }
               }

               Device (JMB0)
               {
                   Name (_ADR, Zero)
                   OperationRegion (CF40, PCI_Config, 0x40, 0x04)
                   Field (CF40, ByteAcc, NoLock, Preserve)
                   {
                       CHE0,   1, 
                       FUN1,   1, 
                           ,   1, 
                       CAB0,   1, 
                       CHE1,   1, 
                               Offset (0x01), 
                       AHEN,   1, 
                           ,   3, 
                       PRT0,   1, 
                       AHM0,   1, 
                       PRT1,   1, 
                       AHM1,   1, 
                       CF42,   6, 
                       SWAP,   1, 
                       PATA,   1, 
                           ,   6, 
                       WTEN,   1, 
                               Offset (0x04)
                   }

                   Name (PIOT, Package (0x05)
                   {
                       0x0258, 
                       0x0186, 
                       0x014A, 
                       0xB4, 
                       0x78
                   })
                   Name (UDMA, Package (0x07)
                   {
                       0x78, 
                       0x50, 
                       0x3C, 
                       0x28, 
                       0x1E, 
                       0x14, 
                       0x0F
                   })
                   Name (MDMA, Package (0x03)
                   {
                       0x01E0, 
                       0x96, 
                       0x78
                   })
                   Name (IDEB, Buffer (0x14) {})
                   CreateDWordField (IDEB, Zero, GTM0)
                   CreateDWordField (IDEB, 0x04, GTM1)
                   CreateDWordField (IDEB, 0x08, GTM2)
                   CreateDWordField (IDEB, 0x0C, GTM3)
                   CreateDWordField (IDEB, 0x10, GTM4)
                   Name (PIO0, 0x04)
                   Name (DMA0, 0x06)
                   Name (MDA0, 0x02)
                   Name (PIO1, 0x04)
                   Name (DMA1, 0x06)
                   Name (MDA1, 0x02)
                   Name (PIO2, 0x04)
                   Name (DMA2, 0x06)
                   Name (MDA2, 0x02)
                   Name (PIO3, 0x04)
                   Name (DMA3, 0x06)
                   Name (MDA3, 0x02)
                   Name (FLGP, 0x1F)
                   Name (FLGS, 0x1F)
                   Device (IDE0)
                   {
                       Name (_ADR, Zero)
                       Method (_GTM, 0, NotSerialized)
                       {
                           Store (DerefOf (Index (PIOT, PIO0)), Local0)
                           Store (DerefOf (Index (PIOT, PIO1)), Local2)
                           Store (0x1A, Local4)
                           If (LAnd (FLGP, One))
                           {
                               If (LNot (FUN1))
                               {
                                   If (LAnd (CAB0, SWAP))
                                   {
                                       Store (0x02, DMA0)
                                   }
                               }

                               Store (DerefOf (Index (UDMA, DMA0)), Local1)
                               Or (Local4, One, Local4)
                           }
                           Else
                           {
                               Store (DerefOf (Index (MDMA, MDA0)), Local1)
                           }

                           If (LAnd (FLGP, 0x04))
                           {
                               If (LAnd (CAB0, SWAP))
                               {
                                   Store (0x02, DMA1)
                               }

                               Store (DerefOf (Index (UDMA, DMA1)), Local3)
                               Or (Local4, 0x04, Local4)
                           }
                           Else
                           {
                               Store (DerefOf (Index (MDMA, MDA1)), Local3)
                           }

                           Store (Local0, GTM0)
                           Store (Local1, GTM1)
                           Store (Local2, GTM2)
                           Store (Local3, GTM3)
                           Store (Local4, GTM4)
                           Return (IDEB)
                       }

                       Method (_STM, 3, NotSerialized)
                       {
                           Store (Arg0, IDEB)
                           Store (GTM0, Local0)
                           Store (GTM1, Local1)
                           Store (GTM2, Local2)
                           Store (GTM3, Local3)
                           Store (GTM4, Local4)
                           Store (Local4, FLGP)
                           If (LAnd (LNotEqual (Local0, Ones), LNotEqual (Local0, Zero)))
                           {
                               Store (Match (PIOT, MEQ, Local0, MTR, Zero, Zero), PIO0)
                           }

                           If (LAnd (LNotEqual (Local1, Ones), LNotEqual (Local1, Zero)))
                           {
                               If (LAnd (FLGP, One))
                               {
                                   Store (Match (UDMA, MEQ, Local1, MTR, Zero, Zero), DMA0)
                               }
                               Else
                               {
                                   Store (Match (MDMA, MEQ, Local1, MTR, Zero, Zero), MDA0)
                               }
                           }

                           If (LAnd (LNotEqual (Local2, Ones), LNotEqual (Local2, Zero)))
                           {
                               Store (Match (PIOT, MEQ, Local2, MTR, Zero, Zero), PIO1)
                           }

                           If (LAnd (LNotEqual (Local3, Ones), LNotEqual (Local3, Zero)))
                           {
                               If (LAnd (FLGP, 0x04))
                               {
                                   Store (Match (UDMA, MEQ, Local3, MTR, Zero, Zero), DMA1)
                               }
                               Else
                               {
                                   Store (Match (MDMA, MEQ, Local3, MTR, Zero, Zero), MDA1)
                               }
                           }
                       }

                       Device (DRV0)
                       {
                           Name (_ADR, Zero)
                           Method (_GTF, 0, NotSerialized)
                           {
                               Store (Buffer (0x07)
                                   {
                                       0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
                                   }, Local0)
                               Store (Buffer (0x07)
                                   {
                                       0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
                                   }, Local1)
                               CreateByteField (Local0, One, PIOM)
                               CreateByteField (Local1, One, DMAM)
                               Store (PIO0, PIOM)
                               Or (PIOM, 0x08, PIOM)
                               If (LAnd (FLGP, One))
                               {
                                   Store (DMA0, DMAM)
                                   Or (DMAM, 0x40, DMAM)
                               }
                               Else
                               {
                                   Store (MDA0, DMAM)
                                   Or (DMAM, 0x20, DMAM)
                               }

                               Concatenate (Local0, Local1, Local2)
                               Return (Local2)
                           }
                       }

                       Device (DRV1)
                       {
                           Name (_ADR, One)
                           Method (_GTF, 0, NotSerialized)
                           {
                               Store (Buffer (0x07)
                                   {
                                       0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
                                   }, Local0)
                               Store (Buffer (0x07)
                                   {
                                       0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
                                   }, Local1)
                               CreateByteField (Local0, One, PIOM)
                               CreateByteField (Local1, One, DMAM)
                               Store (PIO1, PIOM)
                               Or (PIOM, 0x08, PIOM)
                               If (LAnd (FLGP, 0x04))
                               {
                                   Store (DMA1, DMAM)
                                   Or (DMAM, 0x40, DMAM)
                               }
                               Else
                               {
                                   Store (MDA1, DMAM)
                                   Or (DMAM, 0x20, DMAM)
                               }

                               Concatenate (Local0, Local1, Local2)
                               Return (Local2)
                           }
                       }
                   }

                   Device (IDE1)
                   {
                       Name (_ADR, One)
                       Method (_STA, 0, NotSerialized)
                       {
                           Return (0x0B)
                       }

                       Method (_GTM, 0, NotSerialized)
                       {
                           Store (DerefOf (Index (PIOT, PIO2)), Local0)
                           Store (DerefOf (Index (PIOT, PIO3)), Local2)
                           Store (0x1A, Local4)
                           If (LAnd (FLGS, One))
                           {
                               If (LNot (FUN1))
                               {
                                   If (LAnd (CAB0, LNot (SWAP)))
                                   {
                                       Store (0x02, DMA2)
                                   }
                               }

                               Store (DerefOf (Index (UDMA, DMA2)), Local1)
                               Or (Local4, One, Local4)
                           }
                           Else
                           {
                               Store (DerefOf (Index (MDMA, MDA2)), Local1)
                           }

                           If (LAnd (FLGS, 0x04))
                           {
                               If (LAnd (CAB0, LNot (SWAP)))
                               {
                                   Store (0x02, DMA3)
                               }

                               Store (DerefOf (Index (UDMA, DMA3)), Local3)
                               Or (Local4, 0x04, Local4)
                           }
                           Else
                           {
                               Store (DerefOf (Index (MDMA, MDA3)), Local3)
                           }

                           Store (Local0, GTM0)
                           Store (Local1, GTM1)
                           Store (Local2, GTM2)
                           Store (Local3, GTM3)
                           Store (Local4, GTM4)
                           Return (IDEB)
                       }

                       Method (_STM, 3, NotSerialized)
                       {
                           Store (Arg0, IDEB)
                           Store (GTM0, Local0)
                           Store (GTM1, Local1)
                           Store (GTM2, Local2)
                           Store (GTM3, Local3)
                           Store (GTM4, Local4)
                           Store (Local4, FLGS)
                           If (LAnd (LNotEqual (Local0, Ones), LNotEqual (Local0, Zero)))
                           {
                               Store (Match (PIOT, MEQ, Local0, MTR, Zero, Zero), PIO2)
                           }

                           If (LAnd (LNotEqual (Local1, Ones), LNotEqual (Local1, Zero)))
                           {
                               If (LAnd (FLGS, One))
                               {
                                   Store (Match (UDMA, MEQ, Local1, MTR, Zero, Zero), DMA2)
                               }
                               Else
                               {
                                   Store (Match (MDMA, MEQ, Local1, MTR, Zero, Zero), MDA2)
                               }
                           }

                           If (LAnd (LNotEqual (Local2, Ones), LNotEqual (Local2, Zero)))
                           {
                               Store (Match (PIOT, MEQ, Local2, MTR, Zero, Zero), PIO3)
                           }

                           If (LAnd (LNotEqual (Local3, Ones), LNotEqual (Local3, Zero)))
                           {
                               If (LAnd (FLGS, 0x04))
                               {
                                   Store (Match (UDMA, MEQ, Local3, MTR, Zero, Zero), DMA3)
                               }
                               Else
                               {
                                   Store (Match (MDMA, MEQ, Local3, MTR, Zero, Zero), MDA3)
                               }
                           }
                       }

                       Device (DRV0)
                       {
                           Name (_ADR, Zero)
                           Method (_GTF, 0, NotSerialized)
                           {
                               Store (Buffer (0x07)
                                   {
                                       0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
                                   }, Local0)
                               Store (Buffer (0x07)
                                   {
                                       0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
                                   }, Local1)
                               CreateByteField (Local0, One, PIOM)
                               CreateByteField (Local1, One, DMAM)
                               Store (PIO2, PIOM)
                               Or (PIOM, 0x08, PIOM)
                               If (LAnd (FLGS, One))
                               {
                                   Store (DMA2, DMAM)
                                   Or (DMAM, 0x40, DMAM)
                               }
                               Else
                               {
                                   Store (MDA2, DMAM)
                                   Or (DMAM, 0x20, DMAM)
                               }

                               Concatenate (Local0, Local1, Local2)
                               Return (Local2)
                           }
                       }

                       Device (DRV1)
                       {
                           Name (_ADR, One)
                           Method (_GTF, 0, NotSerialized)
                           {
                               Store (Buffer (0x07)
                                   {
                                       0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
                                   }, Local0)
                               Store (Buffer (0x07)
                                   {
                                       0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
                                   }, Local1)
                               CreateByteField (Local0, One, PIOM)
                               CreateByteField (Local1, One, DMAM)
                               Store (PIO3, PIOM)
                               Or (PIOM, 0x08, PIOM)
                               If (LAnd (FLGS, 0x04))
                               {
                                   Store (DMA3, DMAM)
                                   Or (DMAM, 0x40, DMAM)
                               }
                               Else
                               {
                                   Store (MDA3, DMAM)
                                   Or (DMAM, 0x20, DMAM)
                               }

                               Concatenate (Local0, Local1, Local2)
                               Return (Local2)
                           }
                       }
                   }
               }
           }

           Device (PEX3)
           {
               Name (_ADR, 0x001C0003)
               Name (PPS1, Package (0x02)
               {
                   0x0B, 
                   0x04
               })
               Method (_PRW, 0, NotSerialized)
               {
                   Return (PPS1)
               }

               OperationRegion (ORP0, PCI_Config, Zero, 0xFF)
               Field (ORP0, AnyAcc, NoLock, Preserve)
               {
                   RPID,   32, 
                           Offset (0x34), 
                   CPLT,   8, 
                           Offset (0x58), 
                   SSLC,   10, 
                           Offset (0x5A), 
                   ABPX,   1, 
                       ,   2, 
                   PDCX,   1, 
                       ,   2, 
                   PDSX,   1, 
                           Offset (0x5B), 
                   LSCX,   1, 
                           Offset (0x60), 
                   SQID,   16, 
                   SPME,   1, 
                   SPMP,   1, 
                           Offset (0x64), 
                           Offset (0xB8), 
                   NSLC,   10, 
                           Offset (0xBA), 
                   NSLS,   7, 
                           Offset (0xBC), 
                           Offset (0xC0), 
                   NQID,   16, 
                   NPME,   1, 
                   NPMP,   1, 
                           Offset (0xC4), 
                           Offset (0xDC), 
                       ,   30, 
                   HPSX,   1, 
                   RPSC,   1
               }

               OperationRegion (PCEW, SystemIO, 0x0401, One)
               Field (PCEW, ByteAcc, NoLock, Preserve)
               {
                       ,   6, 
                   PCWS,   1
               }

               Method (XPM1, 1, NotSerialized)
               {
                   Store (Zero, Local0)
                   If (LEqual (RPID, Ones))
                   {
                       Return (Zero)
                   }

                   If (LGreaterEqual (Arg0, 0x08))
                   {
                       Store (NPME, Local0)
                       While (NPME)
                       {
                           Store (One, NPME)
                       }
                   }
                   Else
                   {
                       Store (SPME, Local0)
                       While (SPME)
                       {
                           Store (One, SPME)
                       }

                       While (RPSC)
                       {
                           Store (One, RPSC)
                       }
                   }

                   Store (One, PCWS)
                   Return (Local0)
               }

               Method (XRPW, 1, NotSerialized)
               {
                   Store (Zero, Local0)
                   If (LEqual (RPID, Ones))
                   {
                       Return (Zero)
                   }

                   If (LGreaterEqual (Arg0, 0x08))
                   {
                       Store (NPME, Local0)
                   }
                   Else
                   {
                       Store (SPME, Local0)
                   }

                   Return (Local0)
               }

               Method (_PRT, 0, NotSerialized)
               {
                   If (LEqual (GPIC, Zero))
                   {
                       Return (Package (0x04)
                       {
                           Package (0x04)
                           {
                               0xFFFF, 
                               Zero, 
                               ^^LPC.LNKD, 
                               Zero
                           }, 

                           Package (0x04)
                           {
                               0xFFFF, 
                               One, 
                               ^^LPC.LNKA, 
                               Zero
                           }, 

                           Package (0x04)
                           {
                               0xFFFF, 
                               0x02, 
                               ^^LPC.LNKB, 
                               Zero
                           }, 

                           Package (0x04)
                           {
                               0xFFFF, 
                               0x03, 
                               ^^LPC.LNKC, 
                               Zero
                           }
                       })
                   }
                   Else
                   {
                       Return (Package (0x04)
                       {
                           Package (0x04)
                           {
                               0xFFFF, 
                               Zero, 
                               Zero, 
                               0x13
                           }, 

                           Package (0x04)
                           {
                               0xFFFF, 
                               One, 
                               Zero, 
                               0x10
                           }, 

                           Package (0x04)
                           {
                               0xFFFF, 
                               0x02, 
                               Zero, 
                               0x11
                           }, 

                           Package (0x04)
                           {
                               0xFFFF, 
                               0x03, 
                               Zero, 
                               0x12
                           }
                       })
                   }
               }
           }

           Device (PEX4)
           {
               Name (_ADR, 0x001C0004)
               Name (PPS1, Package (0x02)
               {
                   0x0B, 
                   0x04
               })
               Method (_PRW, 0, NotSerialized)
               {
                   Return (PPS1)
               }

               OperationRegion (ORP0, PCI_Config, Zero, 0xFF)
               Field (ORP0, AnyAcc, NoLock, Preserve)
               {
                   RPID,   32, 
                           Offset (0x34), 
                   CPLT,   8, 
                           Offset (0x58), 
                   SSLC,   10, 
                           Offset (0x5A), 
                   ABPX,   1, 
                       ,   2, 
                   PDCX,   1, 
                       ,   2, 
                   PDSX,   1, 
                           Offset (0x5B), 
                   LSCX,   1, 
                           Offset (0x60), 
                   SQID,   16, 
                   SPME,   1, 
                   SPMP,   1, 
                           Offset (0x64), 
                           Offset (0xB8), 
                   NSLC,   10, 
                           Offset (0xBA), 
                   NSLS,   7, 
                           Offset (0xBC), 
                           Offset (0xC0), 
                   NQID,   16, 
                   NPME,   1, 
                   NPMP,   1, 
                           Offset (0xC4), 
                           Offset (0xDC), 
                       ,   30, 
                   HPSX,   1, 
                   RPSC,   1
               }

               OperationRegion (PCEW, SystemIO, 0x0401, One)
               Field (PCEW, ByteAcc, NoLock, Preserve)
               {
                       ,   6, 
                   PCWS,   1
               }

               Method (XPM1, 1, NotSerialized)
               {
                   Store (Zero, Local0)
                   If (LEqual (RPID, Ones))
                   {
                       Return (Zero)
                   }

                   If (LGreaterEqual (Arg0, 0x08))
                   {
                       Store (NPME, Local0)
                       While (NPME)
                       {
                           Store (One, NPME)
                       }
                   }
                   Else
                   {
                       Store (SPME, Local0)
                       While (SPME)
                       {
                           Store (One, SPME)
                       }

                       While (RPSC)
                       {
                           Store (One, RPSC)
                       }
                   }

                   Store (One, PCWS)
                   Return (Local0)
               }

               Method (XRPW, 1, NotSerialized)
               {
                   Store (Zero, Local0)
                   If (LEqual (RPID, Ones))
                   {
                       Return (Zero)
                   }

                   If (LGreaterEqual (Arg0, 0x08))
                   {
                       Store (NPME, Local0)
                   }
                   Else
                   {
                       Store (SPME, Local0)
                   }

                   Return (Local0)
               }

               Method (_PRT, 0, NotSerialized)
               {
                   If (LEqual (GPIC, Zero))
                   {
                       Return (Package (0x04)
                       {
                           Package (0x04)
                           {
                               0xFFFF, 
                               Zero, 
                               ^^LPC.LNKA, 
                               Zero
                           }, 

                           Package (0x04)
                           {
                               0xFFFF, 
                               One, 
                               ^^LPC.LNKB, 
                               Zero
                           }, 

                           Package (0x04)
                           {
                               0xFFFF, 
                               0x02, 
                               ^^LPC.LNKC, 
                               Zero
                           }, 

                           Package (0x04)
                           {
                               0xFFFF, 
                               0x03, 
                               ^^LPC.LNKD, 
                               Zero
                           }
                       })
                   }
                   Else
                   {
                       Return (Package (0x04)
                       {
                           Package (0x04)
                           {
                               0xFFFF, 
                               Zero, 
                               Zero, 
                               0x10
                           }, 

                           Package (0x04)
                           {
                               0xFFFF, 
                               One, 
                               Zero, 
                               0x11
                           }, 

                           Package (0x04)
                           {
                               0xFFFF, 
                               0x02, 
                               Zero, 
                               0x12
                           }, 

                           Package (0x04)
                           {
                               0xFFFF, 
                               0x03, 
                               Zero, 
                               0x13
                           }
                       })
                   }
               }
           }

           Device (PEX5)
           {
               Name (_ADR, 0x001C0005)
               Name (PPS1, Package (0x02)
               {
                   0x0B, 
                   0x04
               })
               Method (_PRW, 0, NotSerialized)
               {
                   Return (PPS1)
               }

               OperationRegion (ORP0, PCI_Config, Zero, 0xFF)
               Field (ORP0, AnyAcc, NoLock, Preserve)
               {
                   RPID,   32, 
                           Offset (0x34), 
                   CPLT,   8, 
                           Offset (0x58), 
                   SSLC,   10, 
                           Offset (0x5A), 
                   ABPX,   1, 
                       ,   2, 
                   PDCX,   1, 
                       ,   2, 
                   PDSX,   1, 
                           Offset (0x5B), 
                   LSCX,   1, 
                           Offset (0x60), 
                   SQID,   16, 
                   SPME,   1, 
                   SPMP,   1, 
                           Offset (0x64), 
                           Offset (0xB8), 
                   NSLC,   10, 
                           Offset (0xBA), 
                   NSLS,   7, 
                           Offset (0xBC), 
                           Offset (0xC0), 
                   NQID,   16, 
                   NPME,   1, 
                   NPMP,   1, 
                           Offset (0xC4), 
                           Offset (0xDC), 
                       ,   30, 
                   HPSX,   1, 
                   RPSC,   1
               }

               OperationRegion (PCEW, SystemIO, 0x0401, One)
               Field (PCEW, ByteAcc, NoLock, Preserve)
               {
                       ,   6, 
                   PCWS,   1
               }

               Method (XPM1, 1, NotSerialized)
               {
                   Store (Zero, Local0)
                   If (LEqual (RPID, Ones))
                   {
                       Return (Zero)
                   }

                   If (LGreaterEqual (Arg0, 0x08))
                   {
                       Store (NPME, Local0)
                       While (NPME)
                       {
                           Store (One, NPME)
                       }
                   }
                   Else
                   {
                       Store (SPME, Local0)
                       While (SPME)
                       {
                           Store (One, SPME)
                       }

                       While (RPSC)
                       {
                           Store (One, RPSC)
                       }
                   }

                   Store (One, PCWS)
                   Return (Local0)
               }

               Method (XRPW, 1, NotSerialized)
               {
                   Store (Zero, Local0)
                   If (LEqual (RPID, Ones))
                   {
                       Return (Zero)
                   }

                   If (LGreaterEqual (Arg0, 0x08))
                   {
                       Store (NPME, Local0)
                   }
                   Else
                   {
                       Store (SPME, Local0)
                   }

                   Return (Local0)
               }

               Method (_PRT, 0, NotSerialized)
               {
                   If (LEqual (GPIC, Zero))
                   {
                       Return (Package (0x04)
                       {
                           Package (0x04)
                           {
                               0xFFFF, 
                               Zero, 
                               ^^LPC.LNKB, 
                               Zero
                           }, 

                           Package (0x04)
                           {
                               0xFFFF, 
                               One, 
                               ^^LPC.LNKC, 
                               Zero
                           }, 

                           Package (0x04)
                           {
                               0xFFFF, 
                               0x02, 
                               ^^LPC.LNKD, 
                               Zero
                           }, 

                           Package (0x04)
                           {
                               0xFFFF, 
                               0x03, 
                               ^^LPC.LNKA, 
                               Zero
                           }
                       })
                   }
                   Else
                   {
                       Return (Package (0x04)
                       {
                           Package (0x04)
                           {
                               0xFFFF, 
                               Zero, 
                               Zero, 
                               0x11
                           }, 

                           Package (0x04)
                           {
                               0xFFFF, 
                               One, 
                               Zero, 
                               0x12
                           }, 

                           Package (0x04)
                           {
                               0xFFFF, 
                               0x02, 
                               Zero, 
                               0x13
                           }, 

                           Package (0x04)
                           {
                               0xFFFF, 
                               0x03, 
                               Zero, 
                               0x10
                           }
                       })
                   }
               }
           }

           Device (APIC)
           {
               Name (_HID, EisaId ("PNP0003"))
               Name (_CRS, ResourceTemplate ()
               {
                   Memory32Fixed (ReadOnly,
                       0xFEC00000,         // Address Base
                       0x00000100,         // Address Length
                       )
               })
           }

           Device (UHC1)
           {
               Name (_ADR, 0x001D0000)
               Name (UPS1, Package (0x02)
               {
                   0x03, 
                   0x03
               })
               Method (_PRW, 0, NotSerialized)
               {
                   Return (UPS1)
               }

               OperationRegion (USBR, PCI_Config, 0xC4, One)
               Field (USBR, AnyAcc, NoLock, Preserve)
               {
                   URES,   8
               }

               Method (_PSW, 1, NotSerialized)
               {
                   If (LEqual (Arg0, Zero))
                   {
                       Store (Zero, URES)
                   }

                   If (LEqual (Arg0, One))
                   {
                       Store (0x03, URES)
                   }
               }
           }

           Device (UHC2)
           {
               Name (_ADR, 0x001D0001)
               Name (UPS1, Package (0x02)
               {
                   0x04, 
                   0x03
               })
               Method (_PRW, 0, NotSerialized)
               {
                   Return (UPS1)
               }

               OperationRegion (USBR, PCI_Config, 0xC4, One)
               Field (USBR, AnyAcc, NoLock, Preserve)
               {
                   URES,   8
               }

               Method (_PSW, 1, NotSerialized)
               {
                   If (LEqual (Arg0, Zero))
                   {
                       Store (Zero, URES)
                   }

                   If (LEqual (Arg0, One))
                   {
                       Store (0x03, URES)
                   }
               }
           }

           Device (UHC3)
           {
               Name (_ADR, 0x001D0002)
               Name (UPS1, Package (0x02)
               {
                   0x0C, 
                   0x03
               })
               Method (_PRW, 0, NotSerialized)
               {
                   Return (UPS1)
               }

               OperationRegion (USBR, PCI_Config, 0xC4, One)
               Field (USBR, AnyAcc, NoLock, Preserve)
               {
                   URES,   8
               }

               Method (_PSW, 1, NotSerialized)
               {
                   If (LEqual (Arg0, Zero))
                   {
                       Store (Zero, URES)
                   }

                   If (LEqual (Arg0, One))
                   {
                       Store (0x03, URES)
                   }
               }
           }

           Device (UHC4)
           {
               Name (_ADR, 0x001D0003)
               Name (UPS1, Package (0x02)
               {
                   0x0E, 
                   0x03
               })
               Method (_PRW, 0, NotSerialized)
               {
                   Return (UPS1)
               }

               OperationRegion (USBR, PCI_Config, 0xC4, One)
               Field (USBR, AnyAcc, NoLock, Preserve)
               {
                   URES,   8
               }

               Method (_PSW, 1, NotSerialized)
               {
                   If (LEqual (Arg0, Zero))
                   {
                       Store (Zero, URES)
                   }

                   If (LEqual (Arg0, One))
                   {
                       Store (0x03, URES)
                   }
               }
           }

           Device (EHCI)
           {
               Name (_ADR, 0x001D0007)
               Name (UPS1, Package (0x02)
               {
                   0x0D, 
                   0x03
               })
               Method (_PRW, 0, NotSerialized)
               {
                   Return (UPS1)
               }

               OperationRegion (USBR, PCI_Config, 0x62, 0x02)
               Field (USBR, AnyAcc, NoLock, Preserve)
               {
                   URE2,   9
               }

               Method (_PSW, 1, NotSerialized)
               {
                   If (LEqual (Arg0, Zero))
                   {
                       Store (Zero, URE2)
                   }

                   If (LEqual (Arg0, One))
                   {
                       Store (0x01FF, URE2)
                   }
               }
           }

           Device (EHC2)
           {
               Name (_ADR, 0x001A0007)
               Name (UPS1, Package (0x02)
               {
                   0x0D, 
                   0x03
               })
               Method (_PRW, 0, NotSerialized)
               {
                   Return (UPS1)
               }

               OperationRegion (USBR, PCI_Config, 0x62, 0x02)
               Field (USBR, AnyAcc, NoLock, Preserve)
               {
                   URE2,   9
               }

               Method (_PSW, 1, NotSerialized)
               {
                   If (LEqual (Arg0, Zero))
                   {
                       Store (Zero, URE2)
                   }

                   If (LEqual (Arg0, One))
                   {
                       Store (0x01FF, URE2)
                   }
               }
           }

           Device (UH42)
           {
               Name (_ADR, 0x001A0000)
               Name (UPS1, Package (0x02)
               {
                   0x0E, 
                   0x03
               })
               Method (_PRW, 0, NotSerialized)
               {
                   Return (UPS1)
               }

               OperationRegion (USBR, PCI_Config, 0xC4, One)
               Field (USBR, AnyAcc, NoLock, Preserve)
               {
                   URES,   8
               }

               Method (_PSW, 1, NotSerialized)
               {
                   If (LEqual (Arg0, Zero))
                   {
                       Store (Zero, URES)
                   }

                   If (LEqual (Arg0, One))
                   {
                       Store (0x03, URES)
                   }
               }
           }

           Device (UHC5)
           {
               Name (_ADR, 0x001A0001)
               Name (UPS1, Package (0x02)
               {
                   0x05, 
                   0x03
               })
               Method (_PRW, 0, NotSerialized)
               {
                   Return (UPS1)
               }

               OperationRegion (USBR, PCI_Config, 0xC4, One)
               Field (USBR, AnyAcc, NoLock, Preserve)
               {
                   URES,   8
               }

               Method (_PSW, 1, NotSerialized)
               {
                   If (LEqual (Arg0, Zero))
                   {
                       Store (Zero, URES)
                   }

                   If (LEqual (Arg0, One))
                   {
                       Store (0x03, URES)
                   }
               }
           }

           Device (HDEF)
           {
               Name (_ADR, 0x001B0000)
               Method (_PWR, 0, NotSerialized)
               {
               	Return (Package (0x02)
               	{
               		0x0D,
               		0x05
               	})
               }

               Method (_DSM, 4, NotSerialized)
               {
               	Store (Package (0x0A)
               	{
               		"built-in",
               		Buffer (0x01)
               		{
               			0x01
               		},

               		"codec-id",
               		Buffer (0x04)
               		{
               			0x88, 0x08, 0xEC, 0x10
               		},

               		"layout-id",
               		Buffer (0x04)
               		{
               			0x0C, 0x00, 0x00, 0x00
               		},

               		"device-type",
               		Buffer (0x1F)
               		{
               			"Realtek ALC888S (Intel DG35EC)"
               		},

               		"PinConfigurations",
               		Buffer (0x19)
               		{
               			/* 0000 */	0x0c, 0x0d, 0x0e, 0x0f, 0x26,
               			/* 0005 */  0x0c, 0x0d, 0x0e, 0x0f, 0x26,
               			/* 000A */  0x0c, 0x0d, 0x0e, 0x0f, 0x26,
               			/* 000F */  0x0c, 0x0d, 0x0e, 0x0f, 0x26,
               			/* 0014 */  0x0c, 0x0d, 0x0e, 0x0f, 0x26
               		}
               	}, Local0)
               	DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
               	Return (Local0)
               }

           }



           Method (GETP, 1, Serialized)
           {
               If (LEqual (And (Arg0, 0x09), Zero))
               {
                   Return (Ones)
               }

               If (LEqual (And (Arg0, 0x09), 0x08))
               {
                   Return (0x0384)
               }

               ShiftRight (And (Arg0, 0x0300), 0x08, Local0)
               ShiftRight (And (Arg0, 0x3000), 0x0C, Local1)
               Return (Multiply (0x1E, Subtract (0x09, Add (Local0, Local1))
                   ))
           }

           Method (GDMA, 5, Serialized)
           {
               If (Arg0)
               {
                   If (LAnd (Arg1, Arg4))
                   {
                       Return (0x14)
                   }

                   If (LAnd (Arg2, Arg4))
                   {
                       Return (Multiply (Subtract (0x04, Arg3), 0x0F))
                   }

                   Return (Multiply (Subtract (0x04, Arg3), 0x1E))
               }

               Return (Ones)
           }

           Method (GETT, 1, Serialized)
           {
               Return (Multiply (0x1E, Subtract (0x09, Add (And (ShiftRight (Arg0, 0x02
                   ), 0x03), And (Arg0, 0x03)))))
           }

           Method (GETF, 3, Serialized)
           {
               Name (TMPF, Zero)
               If (Arg0)
               {
                   Or (TMPF, One, TMPF)
               }

               If (And (Arg2, 0x02))
               {
                   Or (TMPF, 0x02, TMPF)
               }

               If (Arg1)
               {
                   Or (TMPF, 0x04, TMPF)
               }

               If (And (Arg2, 0x20))
               {
                   Or (TMPF, 0x08, TMPF)
               }

               If (And (Arg2, 0x4000))
               {
                   Or (TMPF, 0x10, TMPF)
               }

               Return (TMPF)
           }

           Method (SETP, 3, Serialized)
           {
               If (LGreater (Arg0, 0xF0))
               {
                   Return (0x08)
               }
               Else
               {
                   If (And (Arg1, 0x02))
                   {
                       If (LAnd (LLessEqual (Arg0, 0x78), And (Arg2, 0x02)))
                       {
                           Return (0x2301)
                       }

                       If (LAnd (LLessEqual (Arg0, 0xB4), And (Arg2, One)))
                       {
                           Return (0x2101)
                       }
                   }

                   Return (0x1001)
               }
           }

           Method (SDMA, 1, Serialized)
           {
               If (LLessEqual (Arg0, 0x14))
               {
                   Return (One)
               }

               If (LLessEqual (Arg0, 0x1E))
               {
                   Return (0x02)
               }

               If (LLessEqual (Arg0, 0x2D))
               {
                   Return (One)
               }

               If (LLessEqual (Arg0, 0x3C))
               {
                   Return (0x02)
               }

               If (LLessEqual (Arg0, 0x5A))
               {
                   Return (One)
               }

               Return (Zero)
           }

           Method (SETT, 3, Serialized)
           {
               If (And (Arg1, 0x02))
               {
                   If (LAnd (LLessEqual (Arg0, 0x78), And (Arg2, 0x02)))
                   {
                       Return (0x0B)
                   }

                   If (LAnd (LLessEqual (Arg0, 0xB4), And (Arg2, One)))
                   {
                       Return (0x09)
                   }
               }

               Return (0x04)
           }

           Device (SATA)
           {
               Name (_ADR, 0x001F0002)
               OperationRegion (SACS, PCI_Config, 0x40, 0xC0)
               Field (SACS, DWordAcc, NoLock, Preserve)
               {
                   PRIT,   16, 
                   SECT,   16, 
                   PSIT,   4, 
                   SSIT,   4, 
                           Offset (0x08), 
                   SYNC,   4, 
                           Offset (0x0A), 
                   SDT0,   2, 
                       ,   2, 
                   SDT1,   2, 
                           Offset (0x0B), 
                   SDT2,   2, 
                       ,   2, 
                   SDT3,   2, 
                           Offset (0x14), 
                   ICR0,   4, 
                   ICR1,   4, 
                   ICR2,   4, 
                   ICR3,   4, 
                   ICR4,   4, 
                   ICR5,   4, 
                           Offset (0x50), 
                   MAPV,   2
               }

               Device (PRID)
               {
                   Name (_ADR, Zero)
                   Method (_GTM, 0, NotSerialized)
                   {
                       Name (PBUF, Buffer (0x14)
                       {
                           /* 0000 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                           /* 0008 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                           /* 0010 */    0x00, 0x00, 0x00, 0x00
                       })
                       CreateDWordField (PBUF, Zero, PIO0)
                       CreateDWordField (PBUF, 0x04, DMA0)
                       CreateDWordField (PBUF, 0x08, PIO1)
                       CreateDWordField (PBUF, 0x0C, DMA1)
                       CreateDWordField (PBUF, 0x10, FLAG)
                       Store (GETP (PRIT), PIO0)
                       Store (GDMA (And (SYNC, One), And (ICR3, One), 
                           And (ICR0, One), SDT0, And (ICR1, One)), DMA0)
                       If (LEqual (DMA0, Ones))
                       {
                           Store (PIO0, DMA0)
                       }

                       If (And (PRIT, 0x4000))
                       {
                           If (LEqual (And (PRIT, 0x90), 0x80))
                           {
                               Store (0x0384, PIO1)
                           }
                           Else
                           {
                               Store (GETT (PSIT), PIO1)
                           }
                       }
                       Else
                       {
                           Store (Ones, PIO1)
                       }

                       Store (GDMA (And (SYNC, 0x02), And (ICR3, 0x02), 
                           And (ICR0, 0x02), SDT1, And (ICR1, 0x02)), DMA1)
                       If (LEqual (DMA1, Ones))
                       {
                           Store (PIO1, DMA1)
                       }

                       Store (GETF (And (SYNC, One), And (SYNC, 0x02), 
                           PRIT), FLAG)
                       Return (PBUF)
                   }

                   Method (_STM, 3, NotSerialized)
                   {
                       CreateDWordField (Arg0, Zero, PIO0)
                       CreateDWordField (Arg0, 0x04, DMA0)
                       CreateDWordField (Arg0, 0x08, PIO1)
                       CreateDWordField (Arg0, 0x0C, DMA1)
                       CreateDWordField (Arg0, 0x10, FLAG)
                       If (LEqual (SizeOf (Arg1), 0x0200))
                       {
                           And (PRIT, 0x40F0, PRIT)
                           And (SYNC, 0x0E, SYNC)
                           Store (Zero, SDT0)
                           And (ICR0, 0x0E, ICR0)
                           And (ICR1, 0x0E, ICR1)
                           And (ICR3, 0x0E, ICR3)
                           And (ICR5, 0x0E, ICR5)
                           CreateWordField (Arg1, 0x62, W490)
                           CreateWordField (Arg1, 0x6A, W530)
                           CreateWordField (Arg1, 0x7E, W630)
                           CreateWordField (Arg1, 0x80, W640)
                           CreateWordField (Arg1, 0xB0, W880)
                           CreateWordField (Arg1, 0xBA, W930)
                           Or (PRIT, 0x8004, PRIT)
                           If (LAnd (And (FLAG, 0x02), And (W490, 0x0800)))
                           {
                               Or (PRIT, 0x02, PRIT)
                           }

                           Or (PRIT, SETP (PIO0, W530, W640), PRIT)
                           If (And (FLAG, One))
                           {
                               Or (SYNC, One, SYNC)
                               Store (SDMA (DMA0), SDT0)
                               If (LLess (DMA0, 0x1E))
                               {
                                   Or (ICR3, One, ICR3)
                               }

                               If (LLess (DMA0, 0x3C))
                               {
                                   Or (ICR0, One, ICR0)
                               }

                               Or (ICR1, One, ICR1)
                           }
                       }

                       If (LEqual (SizeOf (Arg2), 0x0200))
                       {
                           And (PRIT, 0x3F0F, PRIT)
                           Store (Zero, PSIT)
                           And (SYNC, 0x0D, SYNC)
                           Store (Zero, SDT1)
                           And (ICR0, 0x0D, ICR0)
                           And (ICR1, 0x0D, ICR1)
                           And (ICR3, 0x0D, ICR3)
                           And (ICR5, 0x0D, ICR5)
                           CreateWordField (Arg2, 0x62, W491)
                           CreateWordField (Arg2, 0x6A, W531)
                           CreateWordField (Arg2, 0x7E, W631)
                           CreateWordField (Arg2, 0x80, W641)
                           CreateWordField (Arg2, 0xB0, W881)
                           CreateWordField (Arg2, 0xBA, W931)
                           Or (PRIT, 0x8040, PRIT)
                           If (LAnd (And (FLAG, 0x08), And (W491, 0x0800)))
                           {
                               Or (PRIT, 0x20, PRIT)
                           }

                           If (And (FLAG, 0x10))
                           {
                               Or (PRIT, 0x4000, PRIT)
                               If (LGreater (PIO1, 0xF0))
                               {
                                   Or (PRIT, 0x80, PRIT)
                               }
                               Else
                               {
                                   Or (PRIT, 0x10, PRIT)
                                   Store (SETT (PIO1, W531, W641), PSIT)
                               }
                           }

                           If (And (FLAG, 0x04))
                           {
                               Or (SYNC, 0x02, SYNC)
                               Store (SDMA (DMA1), SDT1)
                               If (LLess (DMA1, 0x1E))
                               {
                                   Or (ICR3, 0x02, ICR3)
                               }

                               If (LLess (DMA1, 0x3C))
                               {
                                   Or (ICR0, 0x02, ICR0)
                               }

                               Or (ICR1, 0x02, ICR1)
                           }
                       }
                   }

                   Device (P_D0)
                   {
                       Name (_ADR, Zero)
                       Method (_GTF, 0, NotSerialized)
                       {
                           Name (PIB0, Buffer (0x0E)
                           {
                               /* 0000 */    0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF, 0x03, 
                               /* 0008 */    0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
                           })
                           CreateByteField (PIB0, One, PMD0)
                           CreateByteField (PIB0, 0x08, DMD0)
                           If (And (PRIT, 0x02))
                           {
                               If (LEqual (And (PRIT, 0x09), 0x08))
                               {
                                   Store (0x08, PMD0)
                               }
                               Else
                               {
                                   Store (0x0A, PMD0)
                                   ShiftRight (And (PRIT, 0x0300), 0x08, Local0)
                                   ShiftRight (And (PRIT, 0x3000), 0x0C, Local1)
                                   Add (Local0, Local1, Local2)
                                   If (LEqual (0x03, Local2))
                                   {
                                       Store (0x0B, PMD0)
                                   }

                                   If (LEqual (0x05, Local2))
                                   {
                                       Store (0x0C, PMD0)
                                   }
                               }
                           }
                           Else
                           {
                               Store (One, PMD0)
                           }

                           If (And (SYNC, One))
                           {
                               Store (Or (SDT0, 0x40), DMD0)
                               If (And (ICR1, One))
                               {
                                   If (And (ICR0, One))
                                   {
                                       Add (DMD0, 0x02, DMD0)
                                   }

                                   If (And (ICR3, One))
                                   {
                                       Store (0x45, DMD0)
                                   }
                               }
                           }
                           Else
                           {
                               Or (Subtract (And (PMD0, 0x07), 0x02), 0x20, DMD0)
                           }

                           Return (PIB0)
                       }
                   }

                   Device (P_D1)
                   {
                       Name (_ADR, One)
                       Method (_GTF, 0, NotSerialized)
                       {
                           Name (PIB1, Buffer (0x0E)
                           {
                               /* 0000 */    0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF, 0x03, 
                               /* 0008 */    0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
                           })
                           CreateByteField (PIB1, One, PMD1)
                           CreateByteField (PIB1, 0x08, DMD1)
                           If (And (PRIT, 0x20))
                           {
                               If (LEqual (And (PRIT, 0x90), 0x80))
                               {
                                   Store (0x08, PMD1)
                               }
                               Else
                               {
                                   Add (And (PSIT, 0x03), ShiftRight (And (PSIT, 0x0C), 
                                       0x02), Local0)
                                   If (LEqual (0x05, Local0))
                                   {
                                       Store (0x0C, PMD1)
                                   }
                                   Else
                                   {
                                       If (LEqual (0x03, Local0))
                                       {
                                           Store (0x0B, PMD1)
                                       }
                                       Else
                                       {
                                           Store (0x0A, PMD1)
                                       }
                                   }
                               }
                           }
                           Else
                           {
                               Store (One, PMD1)
                           }

                           If (And (SYNC, 0x02))
                           {
                               Store (Or (SDT1, 0x40), DMD1)
                               If (And (ICR1, 0x02))
                               {
                                   If (And (ICR0, 0x02))
                                   {
                                       Add (DMD1, 0x02, DMD1)
                                   }

                                   If (And (ICR3, 0x02))
                                   {
                                       Store (0x45, DMD1)
                                   }
                               }
                           }
                           Else
                           {
                               Or (Subtract (And (PMD1, 0x07), 0x02), 0x20, DMD1)
                           }

                           Return (PIB1)
                       }
                   }
               }

               Device (SECD)
               {
                   Name (_ADR, One)
                   Method (_GTM, 0, NotSerialized)
                   {
                       Name (SBUF, Buffer (0x14)
                       {
                           /* 0000 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                           /* 0008 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                           /* 0010 */    0x00, 0x00, 0x00, 0x00
                       })
                       CreateDWordField (SBUF, Zero, PIO0)
                       CreateDWordField (SBUF, 0x04, DMA0)
                       CreateDWordField (SBUF, 0x08, PIO1)
                       CreateDWordField (SBUF, 0x0C, DMA1)
                       CreateDWordField (SBUF, 0x10, FLAG)
                       Store (GETP (SECT), PIO0)
                       Store (GDMA (And (SYNC, 0x04), And (ICR3, 0x04), 
                           And (ICR0, 0x04), SDT2, And (ICR1, 0x04)), DMA0)
                       If (LEqual (DMA0, Ones))
                       {
                           Store (PIO0, DMA0)
                       }

                       If (And (SECT, 0x4000))
                       {
                           If (LEqual (And (SECT, 0x90), 0x80))
                           {
                               Store (0x0384, PIO1)
                           }
                           Else
                           {
                               Store (GETT (SSIT), PIO1)
                           }
                       }
                       Else
                       {
                           Store (Ones, PIO1)
                       }

                       Store (GDMA (And (SYNC, 0x08), And (ICR3, 0x08), 
                           And (ICR0, 0x08), SDT3, And (ICR1, 0x08)), DMA1)
                       If (LEqual (DMA1, Ones))
                       {
                           Store (PIO1, DMA1)
                       }

                       Store (GETF (And (SYNC, 0x04), And (SYNC, 0x08), 
                           SECT), FLAG)
                       If (And (LEqual (PIO0, Ones), LEqual (DMA0, Ones)))
                       {
                           Store (0x78, PIO0)
                           Store (0x14, DMA0)
                           Store (0x03, FLAG)
                       }

                       Return (SBUF)
                   }

                   Method (_STM, 3, NotSerialized)
                   {
                       CreateDWordField (Arg0, Zero, PIO0)
                       CreateDWordField (Arg0, 0x04, DMA0)
                       CreateDWordField (Arg0, 0x08, PIO1)
                       CreateDWordField (Arg0, 0x0C, DMA1)
                       CreateDWordField (Arg0, 0x10, FLAG)
                       If (LEqual (SizeOf (Arg1), 0x0200))
                       {
                           And (SECT, 0x40F0, SECT)
                           And (SYNC, 0x0B, SYNC)
                           Store (Zero, SDT2)
                           And (ICR0, 0x0B, ICR0)
                           And (ICR1, 0x0B, ICR1)
                           And (ICR3, 0x0B, ICR3)
                           And (ICR5, 0x0B, ICR5)
                           CreateWordField (Arg1, 0x62, W490)
                           CreateWordField (Arg1, 0x6A, W530)
                           CreateWordField (Arg1, 0x7E, W630)
                           CreateWordField (Arg1, 0x80, W640)
                           CreateWordField (Arg1, 0xB0, W880)
                           CreateWordField (Arg1, 0xBA, W930)
                           Or (SECT, 0x8004, SECT)
                           If (LAnd (And (FLAG, 0x02), And (W490, 0x0800)))
                           {
                               Or (SECT, 0x02, SECT)
                           }

                           Or (SECT, SETP (PIO0, W530, W640), SECT)
                           If (And (FLAG, One))
                           {
                               Or (SYNC, 0x04, SYNC)
                               Store (SDMA (DMA0), SDT2)
                               If (LLess (DMA0, 0x1E))
                               {
                                   Or (ICR3, 0x04, ICR3)
                               }

                               If (LLess (DMA0, 0x3C))
                               {
                                   Or (ICR0, 0x04, ICR0)
                               }

                               If (And (W930, 0x2000))
                               {
                                   Or (ICR1, 0x04, ICR1)
                               }
                           }
                       }

                       If (LEqual (SizeOf (Arg2), 0x0200))
                       {
                           And (SECT, 0x3F0F, SECT)
                           Store (Zero, SSIT)
                           And (SYNC, 0x07, SYNC)
                           Store (Zero, SDT3)
                           And (ICR0, 0x07, ICR0)
                           And (ICR1, 0x07, ICR1)
                           And (ICR3, 0x07, ICR3)
                           And (ICR5, 0x07, ICR5)
                           CreateWordField (Arg2, 0x62, W491)
                           CreateWordField (Arg2, 0x6A, W531)
                           CreateWordField (Arg2, 0x7E, W631)
                           CreateWordField (Arg2, 0x80, W641)
                           CreateWordField (Arg2, 0xB0, W881)
                           CreateWordField (Arg2, 0xBA, W931)
                           Or (SECT, 0x8040, SECT)
                           If (LAnd (And (FLAG, 0x08), And (W491, 0x0800)))
                           {
                               Or (SECT, 0x20, SECT)
                           }

                           If (And (FLAG, 0x10))
                           {
                               Or (SECT, 0x4000, SECT)
                               If (LGreater (PIO1, 0xF0))
                               {
                                   Or (SECT, 0x80, SECT)
                               }
                               Else
                               {
                                   Or (SECT, 0x10, SECT)
                                   Store (SETT (PIO1, W531, W641), SSIT)
                               }
                           }

                           If (And (FLAG, 0x04))
                           {
                               Or (SYNC, 0x08, SYNC)
                               Store (SDMA (DMA1), SDT3)
                               If (LLess (DMA1, 0x1E))
                               {
                                   Or (ICR3, 0x08, ICR3)
                               }

                               If (LLess (DMA1, 0x3C))
                               {
                                   Or (ICR0, 0x08, ICR0)
                               }

                               If (And (W931, 0x2000))
                               {
                                   Or (ICR1, 0x08, ICR1)
                               }
                           }
                       }
                   }

                   Device (S_D0)
                   {
                       Name (_ADR, Zero)
                       Method (_GTF, 0, NotSerialized)
                       {
                           Name (SIB0, Buffer (0x0E)
                           {
                               /* 0000 */    0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF, 0x03, 
                               /* 0008 */    0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
                           })
                           CreateByteField (SIB0, One, PMD0)
                           CreateByteField (SIB0, 0x08, DMD0)
                           If (And (SECT, 0x02))
                           {
                               If (LEqual (And (SECT, 0x09), 0x08))
                               {
                                   Store (0x08, PMD0)
                               }
                               Else
                               {
                                   Store (0x0A, PMD0)
                                   ShiftRight (And (SECT, 0x0300), 0x08, Local0)
                                   ShiftRight (And (SECT, 0x3000), 0x0C, Local1)
                                   Add (Local0, Local1, Local2)
                                   If (LEqual (0x03, Local2))
                                   {
                                       Store (0x0B, PMD0)
                                   }

                                   If (LEqual (0x05, Local2))
                                   {
                                       Store (0x0C, PMD0)
                                   }
                               }
                           }
                           Else
                           {
                               Store (One, PMD0)
                           }

                           If (And (SYNC, 0x04))
                           {
                               Store (Or (SDT2, 0x40), DMD0)
                               If (And (ICR1, 0x04))
                               {
                                   If (And (ICR0, 0x04))
                                   {
                                       Add (DMD0, 0x02, DMD0)
                                   }

                                   If (And (ICR3, 0x04))
                                   {
                                       Store (0x45, DMD0)
                                   }
                               }
                           }
                           Else
                           {
                               Or (Subtract (And (PMD0, 0x07), 0x02), 0x20, DMD0)
                           }

                           Return (SIB0)
                       }
                   }

                   Device (S_D1)
                   {
                       Name (_ADR, One)
                       Method (_GTF, 0, NotSerialized)
                       {
                           Name (SIB1, Buffer (0x0E)
                           {
                               /* 0000 */    0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF, 0x03, 
                               /* 0008 */    0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
                           })
                           CreateByteField (SIB1, One, PMD1)
                           CreateByteField (SIB1, 0x08, DMD1)
                           If (And (SECT, 0x20))
                           {
                               If (LEqual (And (SECT, 0x90), 0x80))
                               {
                                   Store (0x08, PMD1)
                               }
                               Else
                               {
                                   Add (And (SSIT, 0x03), ShiftRight (And (SSIT, 0x0C), 
                                       0x02), Local0)
                                   If (LEqual (0x05, Local0))
                                   {
                                       Store (0x0C, PMD1)
                                   }
                                   Else
                                   {
                                       If (LEqual (0x03, Local0))
                                       {
                                           Store (0x0B, PMD1)
                                       }
                                       Else
                                       {
                                           Store (0x0A, PMD1)
                                       }
                                   }
                               }
                           }
                           Else
                           {
                               Store (One, PMD1)
                           }

                           If (And (SYNC, 0x08))
                           {
                               Store (Or (SDT3, 0x40), DMD1)
                               If (And (ICR1, 0x08))
                               {
                                   If (And (ICR0, 0x08))
                                   {
                                       Add (DMD1, 0x02, DMD1)
                                   }

                                   If (And (ICR3, 0x08))
                                   {
                                       Store (0x45, DMD1)
                                   }
                               }
                           }
                           Else
                           {
                               Or (Subtract (And (PMD1, 0x07), 0x02), 0x20, DMD1)
                           }

                           Return (SIB1)
                       }
                   }
               }
           }

           Device (SAT2)
           {
               Name (_ADR, 0x001F0005)
               OperationRegion (SACS, PCI_Config, 0x40, 0xC0)
               Field (SACS, DWordAcc, NoLock, Preserve)
               {
                   PRIT,   16, 
                   SECT,   16, 
                   PSIT,   4, 
                   SSIT,   4, 
                           Offset (0x08), 
                   SYNC,   4, 
                           Offset (0x0A), 
                   SDT0,   2, 
                       ,   2, 
                   SDT1,   2, 
                           Offset (0x0B), 
                   SDT2,   2, 
                       ,   2, 
                   SDT3,   2, 
                           Offset (0x14), 
                   ICR0,   4, 
                   ICR1,   4, 
                   ICR2,   4, 
                   ICR3,   4, 
                   ICR4,   4, 
                   ICR5,   4, 
                           Offset (0x50), 
                   MAPV,   2
               }

               Device (PRID)
               {
                   Name (_ADR, Zero)
                   Method (_GTM, 0, NotSerialized)
                   {
                       Name (PBUF, Buffer (0x14)
                       {
                           /* 0000 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                           /* 0008 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                           /* 0010 */    0x00, 0x00, 0x00, 0x00
                       })
                       CreateDWordField (PBUF, Zero, PIO0)
                       CreateDWordField (PBUF, 0x04, DMA0)
                       CreateDWordField (PBUF, 0x08, PIO1)
                       CreateDWordField (PBUF, 0x0C, DMA1)
                       CreateDWordField (PBUF, 0x10, FLAG)
                       Store (GETP (PRIT), PIO0)
                       Store (GDMA (And (SYNC, One), And (ICR3, One), 
                           And (ICR0, One), SDT0, And (ICR1, One)), DMA0)
                       If (LEqual (DMA0, Ones))
                       {
                           Store (PIO0, DMA0)
                       }

                       If (And (PRIT, 0x4000))
                       {
                           If (LEqual (And (PRIT, 0x90), 0x80))
                           {
                               Store (0x0384, PIO1)
                           }
                           Else
                           {
                               Store (GETT (PSIT), PIO1)
                           }
                       }
                       Else
                       {
                           Store (Ones, PIO1)
                       }

                       Store (GDMA (And (SYNC, 0x02), And (ICR3, 0x02), 
                           And (ICR0, 0x02), SDT1, And (ICR1, 0x02)), DMA1)
                       If (LEqual (DMA1, Ones))
                       {
                           Store (PIO1, DMA1)
                       }

                       Store (GETF (And (SYNC, One), And (SYNC, 0x02), 
                           PRIT), FLAG)
                       Return (PBUF)
                   }

                   Method (_STM, 3, NotSerialized)
                   {
                       CreateDWordField (Arg0, Zero, PIO0)
                       CreateDWordField (Arg0, 0x04, DMA0)
                       CreateDWordField (Arg0, 0x08, PIO1)
                       CreateDWordField (Arg0, 0x0C, DMA1)
                       CreateDWordField (Arg0, 0x10, FLAG)
                       If (LEqual (SizeOf (Arg1), 0x0200))
                       {
                           And (PRIT, 0x40F0, PRIT)
                           And (SYNC, 0x0E, SYNC)
                           Store (Zero, SDT0)
                           And (ICR0, 0x0E, ICR0)
                           And (ICR1, 0x0E, ICR1)
                           And (ICR3, 0x0E, ICR3)
                           And (ICR5, 0x0E, ICR5)
                           CreateWordField (Arg1, 0x62, W490)
                           CreateWordField (Arg1, 0x6A, W530)
                           CreateWordField (Arg1, 0x7E, W630)
                           CreateWordField (Arg1, 0x80, W640)
                           CreateWordField (Arg1, 0xB0, W880)
                           CreateWordField (Arg1, 0xBA, W930)
                           Or (PRIT, 0x8004, PRIT)
                           If (LAnd (And (FLAG, 0x02), And (W490, 0x0800)))
                           {
                               Or (PRIT, 0x02, PRIT)
                           }

                           Or (PRIT, SETP (PIO0, W530, W640), PRIT)
                           If (And (FLAG, One))
                           {
                               Or (SYNC, One, SYNC)
                               Store (SDMA (DMA0), SDT0)
                               If (LLess (DMA0, 0x1E))
                               {
                                   Or (ICR3, One, ICR3)
                               }

                               If (LLess (DMA0, 0x3C))
                               {
                                   Or (ICR0, One, ICR0)
                               }

                               Or (ICR1, One, ICR1)
                           }
                       }

                       If (LEqual (SizeOf (Arg2), 0x0200))
                       {
                           And (PRIT, 0x3F0F, PRIT)
                           Store (Zero, PSIT)
                           And (SYNC, 0x0D, SYNC)
                           Store (Zero, SDT1)
                           And (ICR0, 0x0D, ICR0)
                           And (ICR1, 0x0D, ICR1)
                           And (ICR3, 0x0D, ICR3)
                           And (ICR5, 0x0D, ICR5)
                           CreateWordField (Arg2, 0x62, W491)
                           CreateWordField (Arg2, 0x6A, W531)
                           CreateWordField (Arg2, 0x7E, W631)
                           CreateWordField (Arg2, 0x80, W641)
                           CreateWordField (Arg2, 0xB0, W881)
                           CreateWordField (Arg2, 0xBA, W931)
                           Or (PRIT, 0x8040, PRIT)
                           If (LAnd (And (FLAG, 0x08), And (W491, 0x0800)))
                           {
                               Or (PRIT, 0x20, PRIT)
                           }

                           If (And (FLAG, 0x10))
                           {
                               Or (PRIT, 0x4000, PRIT)
                               If (LGreater (PIO1, 0xF0))
                               {
                                   Or (PRIT, 0x80, PRIT)
                               }
                               Else
                               {
                                   Or (PRIT, 0x10, PRIT)
                                   Store (SETT (PIO1, W531, W641), PSIT)
                               }
                           }

                           If (And (FLAG, 0x04))
                           {
                               Or (SYNC, 0x02, SYNC)
                               Store (SDMA (DMA1), SDT1)
                               If (LLess (DMA1, 0x1E))
                               {
                                   Or (ICR3, 0x02, ICR3)
                               }

                               If (LLess (DMA1, 0x3C))
                               {
                                   Or (ICR0, 0x02, ICR0)
                               }

                               Or (ICR1, 0x02, ICR1)
                           }
                       }
                   }

                   Device (P_D0)
                   {
                       Name (_ADR, Zero)
                       Method (_GTF, 0, NotSerialized)
                       {
                           Name (PIB0, Buffer (0x0E)
                           {
                               /* 0000 */    0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF, 0x03, 
                               /* 0008 */    0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
                           })
                           CreateByteField (PIB0, One, PMD0)
                           CreateByteField (PIB0, 0x08, DMD0)
                           If (And (PRIT, 0x02))
                           {
                               If (LEqual (And (PRIT, 0x09), 0x08))
                               {
                                   Store (0x08, PMD0)
                               }
                               Else
                               {
                                   Store (0x0A, PMD0)
                                   ShiftRight (And (PRIT, 0x0300), 0x08, Local0)
                                   ShiftRight (And (PRIT, 0x3000), 0x0C, Local1)
                                   Add (Local0, Local1, Local2)
                                   If (LEqual (0x03, Local2))
                                   {
                                       Store (0x0B, PMD0)
                                   }

                                   If (LEqual (0x05, Local2))
                                   {
                                       Store (0x0C, PMD0)
                                   }
                               }
                           }
                           Else
                           {
                               Store (One, PMD0)
                           }

                           If (And (SYNC, One))
                           {
                               Store (Or (SDT0, 0x40), DMD0)
                               If (And (ICR1, One))
                               {
                                   If (And (ICR0, One))
                                   {
                                       Add (DMD0, 0x02, DMD0)
                                   }

                                   If (And (ICR3, One))
                                   {
                                       Store (0x45, DMD0)
                                   }
                               }
                           }
                           Else
                           {
                               Or (Subtract (And (PMD0, 0x07), 0x02), 0x20, DMD0)
                           }

                           Return (PIB0)
                       }
                   }

                   Device (P_D1)
                   {
                       Name (_ADR, One)
                       Method (_GTF, 0, NotSerialized)
                       {
                           Name (PIB1, Buffer (0x0E)
                           {
                               /* 0000 */    0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF, 0x03, 
                               /* 0008 */    0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
                           })
                           CreateByteField (PIB1, One, PMD1)
                           CreateByteField (PIB1, 0x08, DMD1)
                           If (And (PRIT, 0x20))
                           {
                               If (LEqual (And (PRIT, 0x90), 0x80))
                               {
                                   Store (0x08, PMD1)
                               }
                               Else
                               {
                                   Add (And (PSIT, 0x03), ShiftRight (And (PSIT, 0x0C), 
                                       0x02), Local0)
                                   If (LEqual (0x05, Local0))
                                   {
                                       Store (0x0C, PMD1)
                                   }
                                   Else
                                   {
                                       If (LEqual (0x03, Local0))
                                       {
                                           Store (0x0B, PMD1)
                                       }
                                       Else
                                       {
                                           Store (0x0A, PMD1)
                                       }
                                   }
                               }
                           }
                           Else
                           {
                               Store (One, PMD1)
                           }

                           If (And (SYNC, 0x02))
                           {
                               Store (Or (SDT1, 0x40), DMD1)
                               If (And (ICR1, 0x02))
                               {
                                   If (And (ICR0, 0x02))
                                   {
                                       Add (DMD1, 0x02, DMD1)
                                   }

                                   If (And (ICR3, 0x02))
                                   {
                                       Store (0x45, DMD1)
                                   }
                               }
                           }
                           Else
                           {
                               Or (Subtract (And (PMD1, 0x07), 0x02), 0x20, DMD1)
                           }

                           Return (PIB1)
                       }
                   }
               }

               Device (SECD)
               {
                   Name (_ADR, One)
                   Method (_GTM, 0, NotSerialized)
                   {
                       Name (SBUF, Buffer (0x14)
                       {
                           /* 0000 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                           /* 0008 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                           /* 0010 */    0x00, 0x00, 0x00, 0x00
                       })
                       CreateDWordField (SBUF, Zero, PIO0)
                       CreateDWordField (SBUF, 0x04, DMA0)
                       CreateDWordField (SBUF, 0x08, PIO1)
                       CreateDWordField (SBUF, 0x0C, DMA1)
                       CreateDWordField (SBUF, 0x10, FLAG)
                       Store (GETP (SECT), PIO0)
                       Store (GDMA (And (SYNC, 0x04), And (ICR3, 0x04), 
                           And (ICR0, 0x04), SDT2, And (ICR1, 0x04)), DMA0)
                       If (LEqual (DMA0, Ones))
                       {
                           Store (PIO0, DMA0)
                       }

                       If (And (SECT, 0x4000))
                       {
                           If (LEqual (And (SECT, 0x90), 0x80))
                           {
                               Store (0x0384, PIO1)
                           }
                           Else
                           {
                               Store (GETT (SSIT), PIO1)
                           }
                       }
                       Else
                       {
                           Store (Ones, PIO1)
                       }

                       Store (GDMA (And (SYNC, 0x08), And (ICR3, 0x08), 
                           And (ICR0, 0x08), SDT3, And (ICR1, 0x08)), DMA1)
                       If (LEqual (DMA1, Ones))
                       {
                           Store (PIO1, DMA1)
                       }

                       Store (GETF (And (SYNC, 0x04), And (SYNC, 0x08), 
                           SECT), FLAG)
                       If (And (LEqual (PIO0, Ones), LEqual (DMA0, Ones)))
                       {
                           Store (0x78, PIO0)
                           Store (0x14, DMA0)
                           Store (0x03, FLAG)
                       }

                       Return (SBUF)
                   }

                   Method (_STM, 3, NotSerialized)
                   {
                       CreateDWordField (Arg0, Zero, PIO0)
                       CreateDWordField (Arg0, 0x04, DMA0)
                       CreateDWordField (Arg0, 0x08, PIO1)
                       CreateDWordField (Arg0, 0x0C, DMA1)
                       CreateDWordField (Arg0, 0x10, FLAG)
                       If (LEqual (SizeOf (Arg1), 0x0200))
                       {
                           And (SECT, 0x40F0, SECT)
                           And (SYNC, 0x0B, SYNC)
                           Store (Zero, SDT2)
                           And (ICR0, 0x0B, ICR0)
                           And (ICR1, 0x0B, ICR1)
                           And (ICR3, 0x0B, ICR3)
                           And (ICR5, 0x0B, ICR5)
                           CreateWordField (Arg1, 0x62, W490)
                           CreateWordField (Arg1, 0x6A, W530)
                           CreateWordField (Arg1, 0x7E, W630)
                           CreateWordField (Arg1, 0x80, W640)
                           CreateWordField (Arg1, 0xB0, W880)
                           CreateWordField (Arg1, 0xBA, W930)
                           Or (SECT, 0x8004, SECT)
                           If (LAnd (And (FLAG, 0x02), And (W490, 0x0800)))
                           {
                               Or (SECT, 0x02, SECT)
                           }

                           Or (SECT, SETP (PIO0, W530, W640), SECT)
                           If (And (FLAG, One))
                           {
                               Or (SYNC, 0x04, SYNC)
                               Store (SDMA (DMA0), SDT2)
                               If (LLess (DMA0, 0x1E))
                               {
                                   Or (ICR3, 0x04, ICR3)
                               }

                               If (LLess (DMA0, 0x3C))
                               {
                                   Or (ICR0, 0x04, ICR0)
                               }

                               If (And (W930, 0x2000))
                               {
                                   Or (ICR1, 0x04, ICR1)
                               }
                           }
                       }

                       If (LEqual (SizeOf (Arg2), 0x0200))
                       {
                           And (SECT, 0x3F0F, SECT)
                           Store (Zero, SSIT)
                           And (SYNC, 0x07, SYNC)
                           Store (Zero, SDT3)
                           And (ICR0, 0x07, ICR0)
                           And (ICR1, 0x07, ICR1)
                           And (ICR3, 0x07, ICR3)
                           And (ICR5, 0x07, ICR5)
                           CreateWordField (Arg2, 0x62, W491)
                           CreateWordField (Arg2, 0x6A, W531)
                           CreateWordField (Arg2, 0x7E, W631)
                           CreateWordField (Arg2, 0x80, W641)
                           CreateWordField (Arg2, 0xB0, W881)
                           CreateWordField (Arg2, 0xBA, W931)
                           Or (SECT, 0x8040, SECT)
                           If (LAnd (And (FLAG, 0x08), And (W491, 0x0800)))
                           {
                               Or (SECT, 0x20, SECT)
                           }

                           If (And (FLAG, 0x10))
                           {
                               Or (SECT, 0x4000, SECT)
                               If (LGreater (PIO1, 0xF0))
                               {
                                   Or (SECT, 0x80, SECT)
                               }
                               Else
                               {
                                   Or (SECT, 0x10, SECT)
                                   Store (SETT (PIO1, W531, W641), SSIT)
                               }
                           }

                           If (And (FLAG, 0x04))
                           {
                               Or (SYNC, 0x08, SYNC)
                               Store (SDMA (DMA1), SDT3)
                               If (LLess (DMA1, 0x1E))
                               {
                                   Or (ICR3, 0x08, ICR3)
                               }

                               If (LLess (DMA1, 0x3C))
                               {
                                   Or (ICR0, 0x08, ICR0)
                               }

                               If (And (W931, 0x2000))
                               {
                                   Or (ICR1, 0x08, ICR1)
                               }
                           }
                       }
                   }

                   Device (S_D0)
                   {
                       Name (_ADR, Zero)
                       Method (_GTF, 0, NotSerialized)
                       {
                           Name (SIB0, Buffer (0x0E)
                           {
                               /* 0000 */    0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF, 0x03, 
                               /* 0008 */    0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
                           })
                           CreateByteField (SIB0, One, PMD0)
                           CreateByteField (SIB0, 0x08, DMD0)
                           If (And (SECT, 0x02))
                           {
                               If (LEqual (And (SECT, 0x09), 0x08))
                               {
                                   Store (0x08, PMD0)
                               }
                               Else
                               {
                                   Store (0x0A, PMD0)
                                   ShiftRight (And (SECT, 0x0300), 0x08, Local0)
                                   ShiftRight (And (SECT, 0x3000), 0x0C, Local1)
                                   Add (Local0, Local1, Local2)
                                   If (LEqual (0x03, Local2))
                                   {
                                       Store (0x0B, PMD0)
                                   }

                                   If (LEqual (0x05, Local2))
                                   {
                                       Store (0x0C, PMD0)
                                   }
                               }
                           }
                           Else
                           {
                               Store (One, PMD0)
                           }

                           If (And (SYNC, 0x04))
                           {
                               Store (Or (SDT2, 0x40), DMD0)
                               If (And (ICR1, 0x04))
                               {
                                   If (And (ICR0, 0x04))
                                   {
                                       Add (DMD0, 0x02, DMD0)
                                   }

                                   If (And (ICR3, 0x04))
                                   {
                                       Store (0x45, DMD0)
                                   }
                               }
                           }
                           Else
                           {
                               Or (Subtract (And (PMD0, 0x07), 0x02), 0x20, DMD0)
                           }

                           Return (SIB0)
                       }
                   }

                   Device (S_D1)
                   {
                       Name (_ADR, One)
                       Method (_GTF, 0, NotSerialized)
                       {
                           Name (SIB1, Buffer (0x0E)
                           {
                               /* 0000 */    0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF, 0x03, 
                               /* 0008 */    0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
                           })
                           CreateByteField (SIB1, One, PMD1)
                           CreateByteField (SIB1, 0x08, DMD1)
                           If (And (SECT, 0x20))
                           {
                               If (LEqual (And (SECT, 0x90), 0x80))
                               {
                                   Store (0x08, PMD1)
                               }
                               Else
                               {
                                   Add (And (SSIT, 0x03), ShiftRight (And (SSIT, 0x0C), 
                                       0x02), Local0)
                                   If (LEqual (0x05, Local0))
                                   {
                                       Store (0x0C, PMD1)
                                   }
                                   Else
                                   {
                                       If (LEqual (0x03, Local0))
                                       {
                                           Store (0x0B, PMD1)
                                       }
                                       Else
                                       {
                                           Store (0x0A, PMD1)
                                       }
                                   }
                               }
                           }
                           Else
                           {
                               Store (One, PMD1)
                           }

                           If (And (SYNC, 0x08))
                           {
                               Store (Or (SDT3, 0x40), DMD1)
                               If (And (ICR1, 0x08))
                               {
                                   If (And (ICR0, 0x08))
                                   {
                                       Add (DMD1, 0x02, DMD1)
                                   }

                                   If (And (ICR3, 0x08))
                                   {
                                       Store (0x45, DMD1)
                                   }
                               }
                           }
                           Else
                           {
                               Or (Subtract (And (PMD1, 0x07), 0x02), 0x20, DMD1)
                           }

                           Return (SIB1)
                       }
                   }
               }
           }

           Device (HPET)
           {
               Name (_HID, EisaId ("PNP0103"))
               Name (ATT3, ResourceTemplate ()
               {
                   IRQNoFlags ()
                       {0}
                   IRQNoFlags ()
                       {8}
                   Memory32Fixed (ReadWrite,
                       0xFED00000,         // Address Base
                       0x00000400,         // Address Length
                       )
               })
               Name (ATT4, ResourceTemplate ()
               {
               })
               Method (_STA, 0, NotSerialized)
               {
                   Return (0x0F)
               }

               Method (_CRS, 0, NotSerialized)
               {
                   Return (ATT3)
               }
           }

           Device (IGFX)
           {
               Name (_ADR, 0x00020000)
               OperationRegion (IGDP, PCI_Config, 0x40, 0xC0)
               Field (IGDP, AnyAcc, NoLock, Preserve)
               {
                           Offset (0x12), 
                       ,   1, 
                   GIVD,   1, 
                       ,   2, 
                   GUMA,   3, 
                           Offset (0x14), 
                       ,   4, 
                   GMFN,   1, 
                           Offset (0x18), 
                           Offset (0xA8), 
                   GSSE,   1, 
                   GSSB,   14, 
                   GSES,   1, 
                           Offset (0xBC), 
                   ASLS,   32
               }

               OperationRegion (TCOI, SystemIO, 0x0460, 0x08)
               Field (TCOI, WordAcc, NoLock, Preserve)
               {
                           Offset (0x04), 
                       ,   9, 
                   SCIS,   1, 
                           Offset (0x06)
               }

               Name (SUCC, One)
               Name (UNSP, Zero)
               Name (NVLD, 0x02)
               Name (CRIT, 0x04)
               Name (NCRT, 0x06)
               Method (GSCI, 0, Serialized)
               {
                   OperationRegion (IGDM, SystemMemory, ASLS, 0x2004)
                   Field (IGDM, AnyAcc, NoLock, Preserve)
                   {
                       SIGN,   128, 
                       SIZE,   32, 
                       OVER,   32, 
                       SVER,   256, 
                       VVER,   128, 
                       GVER,   128, 
                       MBOX,   32, 
                               Offset (0x200), 
                       SCIE,   1, 
                       GEFC,   4, 
                       GXFC,   3, 
                       GESF,   8, 
                               Offset (0x204), 
                       PARM,   32, 
                               Offset (0x2000), 
                       GMOD,   8, 
                       GSIZ,   8
                   }

                   Method (GBDA, 0, Serialized)
                   {
                       Store (Zero, PARM)
                       If (LEqual (GESF, Zero))
                       {
                           Store (0x41, PARM)
                           Store (Zero, GESF)
                           Return (SUCC)
                       }

                       If (LEqual (GESF, One))
                       {
                           Store (Zero, PARM)
                           Store (Zero, GESF)
                           Return (SUCC)
                       }

                       If (LEqual (GESF, 0x07))
                       {
                           Or (PARM, GIVD, PARM)
                           XOr (PARM, One, PARM)
                           Or (PARM, ShiftLeft (GMFN, One), PARM)
                           And (PARM, 0xFFFFFFF7, PARM)
                           Or (PARM, 0x1000, PARM)
                           If (LEqual (GMOD, Zero))
                           {
                               Or (PARM, ShiftLeft (GSIZ, 0x11), PARM)
                           }
                           Else
                           {
                               Or (PARM, ShiftLeft (GSIZ, 0x0D), PARM)
                           }

                           Or (PARM, 0x3E800000, PARM)
                           Store (One, GESF)
                           Return (SUCC)
                       }

                       Store (Zero, GESF)
                       Return (UNSP)
                   }

                   Method (SBCB, 0, Serialized)
                   {
                       If (LEqual (GESF, Zero))
                       {
                           Store (Zero, PARM)
                           Store (Zero, GESF)
                           Return (SUCC)
                       }

                       Store (0x04, GXFC)
                       Store (Zero, GESF)
                       Return (UNSP)
                   }

                   If (LEqual (GEFC, 0x04))
                   {
                       Store (GBDA (), GXFC)
                   }

                   If (LEqual (GEFC, 0x06))
                   {
                       Store (SBCB (), GXFC)
                   }

                   Store (Zero, GEFC)
                   Store (One, SCIS)
                   Store (Zero, GSSE)
                   Store (Zero, SCIE)
                   Return (Zero)
               }
           }
       }
   }
}


Link to comment
https://www.insanelymac.com/forum/topic/209422-alc888s-on-dg35ec/
Share on other sites

  • 5 months later...
×
×
  • Create New...