pcib0: device has no interrupts

Russell Jackson rjackson at cserv62.csub.edu
Fri Jan 16 14:09:58 PST 2004


On Fri, Jan 16, 2004 at 05:00:42PM -0500, John Baldwin wrote:
> On Friday 16 January 2004 04:57 pm, Russell Jackson wrote:
> > On Fri, Jan 16, 2004 at 02:50:47PM -0500, John Baldwin wrote:
> > > On Thursday 15 January 2004 04:34 pm, Russell Jackson wrote:
> > > > Syncing sources after 5.2 Release, the pccard device has stopped
> > > > working. I believe this to be a problem with the new acpi code not
> > > > giving it an interrupt. It was working properly prior to 5.2 Release.
> > > >
> > > > --
> > > > Russell A. Jackson (rjackson at cserv62.csub.edu)
> > >
> > > Yes, your BIOS does not list what IRQ to use for your cardbus bridge.  I
> > > noticed that you are using a custom DSDT.  Does it work ok if you don't
> > > use a custom DSDT but use the one from the BIOS?
> > >
> > > --
> > > John Baldwin <jhb at FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
> > > "Power Users Use the Power to Serve"  =  http://www.FreeBSD.org
> >
> > I've tried booting it both with and without my modified dsdt. It's only
> > modified so that it will compile cleanly with the intel compiler. In either
> > case, the outcome is the same.
> >
> > What changed in the ACPI code since 5.2RC?
> 
> Not a whole lot.  Do you have an ACPI dump handy so I can look at the _PRT for 
> your pci0?
> 
> -- 
> John Baldwin <jhb at FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
> "Power Users Use the Power to Serve"  =  http://www.FreeBSD.org

As requested

--
Russell A. Jackson (rjackson at cserv62.csub.edu)

-------------- next part --------------
/*
 * Intel ACPI Component Architecture
 * AML Disassembler version 20031203
 *
 * Disassembly of compaq.dsdt, Sun Dec 14 13:37:06 2003
 */
DefinitionBlock ("DSDT.aml", "DSDT", 1, "COMPAQ", "BOONE", 100925440)
{
    Scope (_PR)
    {
        Processor (CPU0, 0x00, 0x00008010, 0x06) {}
    }

    Name (_S0, Package (0x04)
    {
        0x00, 
        0x00, 
        0x00, 
        0x00
    })
    Name (_S3, Package (0x04)
    {
        0x03, 
        0x03, 
        0x00, 
        0x00
    })
    Name (_S4, Package (0x04)
    {
        0x04, 
        0x04, 
        0x00, 
        0x00
    })
    Name (_S5, Package (0x04)
    {
        0x05, 
        0x05, 
        0x00, 
        0x00
    })
    Method (_PTS, 1, NotSerialized)
    {
        If (LEqual (Arg0, 0x05))
        {
            Store (0x95, \_SB.PCI0.ISA.BCMD)
            Store (Zero, \_SB.PCI0.ISA.SMIC)
            Sleep (0x07D0)
        }

        If (LEqual (Arg0, 0x04))
        {
            Store (0x96, \_SB.PCI0.ISA.BCMD)
            Store (Zero, \_SB.PCI0.ISA.SMIC)
            Sleep (0x07D0)
        }

        If (LEqual (Arg0, 0x03))
        {
            Store (0x81, \_SB.PCI0.ISA.BCMD)
            Store (Zero, \_SB.PCI0.ISA.SMIC)
            Store (0x01, \_SB.PCI0.CRD0.PMST)
            Sleep (0x07D0)
        }
    }

    Method (_WAK, 1, NotSerialized)
    {
        If (LEqual (Arg0, 0x05))
        {
            Store (0x01, \_SB.PCI0.ISA.EC.ACPI)
        }

        If (LEqual (Arg0, 0x04))
        {
            Store (0x01, \_SB.PCI0.ISA.EC.ACPI)
            Notify (\_SB.PWRB, 0x02)
        }

        If (LEqual (Arg0, 0x03))
        {
            Store (0x82, \_SB.PCI0.ISA.BCMD)
            Store (Zero, \_SB.PCI0.ISA.SMIC)
            If (LEqual (\_GPE.GPEF, 0x01))
            {
                Notify (\_SB.PWRB, 0x02)
            }
        }

        Store (0x00, \_GPE.GPEF)
    }

    Scope (_SI)
    {
        Method (_SST, 1, NotSerialized)
        {
            If (LEqual (Arg0, 0x01))
            {
                Store ("===== SST Working =====", Debug)
            }

            If (LEqual (Arg0, 0x02))
            {
                Store ("===== SST Waking =====", Debug)
            }

            If (LEqual (Arg0, 0x03))
            {
                Store ("===== SST Sleeping =====", Debug)
            }

            If (LEqual (Arg0, 0x04))
            {
                Store ("===== SST Sleeping S4 =====", Debug)
            }
        }
    }

    Scope (_SB)
    {
        Device (SLPB)
        {
            Name (_HID, EisaId ("PNP0C0E"))
            Name (_PRW, Package (0x02)
            {
                0x01, 
                0x03
            })
        }

        Device (PWRB)
        {
            Name (_HID, EisaId ("PNP0C0C"))
            Name (_PRW, Package (0x02)
            {
                0x01, 
                0x04
            })
        }

        Device (LID)
        {
            Name (_HID, EisaId ("PNP0C0D"))
            Name (_PRW, Package (0x02)
            {
                0x01, 
                0x03
            })
            Method (_LID, 0, NotSerialized)
            {
                If (\_SB.PCI0.ISA.EC.ECOK)
                {
                    If (\_SB.PCI0.ISA.EC.LIDS)
                    {
                        Return (0x00)
                    }
                    Else
                    {
                        Return (0x01)
                    }
                }
                Else
                {
                    Return (0x00)
                }
            }
        }

        Scope (\_GPE)
        {
            Method (_L01, 0, NotSerialized)
            {
                Store (0x01, GPEF)
                If (Not (\_SB.PCI0.ISA.EC.Z000))
                {
                    Notify (\_SB.PCI0.ISA.KBC0, 0x80)
                }

                If (Not (\_SB.PCI0.ISA.EC.TME0))
                {
                    Notify (\_SB.PCI0.ISA.MSE0, 0x80)
                }
            }

            Method (_L09, 0, NotSerialized)
            {
                Store (0x01, GPEF)
                Notify (\_SB.PCI0, 0x02)
            }
        }

        Device (PCI0)
        {
            Name (_HID, EisaId ("PNP0A03"))
            Name (_ADR, 0x00)
            Name (_BBN, 0x00)
            OperationRegion (MREG, PCI_Config, 0xB8, 0x14)
            Field (MREG, ByteAcc, NoLock, Preserve)
            {
                CS0,    8, 
                CS1,    8, 
                CS2,    8, 
                CS3,    8, 
                Offset (0x10), 
                FBSL,   8, 
                FBSM,   8
            }

            Method (TOM, 0, NotSerialized)
            {
                Multiply (FBSL, 0x00010000, Local0)
                Multiply (FBSM, 0x01000000, Local1)
                Add (Local0, Local1, Local0)
                Return (Local0)
            }

            OperationRegion (VGAM, SystemMemory, 0x000C0002, 0x01)
            Field (VGAM, ByteAcc, Lock, Preserve)
            {
                VSIZ,   8
            }

            Name (RSRC, Buffer (0x8E)
            {
                0x88, 0x0E, 0x00, 0x02, 0x0E, 0x00, 0x00, 0x00, 
                0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 
                0x00, 0x87, 0x18, 0x00, 0x00, 0x0E, 0x01, 0x00, 
                0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0xFF, 
                0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                0x00, 0x02, 0x00, 0x00, 0x87, 0x18, 0x00, 0x00, 
                0x0E, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                0x0D, 0x00, 0xFF, 0x7F, 0x0D, 0x00, 0x00, 0x00, 
                0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x87, 
                0x18, 0x00, 0x00, 0x0E, 0x01, 0x00, 0x00, 0x00, 
                0x00, 0x00, 0x00, 0x10, 0x00, 0xFF, 0xFF, 0xFD, 
                0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEE, 
                0xFF, 0x00, 0x47, 0x01, 0xF8, 0x0C, 0xF8, 0x0C, 
                0x01, 0x08, 0x88, 0x0E, 0x00, 0x01, 0x0C, 0x03, 
                0x00, 0x00, 0x00, 0x00, 0xF7, 0x0C, 0x00, 0x00, 
                0xF8, 0x0C, 0x00, 0x88, 0x0E, 0x00, 0x01, 0x0C, 
                0x03, 0x00, 0x00, 0x00, 0x0D, 0xFF, 0xFF, 0x00, 
                0x00, 0x00, 0xF3, 0x00, 0x79, 0x00
            })
            Method (_CRS, 0, Serialized)
            {
                CreateDWordField (RSRC, 0x1F, VMAX)
                CreateDWordField (RSRC, 0x27, VLEN)
                ShiftLeft (VSIZ, 0x09, Local0)
                Add (Local0, 0x000BFFFF, VMAX)
                Add (Local0, 0x00020000, VLEN)
                CreateDWordField (RSRC, 0x51, BTMN)
                CreateDWordField (RSRC, 0x55, BTMX)
                CreateDWordField (RSRC, 0x5D, BTLN)
                Store (\_SB.PCI0.TOM (), BTMN)
                Subtract (0xFFF80000, BTMN, BTLN)
                Subtract (Add (BTMN, BTLN), 0x01, BTMX)
                Return (RSRC)
            }

            OperationRegion (ECSM, SystemMemory, 0x0EEFFD4D, 0x00000200)
            Field (ECSM, AnyAcc, NoLock, Preserve)
            {
                ADP,    1, 
                    ,   1, 
                BATP,   1, 
                    ,   1, 
                BATL,   1, 
                BATC,   1, 
                Offset (0x01), 
                BDC,    32, 
                BFC,    32, 
                BTC,    32, 
                BDV,    32, 
                BST,    32, 
                BPR,    32, 
                BRC,    32, 
                BPV,    32, 
                BCW,    32, 
                BCL,    32, 
                BCG,    32, 
                BG2,    32, 
                BMO,    32, 
                BSN0,   32, 
                BSN1,   32, 
                BTY0,   8, 
                BTY1,   8, 
                BTY2,   8, 
                BTY3,   8, 
                NABT,   8, 
                TMP,    16, 
                ECOK,   8
            }

            Method (_STA, 0, NotSerialized)
            {
                Return (0x0F)
            }

            Name (_PRT, Package (0x08)
            {
                Package (0x04)
                {
                    0x0002FFFF, 
                    0x00, 
                    \_SB.PCI0.ISA.LNK8, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x000FFFFF, 
                    0x00, 
                    \_SB.PCI0.ISA.LNK4, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0008FFFF, 
                    0x00, 
                    \_SB.PCI0.ISA.LNK7, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x000AFFFF, 
                    0x00, 
                    \_SB.PCI0.ISA.LNK1, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x000BFFFF, 
                    0x00, 
                    \_SB.PCI0.ISA.LNK3, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0013FFFF, 
                    0x00, 
                    \_SB.PCI0.ISA.LNK2, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x000CFFFF, 
                    0x00, 
                    \_SB.PCI0.ISA.LNK2, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x000CFFFF, 
                    0x01, 
                    \_SB.PCI0.ISA.LNK3, 
                    0x00
                }
            })
            Device (ISA)
            {
                Name (_ADR, 0x00070000)
                Mutex (PSMX, 0x00)
                OperationRegion (PUSB, PCI_Config, 0x74, 0x01)
                Field (PUSB, ByteAcc, NoLock, Preserve)
                {
                    PIR8,   4, 
                    Offset (0x01)
                }

                OperationRegion (PIRX, PCI_Config, 0x48, 0x04)
                Field (PIRX, ByteAcc, NoLock, Preserve)
                {
                    PIR0,   4, 
                    PIR1,   4, 
                    PIR2,   4, 
                    PIR3,   4, 
                    PIR4,   4, 
                    PIR5,   4, 
                    PIR6,   4, 
                    PIR7,   4
                }

                Name (IPRS, Buffer (0x06)
                {
                    0x23, 0xF8, 0x1C, 0x18, 0x79, 0x00
                })
                Name (IXLT, Package (0x10)
                {
                    0x00, 
                    0x0200, 
                    0x08, 
                    0x0400, 
                    0x10, 
                    0x20, 
                    0x80, 
                    0x40, 
                    0x02, 
                    0x0800, 
                    0x00, 
                    0x1000, 
                    0x00, 
                    0x4000, 
                    0x00, 
                    0x8000
                })
                Device (LNK0)
                {
                    Name (_HID, EisaId ("PNP0C0F"))
                    Name (_UID, 0x01)
                    Method (_STA, 0, NotSerialized)
                    {
                        If (PIR0)
                        {
                            Return (0x0B)
                        }
                        Else
                        {
                            Return (0x09)
                        }
                    }

                    Method (_PRS, 0, NotSerialized)
                    {
                        Return (IPRS)
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        Store (0x00, PIR0)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Store (IPRS, Local0)
                        CreateWordField (Local0, 0x01, IRA0)
                        Store (PIR0, Local1)
                        Store (DerefOf (Index (IXLT, Local1)), IRA0)
                        Return (Local0)
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        CreateWordField (Arg0, 0x01, IRA0)
                        Store (Match (IXLT, MEQ, IRA0, MGT, 0x00, 0x00), PIR0)
                    }
                }

                Device (LNK1)
                {
                    Name (_HID, EisaId ("PNP0C0F"))
                    Name (_UID, 0x02)
                    Method (_STA, 0, NotSerialized)
                    {
                        If (PIR1)
                        {
                            Return (0x0B)
                        }
                        Else
                        {
                            Return (0x09)
                        }
                    }

                    Method (_PRS, 0, NotSerialized)
                    {
                        Return (IPRS)
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        Store (0x00, PIR1)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Store (IPRS, Local0)
                        CreateWordField (Local0, 0x01, IRA0)
                        Store (PIR1, Local1)
                        Store (DerefOf (Index (IXLT, Local1)), IRA0)
                        Return (Local0)
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        CreateWordField (Arg0, 0x01, IRA0)
                        Store (Match (IXLT, MEQ, IRA0, MGT, 0x00, 0x00), PIR1)
                    }
                }

                Device (LNK2)
                {
                    Name (_HID, EisaId ("PNP0C0F"))
                    Name (_UID, 0x03)
                    Method (_STA, 0, NotSerialized)
                    {
                        If (PIR2)
                        {
                            Return (0x0B)
                        }
                        Else
                        {
                            Return (0x09)
                        }
                    }

                    Method (_PRS, 0, NotSerialized)
                    {
                        Return (IPRS)
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        Store (0x00, PIR2)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Store (IPRS, Local0)
                        CreateWordField (Local0, 0x01, IRA0)
                        Store (PIR2, Local1)
                        Store (DerefOf (Index (IXLT, Local1)), IRA0)
                        Return (Local0)
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        CreateWordField (Arg0, 0x01, IRA0)
                        Store (Match (IXLT, MEQ, IRA0, MGT, 0x00, 0x00), PIR2)
                    }
                }

                Device (LNK3)
                {
                    Name (_HID, EisaId ("PNP0C0F"))
                    Name (_UID, 0x04)
                    Method (_STA, 0, NotSerialized)
                    {
                        If (PIR3)
                        {
                            Return (0x0B)
                        }
                        Else
                        {
                            Return (0x09)
                        }
                    }

                    Method (_PRS, 0, NotSerialized)
                    {
                        Return (IPRS)
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        Store (0x00, PIR3)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Store (IPRS, Local0)
                        CreateWordField (Local0, 0x01, IRA0)
                        Store (PIR3, Local1)
                        Store (DerefOf (Index (IXLT, Local1)), IRA0)
                        Return (Local0)
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        CreateWordField (Arg0, 0x01, IRA0)
                        Store (Match (IXLT, MEQ, IRA0, MGT, 0x00, 0x00), PIR3)
                    }
                }

                Device (LNK4)
                {
                    Name (_HID, EisaId ("PNP0C0F"))
                    Name (_UID, 0x05)
                    Method (_STA, 0, NotSerialized)
                    {
                        If (PIR4)
                        {
                            Return (0x0B)
                        }
                        Else
                        {
                            Return (0x09)
                        }
                    }

                    Method (_PRS, 0, NotSerialized)
                    {
                        Return (IPRS)
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        Store (0x00, PIR4)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Store (IPRS, Local0)
                        CreateWordField (Local0, 0x01, IRA0)
                        Store (PIR4, Local1)
                        Store (DerefOf (Index (IXLT, Local1)), IRA0)
                        Return (Local0)
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        CreateWordField (Arg0, 0x01, IRA0)
                        Store (Match (IXLT, MEQ, IRA0, MGT, 0x00, 0x00), PIR4)
                    }
                }

                Device (LNK5)
                {
                    Name (_HID, EisaId ("PNP0C0F"))
                    Name (_UID, 0x06)
                    Method (_STA, 0, NotSerialized)
                    {
                        If (PIR5)
                        {
                            Return (0x0B)
                        }
                        Else
                        {
                            Return (0x09)
                        }
                    }

                    Method (_PRS, 0, NotSerialized)
                    {
                        Return (IPRS)
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        Store (0x00, PIR5)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Store (IPRS, Local0)
                        CreateWordField (Local0, 0x01, IRA0)
                        Store (PIR5, Local1)
                        Store (DerefOf (Index (IXLT, Local1)), IRA0)
                        Return (Local0)
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        CreateWordField (Arg0, 0x01, IRA0)
                        Store (Match (IXLT, MEQ, IRA0, MGT, 0x00, 0x00), PIR5)
                    }
                }

                Device (LNK6)
                {
                    Name (_HID, EisaId ("PNP0C0F"))
                    Name (_UID, 0x07)
                    Method (_STA, 0, NotSerialized)
                    {
                        If (PIR6)
                        {
                            Return (0x0B)
                        }
                        Else
                        {
                            Return (0x09)
                        }
                    }

                    Method (_PRS, 0, NotSerialized)
                    {
                        Return (IPRS)
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        Store (0x00, PIR6)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Store (IPRS, Local0)
                        CreateWordField (Local0, 0x01, IRA0)
                        Store (PIR6, Local1)
                        Store (DerefOf (Index (IXLT, Local1)), IRA0)
                        Return (Local0)
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        CreateWordField (Arg0, 0x01, IRA0)
                        Store (Match (IXLT, MEQ, IRA0, MGT, 0x00, 0x00), PIR6)
                    }
                }

                Device (LNK7)
                {
                    Name (_HID, EisaId ("PNP0C0F"))
                    Name (_UID, 0x08)
                    Method (_STA, 0, NotSerialized)
                    {
                        If (PIR7)
                        {
                            Return (0x0B)
                        }
                        Else
                        {
                            Return (0x09)
                        }
                    }

                    Method (_PRS, 0, NotSerialized)
                    {
                        Return (IPRS)
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        Store (0x00, PIR7)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Store (IPRS, Local0)
                        CreateWordField (Local0, 0x01, IRA0)
                        Store (PIR7, Local1)
                        Store (DerefOf (Index (IXLT, Local1)), IRA0)
                        Return (Local0)
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        CreateWordField (Arg0, 0x01, IRA0)
                        Store (Match (IXLT, MEQ, IRA0, MGT, 0x00, 0x00), PIR7)
                    }
                }

                Device (LNK8)
                {
                    Name (_HID, EisaId ("PNP0C0F"))
                    Name (_UID, 0x09)
                    Method (_STA, 0, NotSerialized)
                    {
                        If (PIR8)
                        {
                            Return (0x0B)
                        }
                        Else
                        {
                            Return (0x09)
                        }
                    }

                    Method (_PRS, 0, NotSerialized)
                    {
                        Return (IPRS)
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        Store (0x00, PIR8)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Store (IPRS, Local0)
                        CreateWordField (Local0, 0x01, IRA0)
                        Store (PIR8, Local1)
                        Store (DerefOf (Index (IXLT, Local1)), IRA0)
                        Return (Local0)
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        CreateWordField (Arg0, 0x01, IRA0)
                        Store (Match (IXLT, MEQ, IRA0, MGT, 0x00, 0x00), PIR8)
                    }
                }

                Device (DMAC)
                {
                    Name (_HID, EisaId ("PNP0200"))
                    Name (_CRS, Buffer (0x1D)
                    {
                        0x47, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 
                        0x47, 0x01, 0x81, 0x00, 0x81, 0x00, 0x01, 0x0F, 
                        0x47, 0x01, 0xC0, 0x00, 0xC0, 0x00, 0x01, 0x20, 
                        0x2A, 0x10, 0x01, 0x79, 0x00
                    })
                }

                Device (PIC)
                {
                    Name (_HID, EisaId ("PNP0000"))
                    Name (_CRS, Buffer (0x16)
                    {
                        0x47, 0x01, 0x20, 0x00, 0x20, 0x00, 0x01, 0x02, 
                        0x47, 0x01, 0xA0, 0x00, 0xA0, 0x00, 0x01, 0x02, 
                        0x23, 0x04, 0x00, 0x01, 0x79, 0x00
                    })
                }

                Device (TIME)
                {
                    Name (_HID, EisaId ("PNP0100"))
                    Name (_CRS, Buffer (0x0E)
                    {
                        0x47, 0x01, 0x40, 0x00, 0x40, 0x00, 0x01, 0x04, 
                        0x23, 0x01, 0x00, 0x01, 0x79, 0x00
                    })
                }

                Device (RTC)
                {
                    Name (_HID, EisaId ("PNP0B00"))
                    Name (_CRS, Buffer (0x0E)
                    {
                        0x47, 0x01, 0x70, 0x00, 0x70, 0x00, 0x01, 0x02, 
                        0x23, 0x00, 0x01, 0x01, 0x79, 0x00
                    })
                }

                Device (MATH)
                {
                    Name (_HID, EisaId ("PNP0C04"))
                    Name (_CRS, Buffer (0x0E)
                    {
                        0x47, 0x01, 0xF0, 0x00, 0xF0, 0x00, 0x01, 0x0F, 
                        0x23, 0x00, 0x20, 0x01, 0x79, 0x00
                    })
                }

                Device (SPKR)
                {
                    Name (_HID, EisaId ("PNP0800"))
                    Name (_CRS, Buffer (0x0A)
                    {
                        0x47, 0x01, 0x61, 0x00, 0x61, 0x00, 0x01, 0x01, 
                        0x79, 0x00
                    })
                }

                Device (KBC0)
                {
                    Name (_HID, EisaId ("PNP0303"))
                    Name (_PRW, Package (0x02)
                    {
                        0x01, 
                        0x03
                    })
                    Name (_CRS, Buffer (0x16)
                    {
                        0x47, 0x01, 0x60, 0x00, 0x60, 0x00, 0x01, 0x01, 
                        0x47, 0x01, 0x64, 0x00, 0x64, 0x00, 0x01, 0x01, 
                        0x23, 0x02, 0x00, 0x01, 0x79, 0x00
                    })
                    Method (_PSW, 1, NotSerialized)
                    {
                        If (Arg0)
                        {
                            If (\_SB.PCI0.ISA.EC.ECOK)
                            {
                                Store (0x01, \_SB.PCI0.ISA.EC.Z000)
                            }
                        }
                        Else
                        {
                            If (\_SB.PCI0.ISA.EC.ECOK)
                            {
                                Store (0x00, \_SB.PCI0.ISA.EC.Z000)
                            }
                        }
                    }
                }

                Device (MSE0)
                {
                    Name (_HID, "*SYN0100")
                    Name (_CID, Package (0x02)
                    {
                        0x02002E4F, 
                        0x130FD041
                    })
                    Name (_PRW, Package (0x02)
                    {
                        0x01, 
                        0x03
                    })
                    Name (_CRS, Buffer (0x06)
                    {
                        0x23, 0x00, 0x10, 0x01, 0x79, 0x00
                    })
                    Method (_PSW, 1, NotSerialized)
                    {
                        If (Arg0)
                        {
                            If (\_SB.PCI0.ISA.EC.ECOK)
                            {
                                Store (0x01, \_SB.PCI0.ISA.EC.TME0)
                            }
                        }
                        Else
                        {
                            If (\_SB.PCI0.ISA.EC.ECOK)
                            {
                                Store (0x00, \_SB.PCI0.ISA.EC.TME0)
                            }
                        }
                    }
                }

                Device (SYSR)
                {
                    Name (_HID, EisaId ("PNP0C02"))
                    Name (_CRS, Buffer (0x4A)
                    {
                        0x47, 0x01, 0x80, 0x00, 0x80, 0x00, 0x01, 0x01, 
                        0x47, 0x01, 0xB1, 0x00, 0xB1, 0x00, 0x01, 0x03, 
                        0x47, 0x01, 0x92, 0x00, 0x92, 0x00, 0x01, 0x01, 
                        0x47, 0x01, 0x0B, 0x04, 0x0B, 0x04, 0x01, 0x01, 
                        0x47, 0x01, 0x80, 0x04, 0x80, 0x04, 0x01, 0x10, 
                        0x47, 0x01, 0xD0, 0x04, 0xD0, 0x04, 0x01, 0x02, 
                        0x47, 0x01, 0xD6, 0x04, 0xD6, 0x04, 0x01, 0x01, 
                        0x47, 0x01, 0x00, 0x80, 0x00, 0x80, 0x01, 0x80, 
                        0x47, 0x01, 0x00, 0xF5, 0x00, 0xF5, 0x01, 0x04, 
                        0x79, 0x00
                    })
                }

                Device (MEM)
                {
                    Name (_HID, EisaId ("PNP0C01"))
                    Name (MSRC, Buffer (0x3E)
                    {
                        0x86, 0x09, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 
                        0x00, 0x00, 0x0A, 0x00, 0x86, 0x09, 0x00, 0x00, 
                        0x00, 0xC0, 0x0D, 0x00, 0x00, 0x40, 0x00, 0x00, 
                        0x86, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 
                        0x00, 0x00, 0x02, 0x00, 0x86, 0x09, 0x00, 0x01, 
                        0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xF0, 0x07, 
                        0x86, 0x09, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 
                        0x00, 0x00, 0x08, 0x00, 0x79, 0x00
                    })
                    Method (_CRS, 0, NotSerialized)
                    {
                        CreateDWordField (MSRC, 0x2C, EMLN)
                        Subtract (\_SB.PCI0.TOM (), 0x00100000, EMLN)
                        Return (MSRC)
                    }

                    Method (_STA, 0, NotSerialized)
                    {
                        Return (0x0F)
                    }
                }

                OperationRegion (SMI0, SystemIO, 0x0000F500, 0x00000002)
                Field (SMI0, AnyAcc, NoLock, Preserve)
                {
                    SMIC,   8
                }

                OperationRegion (SMI1, SystemMemory, 0x0EEFFD4D, 0x00000200)
                Field (SMI1, AnyAcc, NoLock, Preserve)
                {
                    BCMD,   8, 
                    DID,    32, 
                    INFO,   1024
                }

                Field (SMI1, AnyAcc, NoLock, Preserve)
                {
                    AccessAs (ByteAcc, 0x00), 
                    Offset (0x05), 
                    INF,    8
                }

                Device (SIO)
                {
                    Name (_HID, EisaId ("PNP0A05"))
                    Device (LPT)
                    {
                        Name (MCD, 0x15)
                        Name (_HID, EisaId ("PNP0400"))
                        Name (_UID, 0x01)
                        Method (_CRS, 0, NotSerialized)
                        {
                            If (And (_STA (), 0x02))
                            {
                                Acquire (PSMX, 0xFFFF)
                                Store (0x00, BCMD)
                                Store (MCD, DID)
                                Store (Zero, SMIC)
                                Store (INFO, Local0)
                                Release (PSMX)
                                Return (Local0)
                            }

                            Return (RSRC)
                        }

                        Method (B_SR, 1, NotSerialized)
                        {
                            Acquire (PSMX, 0xFFFF)
                            Store (0x01, BCMD)
                            Store (MCD, DID)
                            Store (Arg0, INFO)
                            Store (Zero, SMIC)
                            Release (PSMX)
                        }

                        Method (B_PR, 0, NotSerialized)
                        {
                            Acquire (PSMX, 0xFFFF)
                            Store (0x02, BCMD)
                            Store (MCD, DID)
                            Store (Zero, SMIC)
                            Store (INFO, Local0)
                            Release (PSMX)
                            Return (Local0)
                        }

                        Method (B_DI, 0, NotSerialized)
                        {
                            Acquire (PSMX, 0xFFFF)
                            Store (0x03, BCMD)
                            Store (MCD, DID)
                            Store (Zero, SMIC)
                            Release (PSMX)
                        }

                        Method (_STA, 0, NotSerialized)
                        {
                            Acquire (PSMX, 0xFFFF)
                            Store (0x04, BCMD)
                            Store (MCD, DID)
                            Store (Zero, SMIC)
                            Store (INF, Local0)
                            Release (PSMX)
                            Return (Local0)
                        }

                        Name (RSRC, Buffer (0x0D)
                        {
                            0x47, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x08, 
                            0x22, 0x00, 0x00, 0x79, 0x00
                        })
                    }

                    Device (LPTB)
                    {
                        Name (MCD, 0x16)
                        Name (_HID, EisaId ("PNP0400"))
                        Name (_UID, 0x02)
                        Name (RSRC, Buffer (0x0D)
                        {
                            0x47, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x08, 
                            0x22, 0x00, 0x00, 0x79, 0x00
                        })
                        Method (_CRS, 0, NotSerialized)
                        {
                            If (And (_STA (), 0x02))
                            {
                                Acquire (PSMX, 0xFFFF)
                                Store (0x00, BCMD)
                                Store (MCD, DID)
                                Store (Zero, SMIC)
                                Store (INFO, Local0)
                                Release (PSMX)
                                Return (Local0)
                            }

                            Return (RSRC)
                        }

                        Method (B_SR, 1, NotSerialized)
                        {
                            Acquire (PSMX, 0xFFFF)
                            Store (0x01, BCMD)
                            Store (MCD, DID)
                            Store (Arg0, INFO)
                            Store (Zero, SMIC)
                            Release (PSMX)
                        }

                        Method (B_PR, 0, NotSerialized)
                        {
                            Acquire (PSMX, 0xFFFF)
                            Store (0x02, BCMD)
                            Store (MCD, DID)
                            Store (Zero, SMIC)
                            Store (INFO, Local0)
                            Release (PSMX)
                            Return (Local0)
                        }

                        Method (B_DI, 0, NotSerialized)
                        {
                            Acquire (PSMX, 0xFFFF)
                            Store (0x03, BCMD)
                            Store (MCD, DID)
                            Store (Zero, SMIC)
                            Release (PSMX)
                        }

                        Method (_STA, 0, NotSerialized)
                        {
                            Acquire (PSMX, 0xFFFF)
                            Store (0x04, BCMD)
                            Store (MCD, DID)
                            Store (Zero, SMIC)
                            Store (INF, Local0)
                            Release (PSMX)
                            Return (Local0)
                        }
                    }

                    Device (ECP)
                    {
                        Name (MCD, 0x0F)
                        Name (_HID, EisaId ("PNP0401"))
                        Name (_UID, 0x01)
                        Name (RSRC, Buffer (0x10)
                        {
                            0x47, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x08, 
                            0x22, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x79, 0x00
                        })
                        Method (_CRS, 0, NotSerialized)
                        {
                            If (And (_STA (), 0x02))
                            {
                                Acquire (PSMX, 0xFFFF)
                                Store (0x00, BCMD)
                                Store (MCD, DID)
                                Store (Zero, SMIC)
                                Store (INFO, Local0)
                                Release (PSMX)
                                Return (Local0)
                            }

                            Return (RSRC)
                        }

                        Method (_SRS, 1, NotSerialized)
                        {
                            Acquire (PSMX, 0xFFFF)
                            Store (0x01, BCMD)
                            Store (MCD, DID)
                            Store (Arg0, INFO)
                            Store (Zero, SMIC)
                            Release (PSMX)
                        }

                        Method (_PRS, 0, NotSerialized)
                        {
                            Acquire (PSMX, 0xFFFF)
                            Store (0x02, BCMD)
                            Store (MCD, DID)
                            Store (Zero, SMIC)
                            Store (INFO, Local0)
                            Release (PSMX)
                            Return (Local0)
                        }

                        Method (_DIS, 0, NotSerialized)
                        {
                            Acquire (PSMX, 0xFFFF)
                            Store (0x03, BCMD)
                            Store (MCD, DID)
                            Store (Zero, SMIC)
                            Release (PSMX)
                        }

                        Method (_STA, 0, NotSerialized)
                        {
                            Acquire (PSMX, 0xFFFF)
                            Store (0x04, BCMD)
                            Store (MCD, DID)
                            Store (Zero, SMIC)
                            Store (INF, Local0)
                            Release (PSMX)
                            Return (Local0)
                        }
                    }

                    Device (EPP)
                    {
                        Name (MCD, 0x0E)
                        Name (_HID, EisaId ("PNP0400"))
                        Name (_UID, 0x03)
                        Name (RSRC, Buffer (0x0D)
                        {
                            0x47, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x08, 
                            0x22, 0x00, 0x00, 0x79, 0x00
                        })
                        Method (_CRS, 0, NotSerialized)
                        {
                            If (And (_STA (), 0x02))
                            {
                                Acquire (PSMX, 0xFFFF)
                                Store (0x00, BCMD)
                                Store (MCD, DID)
                                Store (Zero, SMIC)
                                Store (INFO, Local0)
                                Release (PSMX)
                                Return (Local0)
                            }

                            Return (RSRC)
                        }

                        Method (B_SR, 1, NotSerialized)
                        {
                            Acquire (PSMX, 0xFFFF)
                            Store (0x01, BCMD)
                            Store (MCD, DID)
                            Store (Arg0, INFO)
                            Store (Zero, SMIC)
                            Release (PSMX)
                        }

                        Method (B_PR, 0, NotSerialized)
                        {
                            Acquire (PSMX, 0xFFFF)
                            Store (0x02, BCMD)
                            Store (MCD, DID)
                            Store (Zero, SMIC)
                            Store (INFO, Local0)
                            Release (PSMX)
                            Return (Local0)
                        }

                        Method (B_DI, 0, NotSerialized)
                        {
                            Acquire (PSMX, 0xFFFF)
                            Store (0x03, BCMD)
                            Store (MCD, DID)
                            Store (Zero, SMIC)
                            Release (PSMX)
                        }

                        Method (_STA, 0, NotSerialized)
                        {
                            Acquire (PSMX, 0xFFFF)
                            Store (0x04, BCMD)
                            Store (MCD, DID)
                            Store (Zero, SMIC)
                            Store (INF, Local0)
                            Release (PSMX)
                            Return (Local0)
                        }
                    }

                    Device (COMB)
                    {
                        Name (MCD, 0x11)
                        Name (_HID, EisaId ("PNP0500"))
                        Name (_UID, 0x02)
                        Name (RSRC, Buffer (0x0D)
                        {
                            0x47, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x08, 
                            0x22, 0x00, 0x00, 0x79, 0x00
                        })
                        Method (_CRS, 0, NotSerialized)
                        {
                            If (And (_STA (), 0x02))
                            {
                                Acquire (PSMX, 0xFFFF)
                                Store (0x00, BCMD)
                                Store (MCD, DID)
                                Store (Zero, SMIC)
                                Store (INFO, Local0)
                                Release (PSMX)
                                Return (Local0)
                            }

                            Return (RSRC)
                        }

                        Method (B_SR, 1, NotSerialized)
                        {
                            Acquire (PSMX, 0xFFFF)
                            Store (0x01, BCMD)
                            Store (MCD, DID)
                            Store (Arg0, INFO)
                            Store (Zero, SMIC)
                            Release (PSMX)
                        }

                        Method (B_PR, 0, NotSerialized)
                        {
                            Acquire (PSMX, 0xFFFF)
                            Store (0x02, BCMD)
                            Store (MCD, DID)
                            Store (Zero, SMIC)
                            Store (INFO, Local0)
                            Release (PSMX)
                            Return (Local0)
                        }

                        Method (B_DI, 0, NotSerialized)
                        {
                            Acquire (PSMX, 0xFFFF)
                            Store (0x03, BCMD)
                            Store (MCD, DID)
                            Store (Zero, SMIC)
                            Release (PSMX)
                        }

                        Method (_STA, 0, NotSerialized)
                        {
                            Acquire (PSMX, 0xFFFF)
                            Store (0x04, BCMD)
                            Store (MCD, DID)
                            Store (Zero, SMIC)
                            Store (INF, Local0)
                            Release (PSMX)
                            Return (Local0)
                        }
                    }

                    Device (IRDA)
                    {
                        Name (MCD, 0x12)
                        Name (_HID, EisaId ("PNP0510"))
                        Name (_UID, 0x01)
                        Name (RSRC, Buffer (0x0D)
                        {
                            0x47, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x08, 
                            0x22, 0x00, 0x00, 0x79, 0x00
                        })
                        Method (_CRS, 0, NotSerialized)
                        {
                            If (And (_STA (), 0x02))
                            {
                                Acquire (PSMX, 0xFFFF)
                                Store (0x00, BCMD)
                                Store (MCD, DID)
                                Store (Zero, SMIC)
                                Store (INFO, Local0)
                                Release (PSMX)
                                Return (Local0)
                            }

                            Return (RSRC)
                        }

                        Method (B_SR, 1, NotSerialized)
                        {
                            Acquire (PSMX, 0xFFFF)
                            Store (0x01, BCMD)
                            Store (MCD, DID)
                            Store (Arg0, INFO)
                            Store (Zero, SMIC)
                            Release (PSMX)
                        }

                        Method (B_PR, 0, NotSerialized)
                        {
                            Acquire (PSMX, 0xFFFF)
                            Store (0x02, BCMD)
                            Store (MCD, DID)
                            Store (Zero, SMIC)
                            Store (INFO, Local0)
                            Release (PSMX)
                            Return (Local0)
                        }

                        Method (B_DI, 0, NotSerialized)
                        {
                            Acquire (PSMX, 0xFFFF)
                            Store (0x03, BCMD)
                            Store (MCD, DID)
                            Store (Zero, SMIC)
                            Release (PSMX)
                        }

                        Method (_STA, 0, NotSerialized)
                        {
                            Acquire (PSMX, 0xFFFF)
                            Store (0x04, BCMD)
                            Store (MCD, DID)
                            Store (Zero, SMIC)
                            Store (INF, Local0)
                            Release (PSMX)
                            Return (Local0)
                        }
                    }

                    Device (BASK)
                    {
                        Name (MCD, 0x13)
                        Name (_HID, EisaId ("PNP0510"))
                        Name (_UID, 0x02)
                        Name (RSRC, Buffer (0x0D)
                        {
                            0x47, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x08, 
                            0x22, 0x00, 0x00, 0x79, 0x00
                        })
                        Method (_CRS, 0, NotSerialized)
                        {
                            If (And (_STA (), 0x02))
                            {
                                Acquire (PSMX, 0xFFFF)
                                Store (0x00, BCMD)
                                Store (MCD, DID)
                                Store (Zero, SMIC)
                                Store (INFO, Local0)
                                Release (PSMX)
                                Return (Local0)
                            }

                            Return (RSRC)
                        }

                        Method (B_SR, 1, NotSerialized)
                        {
                            Acquire (PSMX, 0xFFFF)
                            Store (0x01, BCMD)
                            Store (MCD, DID)
                            Store (Arg0, INFO)
                            Store (Zero, SMIC)
                            Release (PSMX)
                        }

                        Method (B_PR, 0, NotSerialized)
                        {
                            Acquire (PSMX, 0xFFFF)
                            Store (0x02, BCMD)
                            Store (MCD, DID)
                            Store (Zero, SMIC)
                            Store (INFO, Local0)
                            Release (PSMX)
                            Return (Local0)
                        }

                        Method (B_DI, 0, NotSerialized)
                        {
                            Acquire (PSMX, 0xFFFF)
                            Store (0x03, BCMD)
                            Store (MCD, DID)
                            Store (Zero, SMIC)
                            Release (PSMX)
                        }

                        Method (_STA, 0, NotSerialized)
                        {
                            Acquire (PSMX, 0xFFFF)
                            Store (0x04, BCMD)
                            Store (MCD, DID)
                            Store (Zero, SMIC)
                            Store (INF, Local0)
                            Release (PSMX)
                            Return (Local0)
                        }
                    }

                    Device (FIR)
                    {
                        Name (MCD, 0x14)
                        Name (_HID, EisaId ("ALI5123"))
                        Name (_CID, 0x1005D041)
                        Name (_UID, 0x03)
                        Name (RSRC, Buffer (0x10)
                        {
                            0x47, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x08, 
                            0x22, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x79, 0x00
                        })
                        Method (_CRS, 0, NotSerialized)
                        {
                            If (And (_STA (), 0x02))
                            {
                                Acquire (PSMX, 0xFFFF)
                                Store (0x00, BCMD)
                                Store (MCD, DID)
                                Store (Zero, SMIC)
                                Store (INFO, Local0)
                                Release (PSMX)
                                Return (Local0)
                            }

                            Return (RSRC)
                        }

                        Method (_SRS, 1, NotSerialized)
                        {
                            Acquire (PSMX, 0xFFFF)
                            Store (0x01, BCMD)
                            Store (MCD, DID)
                            Store (Arg0, INFO)
                            Store (Zero, SMIC)
                            Release (PSMX)
                        }

                        Method (_PRS, 0, NotSerialized)
                        {
                            Acquire (PSMX, 0xFFFF)
                            Store (0x02, BCMD)
                            Store (MCD, DID)
                            Store (Zero, SMIC)
                            Store (INFO, Local0)
                            Release (PSMX)
                            Return (Local0)
                        }

                        Method (_DIS, 0, NotSerialized)
                        {
                            Acquire (PSMX, 0xFFFF)
                            Store (0x03, BCMD)
                            Store (MCD, DID)
                            Store (Zero, SMIC)
                            Release (PSMX)
                        }

                        Method (_STA, 0, NotSerialized)
                        {
                            Acquire (PSMX, 0xFFFF)
                            Store (0x04, BCMD)
                            Store (MCD, DID)
                            Store (Zero, SMIC)
                            Store (INF, Local0)
                            Release (PSMX)
                            Return (Local0)
                        }
                    }

                    Device (FDC)
                    {
                        Name (MCD, 0x10)
                        Name (_HID, EisaId ("PNP0700"))
                        Name (RSRC, Buffer (0x18)
                        {
                            0x47, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x06, 
                            0x47, 0x01, 0x07, 0x01, 0x07, 0x01, 0x01, 0x01, 
                            0x22, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x79, 0x00
                        })
                        Method (_CRS, 0, NotSerialized)
                        {
                            If (And (_STA (), 0x02))
                            {
                                Acquire (PSMX, 0xFFFF)
                                Store (0x00, BCMD)
                                Store (MCD, DID)
                                Store (Zero, SMIC)
                                Store (INFO, Local0)
                                Release (PSMX)
                                Return (Local0)
                            }

                            Return (RSRC)
                        }

                        Method (_SRS, 1, NotSerialized)
                        {
                            Acquire (PSMX, 0xFFFF)
                            Store (0x01, BCMD)
                            Store (MCD, DID)
                            Store (Arg0, INFO)
                            Store (Zero, SMIC)
                            Release (PSMX)
                        }

                        Method (_PRS, 0, NotSerialized)
                        {
                            Acquire (PSMX, 0xFFFF)
                            Store (0x02, BCMD)
                            Store (MCD, DID)
                            Store (Zero, SMIC)
                            Store (INFO, Local0)
                            Release (PSMX)
                            Return (Local0)
                        }

                        Method (_DIS, 0, NotSerialized)
                        {
                            Acquire (PSMX, 0xFFFF)
                            Store (0x03, BCMD)
                            Store (MCD, DID)
                            Store (Zero, SMIC)
                            Release (PSMX)
                        }

                        Method (_STA, 0, NotSerialized)
                        {
                            Acquire (PSMX, 0xFFFF)
                            Store (0x04, BCMD)
                            Store (MCD, DID)
                            Store (Zero, SMIC)
                            Store (INF, Local0)
                            Release (PSMX)
                            Return (Local0)
                        }
                    }
                }

                Device (EC)
                {
                    Name (_HID, EisaId ("PNP0C09"))
                    Name (_GPE, 0x18)
                    Name (ECOK, 0x00)
                    Method (_REG, 2, NotSerialized)
                    {
                        If (LEqual (Arg0, 0x03))
                        {
                            Store (Arg1, ECOK)
                            Store (Arg1, \_SB.PCI0.ECOK)
                        }
                    }

                    Name (_CRS, Buffer (0x12)
                    {
                        0x47, 0x01, 0x62, 0x00, 0x62, 0x00, 0x01, 0x01, 
                        0x47, 0x01, 0x66, 0x00, 0x66, 0x00, 0x01, 0x01, 
                        0x79, 0x00
                    })
                    OperationRegion (ERAM, EmbeddedControl, 0x00, 0xFF)
                    Field (ERAM, ByteAcc, NoLock, Preserve)
                    {
                        Offset (0x04), 
                        CMCM,   8, 
                        CMD1,   8, 
                        CMD2,   8, 
                        CMD3,   8
                    }

                    Field (ERAM, AnyAcc, NoLock, Preserve)
                    {
                        Offset (0x80), 
                        NMSG,   8, 
                        SLED,   4, 
                        SLPT,   4, 
                        MODE,   1, 
                        Z000,   1, 
                        ACPI,   1, 
                        PWBN,   1, 
                        TME0,   1, 
                        TME1,   1, 
                        FANC,   1, 
                        DETF,   1, 
                        LIDS,   1, 
                        LWKE,   1, 
                        IWKE,   1, 
                        INTM,   1, 
                        MWKE,   1, 
                        COMM,   1, 
                        PME,    1, 
                        Offset (0x84), 
                        ADP,    1, 
                        AFLT,   1, 
                        BATP,   1, 
                            ,   1, 
                        BATL,   1, 
                        BATC,   1, 
                        Offset (0x85), 
                        BPU,    32, 
                        BDC,    32, 
                        BFC,    32, 
                        BTC,    32, 
                        BDV,    32, 
                        BST,    32, 
                        BPR,    32, 
                        BRC,    32, 
                        BPV,    32, 
                        BTP,    32, 
                        BCW,    32, 
                        BCL,    32, 
                        BCG,    32, 
                        BG2,    32, 
                        BMO,    32, 
                        BIF,    64, 
                        BSN0,   32, 
                        BSN1,   32, 
                        BTY0,   8, 
                        BTY1,   8, 
                        BTY2,   8, 
                        BTY3,   8, 
                        AC0,    16, 
                        PSV,    16, 
                        CRT,    16, 
                        TMP,    16, 
                        NABT,   8, 
                        Offset (0xE2)
                    }

                    Mutex (MTX0, 0x00)
                    Mutex (MTX1, 0x00)
                    Method (_Q0B, 0, NotSerialized)
                    {
                        Notify (\_SB.SLPB, 0x80)
                    }

                    Method (_Q06, 0, NotSerialized)
                    {
                        Store (0x8C, \_SB.PCI0.ISA.BCMD)
                        Store (Zero, \_SB.PCI0.ISA.SMIC)
                        Store ("AC Adapter In/Out", Debug)
                        Store (\_SB.PCI0.ADP, Local0)
                        If (ADP)
                        {
                            Notify (\_SB.AC, 0x00)
                            Store (0x88, \_SB.PCI0.ISA.BCMD)
                            Store (Zero, \_SB.PCI0.ISA.SMIC)
                        }
                        Else
                        {
                            Notify (\_SB.AC, 0x01)
                            Store (0x89, \_SB.PCI0.ISA.BCMD)
                            Store (Zero, \_SB.PCI0.ISA.SMIC)
                        }
                    }

                    Method (_Q08, 0, NotSerialized)
                    {
                        Store (0x8C, \_SB.PCI0.ISA.BCMD)
                        Store (Zero, \_SB.PCI0.ISA.SMIC)
                        Store ("Battery In/Out", Debug)
                        \_SB.BAT0.Z001 ()
                    }

                    Method (_Q09, 0, NotSerialized)
                    {
                        Store ("Battery charge/discharge", Debug)
                        \_SB.BAT0.UBST ()
                        Notify (\_SB.BAT0, 0x80)
                    }

                    Method (_Q03, 0, NotSerialized)
                    {
                        Store ("Low Batt 1", Debug)
                        Notify (\_SB.BAT0, 0x80)
                    }

                    Method (_Q04, 0, NotSerialized)
                    {
                        Store ("Low Batt 2", Debug)
                        Notify (\_SB.BAT0, 0x80)
                    }

                    Method (_Q0A, 0, NotSerialized)
                    {
                        Store ("Lid runtime event", Debug)
                        Notify (\_SB.LID, 0x80)
                    }

                    Method (_Q07, 0, NotSerialized)
                    {
                        Store ("Thermal status change event", Debug)
                        Notify (\_TZ.THRM, 0x80)
                    }

                    Method (_Q10, 0, NotSerialized)
                    {
                        Store ("_Q10 Enevt", Debug)
                        Store (Zero, Local1)
                        Store (0x94, \_SB.PCI0.ISA.BCMD)
                        Store (Zero, \_SB.PCI0.ISA.SMIC)
                        Store (0x54, \_SB.PCI0.AGP.VGA.CMID)
                        Store (\_SB.PCI0.AGP.VGA.CMDA, Local1)
                        If (Local1)
                        {
                            If (\_SB.PCI0.AGP.VGA.OSF)
                            {
                                Store (\_SB.PCI0.AGP.VGA.TOGF, Local0)
                                Store (0x8A, \_SB.PCI0.ISA.BCMD)
                                Store (Zero, \_SB.PCI0.ISA.SMIC)
                                Store (0x52, \_SB.PCI0.AGP.VGA.CMID)
                                Store (\_SB.PCI0.AGP.VGA.CMDA, Local3)
                                Store (0x53, \_SB.PCI0.AGP.VGA.CMID)
                                Store (\_SB.PCI0.AGP.VGA.CMDA, Local4)
                                Store (One, Local5)
                                Store (Zero, Local6)
                                If (Local3)
                                {
                                    Add (Local5, 0x02, Local5)
                                }

                                If (Local4)
                                {
                                    Add (Local5, 0x04, Local5)
                                }

                                If (LGreater (Local0, 0x06))
                                {
                                    Store (Zero, \_SB.PCI0.AGP.VGA.TOGF)
                                    Store (Zero, Local0)
                                }

                                Increment (Local0)
                                And (Local5, Local0, Local6)
                                If (LEqual (Local6, Local0))
                                {
                                    Store (Zero, Local3)
                                }
                                Else
                                {
                                    Store (One, Local3)
                                }

                                While (Local3)
                                {
                                    Increment (Local0)
                                    And (Local5, Local0, Local6)
                                    If (LEqual (Local6, Local0))
                                    {
                                        Store (Zero, Local3)
                                    }
                                    Else
                                    {
                                        Store (One, Local3)
                                    }

                                    If (LGreater (Local0, 0x06))
                                    {
                                        Store (Zero, Local0)
                                    }
                                }

                                Store (Local0, \_SB.PCI0.AGP.VGA.TOGF)
                                If (LEqual (Local6, 0x01))
                                {
                                    Store (One, \_SB.PCI0.AGP.VGA.LCDA)
                                    Store (Zero, \_SB.PCI0.AGP.VGA.CRTA)
                                    Store (Zero, \_SB.PCI0.AGP.VGA.TVOA)
                                }

                                If (LEqual (Local6, 0x02))
                                {
                                    Store (Zero, \_SB.PCI0.AGP.VGA.LCDA)
                                    Store (One, \_SB.PCI0.AGP.VGA.CRTA)
                                    Store (Zero, \_SB.PCI0.AGP.VGA.TVOA)
                                }

                                If (LEqual (Local6, 0x03))
                                {
                                    Store (One, \_SB.PCI0.AGP.VGA.LCDA)
                                    Store (One, \_SB.PCI0.AGP.VGA.CRTA)
                                    Store (Zero, \_SB.PCI0.AGP.VGA.TVOA)
                                }

                                If (LEqual (Local6, 0x04))
                                {
                                    Store (Zero, \_SB.PCI0.AGP.VGA.LCDA)
                                    Store (Zero, \_SB.PCI0.AGP.VGA.CRTA)
                                    Store (One, \_SB.PCI0.AGP.VGA.TVOA)
                                }

                                If (LEqual (Local6, 0x05))
                                {
                                    Store (One, \_SB.PCI0.AGP.VGA.LCDA)
                                    Store (Zero, \_SB.PCI0.AGP.VGA.CRTA)
                                    Store (One, \_SB.PCI0.AGP.VGA.TVOA)
                                }

                                If (LEqual (Local6, 0x06))
                                {
                                    Store (Zero, \_SB.PCI0.AGP.VGA.LCDA)
                                    Store (One, \_SB.PCI0.AGP.VGA.CRTA)
                                    Store (One, \_SB.PCI0.AGP.VGA.TVOA)
                                }

                                If (LEqual (Local6, 0x07))
                                {
                                    Store (One, \_SB.PCI0.AGP.VGA.LCDA)
                                    Store (One, \_SB.PCI0.AGP.VGA.CRTA)
                                    Store (One, \_SB.PCI0.AGP.VGA.TVOA)
                                }

                                If (\_SB.PCI0.AGP.VGA.OSF)
                                {
                                    Notify (\_SB.PCI0.AGP.VGA, 0x80)
                                }
                                Else
                                {
                                    Store (0x8E, \_SB.PCI0.ISA.BCMD)
                                    Store (Zero, \_SB.PCI0.ISA.SMIC)
                                }
                            }
                            Else
                            {
                                Store (0x8E, \_SB.PCI0.ISA.BCMD)
                                Store (Zero, \_SB.PCI0.ISA.SMIC)
                                Notify (\_SB.PCI0.AGP.VGA, 0x80)
                            }
                        }
                    }
                }
            }

            Device (IDE)
            {
                Name (_ADR, 0x00100000)
                Name (UDMT, Package (0x08)
                {
                    0x1E, 
                    0x2D, 
                    0x3C, 
                    0x5A, 
                    0x78, 
                    0x78, 
                    0x78, 
                    0x14
                })
                Name (PIOT, Package (0x05)
                {
                    0x78, 
                    0xB4, 
                    0xF0, 
                    0x017F, 
                    0x0258
                })
                Name (PIOC, Package (0x05)
                {
                    0x04, 
                    0x06, 
                    0x08, 
                    0x0D, 
                    0x10
                })
                Name (CBCT, Package (0x05)
                {
                    0x31, 
                    0x33, 
                    0x01, 
                    0x03, 
                    0x0A
                })
                Name (DACT, Package (0x05)
                {
                    0x03, 
                    0x03, 
                    0x04, 
                    0x05, 
                    0x08
                })
                Name (DRCT, Package (0x05)
                {
                    0x01, 
                    0x03, 
                    0x04, 
                    0x08, 
                    0x08
                })
                Name (PXLM, Package (0x05)
                {
                    0x02, 
                    0x01, 
                    0x00, 
                    0x00, 
                    0x00
                })
                OperationRegion (PCI, PCI_Config, 0x00, 0x60)
                Field (PCI, ByteAcc, NoLock, Preserve)
                {
                    Offset (0x09), 
                        ,   4, 
                    SCHE,   1, 
                    PCHE,   1, 
                    Offset (0x0A), 
                    Offset (0x0D), 
                    IDLT,   8, 
                    Offset (0x4B), 
                    U66E,   1, 
                    Offset (0x4C), 
                    Offset (0x53), 
                    CDFI,   1, 
                    CDUD,   1, 
                    Offset (0x54), 
                    PFTH,   8, 
                    SFTH,   8, 
                    PUDC,   8, 
                    SUDC,   8, 
                    PAST,   8, 
                    PCBT,   8, 
                    PTM0,   8, 
                    PTM1,   8, 
                    SAST,   8, 
                    SCBT,   8, 
                    STM0,   8, 
                    STM1,   8
                }

                Method (GTM, 3, NotSerialized)
                {
                    Store (Buffer (0x14) {}, Local0)
                    CreateDWordField (Local0, 0x00, PIO0)
                    CreateDWordField (Local0, 0x04, DMA0)
                    CreateDWordField (Local0, 0x08, PIO1)
                    CreateDWordField (Local0, 0x0C, DMA1)
                    CreateDWordField (Local0, 0x10, FLAG)
                    Store (Zero, PIO0)
                    Store (Zero, DMA0)
                    Store (Zero, PIO1)
                    Store (Zero, DMA1)
                    Store (Zero, FLAG)
                    If (Arg0)
                    {
                        ShiftRight (And (Arg0, 0x70), 0x04, Local1)
                        If (LEqual (Local1, Zero))
                        {
                            Store (0x08, Local1)
                        }

                        Add (And (Arg0, 0x0F, Local2), Local1, Local1)
                        Store (Match (^PIOC, MLE, Local1, MTR, 0x00, 0x00), Local2)
                        Store (DerefOf (Index (^PIOT, Local2)), PIO0)
                        If (LNot (LGreater (PIO0, 0xF0)))
                        {
                            Or (FLAG, 0x02, FLAG)
                        }
                    }

                    If (And (Arg2, 0x08))
                    {
                        Store (DerefOf (Index (^UDMT, And (Arg2, 0x07))), DMA0)
                        Or (FLAG, 0x01, FLAG)
                    }
                    Else
                    {
                        Store (PIO0, DMA0)
                    }

                    If (Arg1)
                    {
                        ShiftRight (And (Arg1, 0x70), 0x04, Local1)
                        If (LEqual (Local1, Zero))
                        {
                            Store (0x08, Local1)
                        }

                        Add (And (Arg1, 0x0F, Local2), Local1, Local1)
                        Store (Match (^PIOC, MLE, Local1, MTR, 0x00, 0x00), Local2)
                        Store (DerefOf (Index (^PIOT, Local2)), PIO1)
                        If (LNot (LGreater (PIO1, 0xF0)))
                        {
                            Or (FLAG, 0x08, FLAG)
                        }
                    }

                    If (And (Arg2, 0x80))
                    {
                        Store (DerefOf (Index (^UDMT, ShiftRight (And (Arg2, 0x70), 0x04))), DMA1)
                        Or (FLAG, 0x04, FLAG)
                    }
                    Else
                    {
                        Store (PIO1, DMA1)
                    }

                    Or (FLAG, 0x10, FLAG)
                    Return (Local0)
                }

                Method (STM, 3, NotSerialized)
                {
                    Store (Buffer (0x06)
                        {
                            0x00, 0x00, 0x00, 0x00, 0x00, 0x00
                        }, Local7)
                    CreateByteField (Local7, 0x00, TM0)
                    CreateByteField (Local7, 0x01, TM1)
                    CreateByteField (Local7, 0x02, UDC)
                    CreateByteField (Local7, 0x03, AST)
                    CreateByteField (Local7, 0x04, CBT)
                    CreateByteField (Local7, 0x05, U66)
                    CreateDWordField (Arg0, 0x00, PIO0)
                    CreateDWordField (Arg0, 0x04, DMA0)
                    CreateDWordField (Arg0, 0x08, PIO1)
                    CreateDWordField (Arg0, 0x0C, DMA1)
                    CreateDWordField (Arg0, 0x10, FLAG)
                    Store (FLAG, Local6)
                    Store (Ones, Local4)
                    If (LOr (DMA0, PIO0))
                    {
                        If (LAnd (DMA0, LNot (PIO0)))
                        {
                            If (And (Local6, 0x01))
                            {
                                If (LAnd (LLess (DMA0, 0x1E), LNot (LLess (DMA0, 0x0F))))
                                {
                                    Store (0x07, Local0)
                                }
                                Else
                                {
                                    Store (Match (^UDMT, MGE, DMA0, MTR, 0x00, 0x00), Local0)
                                }

                                Or (Local0, 0x08, UDC)
                                If (LLess (DMA0, 0x3C))
                                {
                                    Store (One, U66)
                                }
                            }

                            Store (Match (^PIOT, MGE, DMA0, MTR, 0x00, 0x00), Local0)
                            Store (DerefOf (Index (^DACT, Local0)), Local2)
                            Store (DerefOf (Index (^DRCT, Local0)), Local3)
                            Add (Local3, ShiftLeft (Local2, 0x04), TM0)
                            Store (Local0, Local4)
                        }

                        If (LAnd (LNot (DMA0), PIO0))
                        {
                            Store (Match (^PIOT, MGE, PIO0, MTR, 0x00, 0x00), Local0)
                            Store (DerefOf (Index (^DACT, Local0)), Local2)
                            Store (DerefOf (Index (^DRCT, Local0)), Local3)
                            Add (Local3, ShiftLeft (Local2, 0x04), TM0)
                            Store (Local0, Local4)
                        }

                        If (LAnd (DMA0, PIO0))
                        {
                            If (And (Local6, 0x01))
                            {
                                If (LAnd (LLess (DMA0, 0x1E), LNot (LLess (DMA0, 0x0F))))
                                {
                                    Store (0x07, Local0)
                                }
                                Else
                                {
                                    Store (Match (^UDMT, MGE, DMA0, MTR, 0x00, 0x00), Local0)
                                }

                                Or (Local0, 0x08, UDC)
                                If (LLess (DMA0, 0x3C))
                                {
                                    Store (One, U66)
                                }
                            }

                            If (LNot (LLess (PIO0, DMA0)))
                            {
                                Store (Match (^PIOT, MGE, PIO0, MTR, 0x00, 0x00), Local0)
                                Store (Local0, Local4)
                            }
                            Else
                            {
                                Store (Match (^PIOT, MGE, DMA0, MTR, 0x00, 0x00), Local0)
                                Store (Local0, Local4)
                            }

                            Store (DerefOf (Index (^DACT, Local0)), Local2)
                            Store (DerefOf (Index (^DRCT, Local0)), Local3)
                            Add (Local3, ShiftLeft (Local2, 0x04), TM0)
                        }
                    }

                    Store (Ones, Local5)
                    If (LOr (DMA1, PIO1))
                    {
                        If (LAnd (DMA1, LNot (PIO1)))
                        {
                            If (And (Local6, 0x04))
                            {
                                If (LAnd (LLess (DMA1, 0x1E), LNot (LLess (DMA1, 0x0F))))
                                {
                                    Store (0x07, Local0)
                                }
                                Else
                                {
                                    Store (Match (^UDMT, MGE, DMA1, MTR, 0x00, 0x00), Local0)
                                }

                                Or (ShiftLeft (Or (Local0, 0x08), 0x04), UDC, UDC)
                                If (LLess (DMA1, 0x3C))
                                {
                                    Store (One, U66)
                                }
                            }

                            Store (Match (^PIOT, MGE, DMA1, MTR, 0x00, 0x00), Local0)
                            Store (DerefOf (Index (^DACT, Local0)), Local2)
                            Store (DerefOf (Index (^DRCT, Local0)), Local3)
                            Add (Local3, ShiftLeft (Local2, 0x04), TM1)
                            Store (Local0, Local5)
                        }

                        If (LAnd (LNot (DMA1), PIO1))
                        {
                            Store (Match (^PIOT, MGE, PIO1, MTR, 0x00, 0x00), Local0)
                            Store (DerefOf (Index (^DACT, Local0)), Local2)
                            Store (DerefOf (Index (^DRCT, Local0)), Local3)
                            Add (Local3, ShiftLeft (Local2, 0x04), TM1)
                            Store (Local0, Local5)
                        }

                        If (LAnd (DMA1, PIO1))
                        {
                            If (And (Local6, 0x04))
                            {
                                If (LAnd (LLess (DMA1, 0x1E), LNot (LLess (DMA1, 0x0F))))
                                {
                                    Store (0x07, Local0)
                                }
                                Else
                                {
                                    Store (Match (^UDMT, MGE, DMA1, MTR, 0x00, 0x00), Local0)
                                }

                                Or (ShiftLeft (Or (Local0, 0x08), 0x04), UDC, UDC)
                                If (LLess (DMA1, 0x3C))
                                {
                                    Store (One, U66)
                                }
                            }

                            If (LNot (LLess (PIO1, DMA1)))
                            {
                                Store (Match (^PIOT, MGE, PIO1, MTR, 0x00, 0x00), Local0)
                                Store (Local0, Local5)
                            }
                            Else
                            {
                                Store (Match (^PIOT, MGE, DMA1, MTR, 0x00, 0x00), Local0)
                                Store (Local0, Local5)
                            }

                            Store (DerefOf (Index (^DACT, Local0)), Local2)
                            Store (DerefOf (Index (^DRCT, Local0)), Local3)
                            Add (Local3, ShiftLeft (Local2, 0x04), TM1)
                        }
                    }

                    If (LEqual (Local4, Ones))
                    {
                        If (LEqual (Local5, Ones))
                        {
                            Store (Zero, CBT)
                        }
                        Else
                        {
                            Store (DerefOf (Index (^CBCT, Local5)), CBT)
                        }
                    }
                    Else
                    {
                        If (LEqual (Local5, Ones))
                        {
                            Store (DerefOf (Index (^CBCT, Local4)), CBT)
                        }
                        Else
                        {
                            If (LNot (LLess (Local4, Local5)))
                            {
                                Store (DerefOf (Index (^CBCT, Local4)), CBT)
                            }
                            Else
                            {
                                Store (DerefOf (Index (^CBCT, Local5)), CBT)
                            }
                        }
                    }

                    Store (0x02, AST)
                    Return (Local7)
                }

                Method (GTF0, 3, NotSerialized)
                {
                    Store (Buffer (0x07)
                        {
                            0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
                        }, Local7)
                    CreateByteField (Local7, 0x01, MODE)
                    If (And (Arg1, 0x08))
                    {
                        And (Arg1, 0x07, Local0)
                        If (LEqual (Local0, 0x07))
                        {
                            Store (0x05, MODE)
                        }
                        Else
                        {
                            Subtract (0x04, Local0, MODE)
                        }

                        Or (MODE, 0x40, MODE)
                    }
                    Else
                    {
                        And (Arg2, 0x0F, Local0)
                        Store (Match (^DRCT, MEQ, Local0, MTR, 0x00, 0x00), Local1)
                        Store (DerefOf (Index (^PXLM, Local1)), MODE)
                        Or (MODE, 0x20, MODE)
                    }

                    Concatenate (Local7, Local7, Local6)
                    And (Arg2, 0x0F, Local0)
                    Store (Match (^DRCT, MEQ, Local0, MTR, 0x00, 0x00), Local1)
                    Subtract (0x04, Local1, MODE)
                    Or (MODE, 0x08, MODE)
                    Concatenate (Local6, Local7, Local5)
                    Return (Local5)
                }

                Method (GTF1, 3, NotSerialized)
                {
                    Store (Buffer (0x07)
                        {
                            0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
                        }, Local7)
                    CreateByteField (Local7, 0x01, MODE)
                    If (And (Arg1, 0x80))
                    {
                        ShiftRight (And (Arg1, 0x70), 0x04, Local0)
                        If (LEqual (Local0, 0x07))
                        {
                            Store (0x05, MODE)
                        }
                        Else
                        {
                            Subtract (0x04, Local0, MODE)
                        }

                        Or (MODE, 0x40, MODE)
                    }
                    Else
                    {
                        And (Arg2, 0x0F, Local0)
                        Store (Match (^DRCT, MEQ, Local0, MTR, 0x00, 0x00), Local1)
                        Store (DerefOf (Index (^PXLM, Local1)), MODE)
                        Or (MODE, 0x20, MODE)
                    }

                    Concatenate (Local7, Local7, Local6)
                    And (Arg2, 0x0F, Local0)
                    Store (Match (^DRCT, MEQ, Local0, MTR, 0x00, 0x00), Local1)
                    Subtract (0x04, Local1, MODE)
                    Or (MODE, 0x08, MODE)
                    Concatenate (Local6, Local7, Local5)
                    Return (Local5)
                }

                Device (PRIM)
                {
                    Name (_ADR, 0x00)
                    Method (_GTM, 0, NotSerialized)
                    {
                        Store ("GTM - Primary Controller", Debug)
                        Store (^^GTM (^^PTM0, ^^PTM1, ^^PUDC), Local0)
                        Return (Local0)
                    }

                    Method (_STM, 3, NotSerialized)
                    {
                        Store ("STM - Primary Controller", Debug)
                        Store (^^STM (Arg0, Arg1, Arg2), Local0)
                        CreateByteField (Local0, 0x00, TM0)
                        CreateByteField (Local0, 0x01, TM1)
                        CreateByteField (Local0, 0x02, UDC)
                        CreateByteField (Local0, 0x03, AST)
                        CreateByteField (Local0, 0x04, CBT)
                        CreateByteField (Local0, 0x05, U66)
                        Store (TM0, ^^PTM0)
                        Store (TM1, ^^PTM1)
                        Store (UDC, ^^PUDC)
                        Store (AST, ^^PAST)
                        Store (CBT, ^^PCBT)
                        If (U66)
                        {
                            Store (U66, ^^U66E)
                        }

                        Store (0x55, ^^PFTH)
                    }

                    Device (MAST)
                    {
                        Name (_ADR, 0x00)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Store ("GTF - Primary Master", Debug)
                            Store (^^^GTF0 (^^^PCHE, ^^^PUDC, ^^^PTM0), Local0)
                            Return (Local0)
                        }
                    }

                    Device (SLAV)
                    {
                        Name (_ADR, 0x01)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Store ("GTF - Primary Slave", Debug)
                            Store (^^^GTF1 (^^^PCHE, ^^^PUDC, ^^^PTM1), Local0)
                            Return (Local0)
                        }
                    }
                }

                Device (SECN)
                {
                    Name (_ADR, 0x01)
                    Method (_GTM, 0, NotSerialized)
                    {
                        Store ("GTM - Secondary Controller", Debug)
                        Store (^^GTM (^^STM0, ^^STM1, ^^SUDC), Local0)
                        Return (Local0)
                    }

                    Method (_STM, 3, NotSerialized)
                    {
                        Store ("STM - Secondary Controller", Debug)
                        Store (^^STM (Arg0, Arg1, Arg2), Local0)
                        CreateByteField (Local0, 0x00, TM0)
                        CreateByteField (Local0, 0x01, TM1)
                        CreateByteField (Local0, 0x02, UDC)
                        CreateByteField (Local0, 0x03, AST)
                        CreateByteField (Local0, 0x04, CBT)
                        CreateByteField (Local0, 0x05, U66)
                        Store (TM0, ^^STM0)
                        Store (TM1, ^^STM1)
                        Store (UDC, ^^SUDC)
                        Store (AST, ^^SAST)
                        Store (CBT, ^^SCBT)
                        If (U66)
                        {
                            Store (U66, ^^U66E)
                        }

                        Store (0x55, ^^SFTH)
                    }

                    Device (MAST)
                    {
                        Name (_ADR, 0x00)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Store ("GTF - Secondary Master", Debug)
                            Store (^^^GTF0 (^^^SCHE, ^^^SUDC, ^^^STM0), Local0)
                            Return (Local0)
                        }
                    }

                    Device (SLAV)
                    {
                        Name (_ADR, 0x01)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Store ("GTF - Secondary Slave", Debug)
                            Store (^^^GTF1 (^^^SCHE, ^^^SUDC, ^^^STM1), Local0)
                            Return (Local0)
                        }
                    }
                }
            }

            Device (AGP)
            {
                Name (_ADR, 0x00010000)
                Name (_PRT, Package (0x01)
                {
                    Package (0x04)
                    {
                        0x0005FFFF, 
                        0x00, 
                        \_SB.PCI0.ISA.LNK2, 
                        0x00
                    }
                })
                Device (VGA)
                {
                    Name (_ADR, 0x00050000)
                    Name (SWIT, 0x01)
                    Name (CRTA, 0x01)
                    Name (LCDA, 0x01)
                    Name (TVOA, 0x01)
                    Name (TOGF, 0x01)
                    Name (OSF, 0x00)
                    OperationRegion (CMOS, SystemIO, 0x70, 0x02)
                    Field (CMOS, ByteAcc, NoLock, Preserve)
                    {
                        CMID,   8, 
                        CMDA,   8
                    }

                    Method (_INI, 0, NotSerialized)
                    {
                        If (LEqual (SCMP (\_OS, "Microsoft Windows NT"), Zero))
                        {
                            Store (One, OSF)
                        }

                        If (LEqual (SizeOf (\_OS), 0x14))
                        {
                            Store (One, OSF)
                        }
                    }

                    Method (_DOS, 1, NotSerialized)
                    {
                        Store ("VGA --_DOS", Debug)
                        Store (Arg0, SWIT)
                    }

                    Method (_DOD, 0, NotSerialized)
                    {
                        Store ("VGA --_DOD", Debug)
                        Return (Package (0x03)
                        {
                            0x00010100, 
                            0x00010110, 
                            0x00010200
                        })
                    }

                    Device (CRT)
                    {
                        Name (_ADR, 0x0100)
                        Method (_DCS, 0, NotSerialized)
                        {
                            Store ("CRT --_DCS", Debug)
                            If (CRTA)
                            {
                                Return (0x1F)
                            }
                            Else
                            {
                                Return (0x1D)
                            }
                        }

                        Method (_DGS, 0, NotSerialized)
                        {
                            Store ("CRT --_DGS", Debug)
                            Store (CRTA, Local0)
                            If (CRTA)
                            {
                                Return (0x01)
                            }
                            Else
                            {
                                Return (0x00)
                            }
                        }

                        Method (_DSS, 1, NotSerialized)
                        {
                            Store ("CRT --_DSS", Debug)
                        }
                    }

                    Device (LCD)
                    {
                        Name (_ADR, 0x0110)
                        Method (_DCS, 0, NotSerialized)
                        {
                            Store ("LCD --_DCS", Debug)
                            If (LCDA)
                            {
                                Return (0x1F)
                            }
                            Else
                            {
                                Return (0x1D)
                            }
                        }

                        Method (_DGS, 0, NotSerialized)
                        {
                            Store ("LCD --_DGS", Debug)
                            Store (LCDA, Local0)
                            If (LCDA)
                            {
                                Return (0x01)
                            }
                            Else
                            {
                                Return (0x00)
                            }
                        }

                        Method (_DSS, 1, NotSerialized)
                        {
                            Store ("LCD --_DSS", Debug)
                        }
                    }

                    Device (TVO)
                    {
                        Name (_ADR, 0x0200)
                        Method (_DCS, 0, NotSerialized)
                        {
                            Store ("TVO --_DCS", Debug)
                            If (TVOA)
                            {
                                Return (0x1F)
                            }
                            Else
                            {
                                Return (0x1D)
                            }
                        }

                        Method (_DGS, 0, NotSerialized)
                        {
                            Store ("TVO --_DGS", Debug)
                            Store (TVOA, Local0)
                            If (TVOA)
                            {
                                Return (0x01)
                            }
                            Else
                            {
                                Return (0x00)
                            }
                        }

                        Method (_DSS, 1, NotSerialized)
                        {
                            Store ("TVO --_DSS", Debug)
                        }
                    }
                }
            }

            Method (MIN, 2, NotSerialized)
            {
                If (LLess (Arg0, Arg1))
                {
                    Return (Arg0)
                }
                Else
                {
                    Return (Arg1)
                }
            }

            Method (SLEN, 1, NotSerialized)
            {
                Return (SizeOf (Arg0))
            }

            Method (S2BF, 1, Serialized)
            {
                Add (SLEN (Arg0), One, Local0)
                Name (BUFF, Buffer (Local0) {})
                Store (Arg0, BUFF)
                Return (BUFF)
            }

            Method (SCMP, 2, NotSerialized)
            {
                Store (S2BF (Arg0), Local0)
                Store (S2BF (Arg1), Local1)
                Store (Zero, Local4)
                Store (SLEN (Arg0), Local5)
                Store (SLEN (Arg1), Local6)
                Store (MIN (Local5, Local6), Local7)
                While (LLess (Local4, Local7))
                {
                    Store (DerefOf (Index (Local0, Local4)), Local2)
                    Store (DerefOf (Index (Local1, Local4)), Local3)
                    If (LGreater (Local2, Local3))
                    {
                        Return (One)
                    }
                    Else
                    {
                        If (LLess (Local2, Local3))
                        {
                            Return (Ones)
                        }
                    }

                    Increment (Local4)
                }

                If (LLess (Local4, Local5))
                {
                    Return (One)
                }
                Else
                {
                    If (LLess (Local4, Local6))
                    {
                        Return (Ones)
                    }
                    Else
                    {
                        Return (Zero)
                    }
                }
            }

            Device (CRD0)
            {
                Name (_ADR, 0x000A0000)
                Name (_PRW, Package (0x02)
                {
                    0x09, 
                    0x03
                })
                Method (_INI, 0, NotSerialized)
                {
                    Or (PMEE, 0x01, PMEE)
                }

                Method (_PSC, 0, NotSerialized)
                {
                    Store (PWST, Local0)
                    Return (Local0)
                }

                Method (_PS0, 0, NotSerialized)
                {
                    Store (0x01, PMST)
                }

                Method (_PS2, 0, NotSerialized)
                {
                    Store (0x01, PMST)
                }

                Method (_PS3, 0, NotSerialized)
                {
                    Store (0x01, PMST)
                }

                Name (EX03, Zero)
                Method (_PSW, 1, NotSerialized)
                {
                    If (LEqual (Arg0, 0x01))
                    {
                        Store (0x00, PWST)
                        Or (PMEE, 0x01, PMEE)
                        Store (TI04, Local1)
                        Store (Or (TI04, 0x01), TI04)
                        Store (0x03E1, TI44)
                        Store (0x03, TIID)
                        Store (TIDA, EX03)
                        Store (Or (EX03, 0x80), TIDA)
                    }
                    Else
                    {
                        Store (0x00, PWST)
                        If (LEqual (PMST, 0x01))
                        {
                            Store (0x01, PMST)
                            Notify (\_SB.PCI0.CRD0, 0x00)
                        }
                    }
                }

                OperationRegion (CCRD, PCI_Config, 0x00, 0xA7)
                Field (CCRD, DWordAcc, Lock, Preserve)
                {
                    Offset (0x04), 
                    TI04,   8, 
                    Offset (0x44), 
                    TI44,   16, 
                    Offset (0x80), 
                    PMEE,   1, 
                    Offset (0x81), 
                    Offset (0xA4), 
                    PWST,   2, 
                    Offset (0xA5), 
                        ,   7, 
                    PMST,   1
                }

                OperationRegion (TIIO, SystemIO, 0x03E0, 0x02)
                Field (TIIO, ByteAcc, NoLock, Preserve)
                {
                    TIID,   8, 
                    TIDA,   8
                }
            }

            Device (NICD)
            {
                Name (_ADR, 0x000B0000)
                Name (_PRW, Package (0x02)
                {
                    0x09, 
                    0x03
                })
            }

            Device (USB1)
            {
                Name (_ADR, 0x00020000)
                Scope (\_GPE)
                {
                    Name (GPEF, 0x00)
                    Method (_L0B, 0, NotSerialized)
                    {
                        Notify (\_SB.PCI0.USB1, 0x02)
                        Store (0x00, GPEF)
                    }
                }
            }

            Device (USB2)
            {
                Name (_ADR, 0x000F0000)
                Scope (\_GPE)
                {
                    Method (_L0D, 0, NotSerialized)
                    {
                        Notify (\_SB.PCI0.USB2, 0x02)
                        Store (0x00, GPEF)
                    }
                }
            }

            Device (MODM)
            {
                Name (_ADR, 0x000C0000)
                Name (_PRW, Package (0x02)
                {
                    0x09, 
                    0x03
                })
            }
        }

        Device (AC)
        {
            Name (_HID, "ACPI0003")
            Name (_PCL, Package (0x01)
            {
                \_SB
            })
            Name (ACP, 0x00)
            Method (_STA, 0, NotSerialized)
            {
                Store ("---------------------------- AC _STA", Debug)
                Return (0x0F)
            }

            Method (_PSR, 0, NotSerialized)
            {
                Store ("---------------------------- AC _PSR", Debug)
                Store (ACP, Local0)
                Store (0x8C, \_SB.PCI0.ISA.BCMD)
                Store (Zero, \_SB.PCI0.ISA.SMIC)
                Store (\_SB.PCI0.ADP, Local0)
                If (LNot (LEqual (Local0, ACP)))
                {
                    FLPA ()
                }

                If (Local0)
                {
                    Store ("---------------------------- AC on line", Debug)
                }
                Else
                {
                    Store ("---------------------------- AC off line", Debug)
                }

                Return (Local0)
            }

            Method (CHAC, 0, NotSerialized)
            {
                Store ("---------------------------- AC _CHAC", Debug)
                If (\_SB.PCI0.ISA.EC.ECOK)
                {
                    Acquire (\_SB.PCI0.ISA.EC.MTX0, 0xFFFF)
                    Store (\_SB.PCI0.ISA.EC.ADP, Local0)
                    Release (\_SB.PCI0.ISA.EC.MTX0)
                    If (LNot (LEqual (Local0, ACP)))
                    {
                        FLPA ()
                    }
                }
            }

            Method (FLPA, 0, NotSerialized)
            {
                Store ("---------------------------- AC _FLPA", Debug)
                If (ACP)
                {
                    Store (0x00, ACP)
                }
                Else
                {
                    Store (0x01, ACP)
                }

                Notify (\_SB.AC, 0x00)
            }
        }

        Device (BAT0)
        {
            Name (_HID, EisaId ("PNP0C0A"))
            Name (_UID, 0x01)
            Name (_PCL, Package (0x01)
            {
                \_SB
            })
            Name (BIFB, Package (0x0D)
            {
                0x01, 
                0x0514, 
                0x0514, 
                0x01, 
                0x2A30, 
                0x0138, 
                0x9C, 
                0x0D, 
                0x0D, 
                "CA54200", 
                "1", 
                " ", 
                " COMPAQ "
            })
            Name (BSTB, Package (0x04)
            {
                0x00, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0x2710
            })
            Name (MDLS, Package (0x07)
            {
                "Unknown", 
                " 3500", 
                " 3800", 
                " 4500", 
                " 2600", 
                " 3000", 
                " 3200"
            })
            Name (CHAR, Package (0x10)
            {
                "0", 
                "1", 
                "2", 
                "3", 
                "4", 
                "5", 
                "6", 
                "7", 
                "8", 
                "9", 
                "A", 
                "B", 
                "C", 
                "D", 
                "E", 
                "F"
            })
            Method (PBFE, 3, NotSerialized)
            {
                CreateByteField (Arg0, Arg1, TIDX)
                Store (Arg2, TIDX)
            }

            Method (ITOS, 1, NotSerialized)
            {
                Store ("", Local0)
                Store (0x08, Local1)
                While (Local1)
                {
                    Decrement (Local1)
                    And (ShiftRight (Arg0, ShiftLeft (Local1, 0x02)), 0x0F, Local4)
                    Store (DerefOf (Index (CHAR, Local4)), Local2)
                    Concatenate (Local0, Local2, Local5)
                    Store (Local5, Local0)
                }

                Return (Local0)
            }

            Method (Z002, 1, NotSerialized)
            {
                Store ("", Local0)
                Store (0x04, Local1)
                While (Local1)
                {
                    Decrement (Local1)
                    And (ShiftRight (Arg0, ShiftLeft (Local1, 0x02)), 0x0F, Local4)
                    Store (DerefOf (Index (CHAR, Local4)), Local2)
                    Concatenate (Local0, Local2, Local5)
                    Store (Local5, Local0)
                }

                Return (Local0)
            }

            Method (_STA, 0, NotSerialized)
            {
                Store (0x8B, \_SB.PCI0.ISA.BCMD)
                Store (Zero, \_SB.PCI0.ISA.SMIC)
                Store (\_SB.PCI0.BATP, Local0)
                If (Or (Local0, Local0))
                {
                    Return (0x1F)
                }
                Else
                {
                    Return (0x0F)
                }
            }

            Method (_BIF, 0, NotSerialized)
            {
                Store (0x8B, \_SB.PCI0.ISA.BCMD)
                Store (Zero, \_SB.PCI0.ISA.SMIC)
                Acquire (\_SB.PCI0.ISA.EC.MTX0, 0xFFFF)
                Store (0x00, Index (BIFB, 0x00))
                Store (\_SB.PCI0.BDV, Local1)
                Store (\_SB.PCI0.BDC, Local0)
                Multiply (Local0, Local1, Local0)
                Divide (Local0, 0x03E8, Local2, Local0)
                Store (Local0, Index (BIFB, 0x01))
                Store (\_SB.PCI0.BFC, Local0)
                Multiply (Local0, Local1, Local0)
                Divide (Local0, 0x03E8, Local2, Local0)
                Store (Local0, Index (BIFB, 0x02))
                Store (\_SB.PCI0.BTC, Index (BIFB, 0x03))
                Store (\_SB.PCI0.BDV, Index (BIFB, 0x04))
                Store (\_SB.PCI0.BCW, Local0)
                Multiply (Local0, Local1, Local0)
                Divide (Local0, 0x03E8, Local2, Local0)
                Store (Local0, Index (BIFB, 0x05))
                Store (\_SB.PCI0.BCL, Local0)
                Multiply (Local0, Local1, Local0)
                Divide (Local0, 0x03E8, Local2, Local0)
                Store (Local0, Index (BIFB, 0x06))
                Store (\_SB.PCI0.BCG, Local0)
                Multiply (Local0, Local1, Local0)
                Divide (Local0, 0x03E8, Local2, Local0)
                Store (Local0, Index (BIFB, 0x07))
                Store (\_SB.PCI0.BG2, Local0)
                Multiply (Local0, Local1, Local0)
                Divide (Local0, 0x03E8, Local2, Local0)
                Store (Local0, Index (BIFB, 0x08))
                Store (\_SB.PCI0.BMO, Local5)
                Store (\_SB.PCI0.NABT, Local5)
                And (Local5, 0x0F, Local5)
                If (LGreater (Local5, 0x06))
                {
                    Store (DerefOf (Index (MDLS, 0x00)), Index (BIFB, 0x09))
                }
                Else
                {
                    Store ("---------------- NABT < 6 ", Debug)
                    Store (\_SB.PCI0.NABT, Local5)
                    And (Local5, 0x0F, Local5)
                    Store (0x00, Local1)
                    If (LEqual (Local5, 0x01))
                    {
                        Store (0x01, Local1)
                    }

                    If (LEqual (Local5, 0x04))
                    {
                        Store (0x01, Local1)
                    }

                    Store (\_SB.PCI0.BDC, Local0)
                    If (LEqual (Local1, 0x01))
                    {
                        Store ("---------------------NiMH battery, NABT =1,4 ", Debug)
                        If (LNot (LLess (Local0, 0x0ED8)))
                        {
                            Store (Z002 (ToBCD (Local0)), Local1)
                            Store (Local1, Index (BIFB, 0x09))
                            Store ("-------------------- DC > 3800 ", Debug)
                        }
                        Else
                        {
                            Store ("3800", Index (BIFB, 0x09))
                            Store ("-------------------- DC <= 3800 ", Debug)
                        }

                        Store (\_SB.PCI0.BDC, Local0)
                        If (LEqual (Local0, 0x11C6))
                        {
                            Store ("3800", Index (BIFB, 0x09))
                            Store ("-------------------- DC =4550 ", Debug)
                        }
                    }
                    Else
                    {
                        Store ("---------------- Li Battery ", Debug)
                        If (LNot (LLess (Local0, 0x0BB8)))
                        {
                            Store (Z002 (ToBCD (Local0)), Local1)
                            Store (Local1, Index (BIFB, 0x09))
                            Store ("--------------------- DC >= 3000 ", Debug)
                        }
                        Else
                        {
                            Store ("2600", Index (BIFB, 0x09))
                            Store ("--------------------- DC < 3000 ", Debug)
                        }
                    }
                }

                Store (\_SB.PCI0.BSN0, Local0)
                Store (\_SB.PCI0.BSN1, Local1)
                Store (\_SB.PCI0.BTY0, Local0)
                Store (\_SB.PCI0.BTY1, Local1)
                Store (\_SB.PCI0.BTY2, Local2)
                Store (\_SB.PCI0.BTY3, Local3)
                Store (Buffer (0x05) {}, Local4)
                PBFE (Local4, 0x00, Local0)
                PBFE (Local4, 0x01, Local1)
                PBFE (Local4, 0x02, Local2)
                PBFE (Local4, 0x03, Local3)
                PBFE (Local4, 0x04, 0x00)
                Name (Z003, "xxxxxxxx")
                Store (Local4, Z003)
                Store (Z003, Index (BIFB, 0x0B))
                If (\_SB.PCI0.BATP)
                {
                    Store (" COMPAQ ", Index (BIFB, 0x0C))
                }
                Else
                {
                    Store (" ", Index (BIFB, 0x0C))
                }

                Release (\_SB.PCI0.ISA.EC.MTX0)
                Return (BIFB)
            }

            Method (_BST, 0, NotSerialized)
            {
                UBST ()
                Return (BSTB)
            }

            Name (CRIT, 0x00)
            Method (UBST, 0, NotSerialized)
            {
                Store (0x8C, \_SB.PCI0.ISA.BCMD)
                Store (Zero, \_SB.PCI0.ISA.SMIC)
                Store (\_SB.PCI0.BST, Index (BSTB, 0x00))
                Store (\_SB.PCI0.BPR, Local0)
                Store (\_SB.PCI0.BDV, Local1)
                If (LNot (LLess (Local0, 0x8000)))
                {
                    Subtract (0x00010000, Local0, Local0)
                    Multiply (Local0, Local1, Local0)
                    Divide (Local0, 0x03E8, Local2, Local0)
                    Store (Local0, Index (BSTB, 0x01))
                }
                Else
                {
                    Multiply (Local0, Local1, Local0)
                    Divide (Local0, 0x03E8, Local2, Local0)
                    Store (Local0, Index (BSTB, 0x01))
                }

                Store (\_SB.PCI0.BRC, Local0)
                Multiply (Local0, Local1, Local0)
                Divide (Local0, 0x03E8, Local2, Local0)
                Store (Local0, Index (BSTB, 0x02))
                Store (\_SB.PCI0.BPV, Index (BSTB, 0x03))
                Store (DerefOf (Index (BSTB, 0x00)), Local0)
                If (\_SB.PCI0.ISA.EC.ECOK)
                {
                    Store (\_SB.PCI0.ISA.EC.BATC, Local1)
                }

                And (Local0, 0xFFFB, Local0)
                ShiftLeft (Local1, 0x02, Local1)
                Add (Local0, Local1, Local0)
                Store (Local0, Index (BSTB, 0x00))
            }

            Method (Z001, 0, NotSerialized)
            {
                Acquire (\_SB.PCI0.ISA.EC.MTX1, 0xFFFF)
                If (LEqual (_STA (), 0x1F))
                {
                    UBST ()
                    _BIF ()
                    Notify (\_SB.AC, 0x00)
                    Notify (\_SB.BAT0, 0x00)
                    Notify (\_SB.BAT0, 0x80)
                    Notify (\_SB.BAT0, 0x81)
                }
                Else
                {
                    UBST ()
                    Notify (\_SB.AC, 0x00)
                    Notify (\_SB.BAT0, 0x00)
                    Notify (\_SB.BAT0, 0x80)
                    Notify (\_SB.BAT0, 0x81)
                }

                \_SB.AC.FLPA ()
                Release (\_SB.PCI0.ISA.EC.MTX1)
            }
        }
    }

    Name (TPL, 0x0CFA)
    Scope (\_TZ)
    {
        ThermalZone (THRM)
        {
            Name (Z004, 0x00)
            Method (_TMP, 0, NotSerialized)
            {
                Store (0x8D, \_SB.PCI0.ISA.BCMD)
                Store (Zero, \_SB.PCI0.ISA.SMIC)
                Store (" ----------------- THRM_TMP -----------------", Debug)
                If (\_SB.PCI0.ISA.EC.ECOK)
                {
                    If (\_SB.PCI0.BATC)
                    {
                        Notify (\_SB.BAT0, 0x80)
                    }

                    Acquire (\_SB.PCI0.ISA.EC.MTX0, 0xFFFF)
                    Store (\_SB.PCI0.TMP, Local0)
                    Release (\_SB.PCI0.ISA.EC.MTX0)
                    Multiply (Local0, 0x0A, Local1)
                    Add (Local1, 0x0AAC, Local0)
                    If (LGreater (Local0, 0x0AAC))
                    {
                        Return (Local0)
                    }
                    Else
                    {
                        Return (TPL)
                    }
                }
                Else
                {
                    Return (TPL)
                }
            }

            Name (_PSL, Package (0x01)
            {
                \_PR.CPU0
            })
            Name (_PSV, 0x0E80)
            Name (_CRT, 0x0E94)
            Name (_TC1, 0x00)
            Name (_TC2, 0x01)
            Name (_TSP, 0x96)
            Method (_SCP, 1, NotSerialized)
            {
                Store (Arg0, Z004)
            }
        }
    }

    Scope (_GPE)
    {
    }
}



More information about the freebsd-current mailing list