    /* battery
     * In config, ADJT to XDJT
     * Find:    41444A54 08
     * Replace: 58444A54 08
     *
     * In config, CLRI to XLRI
     * Find:    434C5249 08
     * Replace: 584C5249 08
     *
     * In config, _BST to XBST
     * Find:    5F425354 00
     * Replace: 58425354 00
     *
     * In config, UPBI to XPBI
     * Find:    55504249 00
     * Replace: 58504249 00
     *
     * In config, UPBS to XPBS
     * Find:    55504253 00
     * Replace: 58504253 00
     *
     * In config, SMRD to XMRD
     * Find:    534D5244 04
     * Replace: 584D5244 04
     *
     * In config, SMWR to XMWR
     * Find:    534D5752 04
     * Replace: 584D5752 04
     */
    DefinitionBlock ("", "SSDT", 2, "OCLT", "BATT", 0)
    {
        External (_SB.BAT0, DeviceObj)
        External (_SB.BAT0._STA, MethodObj)
        External (_SB.BAT0.FABL, IntObj)
        External (_SB.BAT0.IVBS, MethodObj)
        External (_SB.BAT0.PBIF, PkgObj)
        External (_SB.BAT0.PBST, PkgObj)
        External (_SB.BAT0.UPUM, MethodObj)
        External (_SB.BAT0.XBST, MethodObj)
        External (_SB.BAT0.XPBI, MethodObj)
        External (_SB.BAT0.XPBS, MethodObj)
        External (_SB.GBFE, MethodObj)
        External (_SB.LID0._LID, MethodObj)
        External (_SB.PBFE, MethodObj)
        External (_SB.PCI0.ACEL, DeviceObj)
        External (_SB.PCI0.ACEL._STA, MethodObj)
        External (_SB.PCI0.ACEL.CNST, IntObj)
        External (_SB.PCI0.ACEL.XDJT, MethodObj)
        External (_SB.PCI0.ACEL.XLRI, MethodObj)
        External (_SB.PCI0.LPCB.EC0, DeviceObj)
        External (_SB.PCI0.LPCB.EC0.BACR, FieldUnitObj)
        External (_SB.PCI0.LPCB.EC0.BCNT, FieldUnitObj)
        External (_SB.PCI0.LPCB.EC0.BVHB, FieldUnitObj)
        External (_SB.PCI0.LPCB.EC0.BVLB, FieldUnitObj)
        External (_SB.PCI0.LPCB.EC0.ECOK, IntObj)
        External (_SB.PCI0.LPCB.EC0.MBNH, FieldUnitObj)
        External (_SB.PCI0.LPCB.EC0.MBST, FieldUnitObj)
        External (_SB.PCI0.LPCB.EC0.MBTS, FieldUnitObj)
        External (_SB.PCI0.LPCB.EC0.MUT0, MutexObj)
        External (_SB.PCI0.LPCB.EC0.PLGS, FieldUnitObj)
        External (_SB.PCI0.LPCB.EC0.SMAD, FieldUnitObj)
        External (_SB.PCI0.LPCB.EC0.SMB0, FieldUnitObj)
        External (_SB.PCI0.LPCB.EC0.SMCM, FieldUnitObj)
        External (_SB.PCI0.LPCB.EC0.SMPR, FieldUnitObj)
        External (_SB.PCI0.LPCB.EC0.SMST, FieldUnitObj)
        External (_SB.PCI0.LPCB.EC0.SW2S, FieldUnitObj)
        External (_SB.PCI0.LPCB.EC0.XMRD, MethodObj)
        External (_SB.PCI0.LPCB.EC0.XMWR, MethodObj)
        External (PWRS, FieldUnitObj)

        Method (B1B2, 2, NotSerialized)
        {
            Local0 = (Arg1 << 0x08)
            Local0 |= Arg0
            Return (Local0)
        }

        Scope (\_SB.PCI0.LPCB.EC0)
        {
            OperationRegion (ERM2, EmbeddedControl, Zero, 0xFF)
            Field (ERM2, ByteAcc, Lock, Preserve)
            {
                Offset (0x70),
                ADC0,   8,
                ADC1,   8,
                FCC0,   8,
                FCC1,   8,
                Offset (0x82),
                Offset (0x83),
                CUR0,   8,
                CUR1,   8,
                BRM0,   8,
                BRM1,   8,
                BCV0,   8,
                BCV1,   8
            }

            Field (ERM2, ByteAcc, NoLock, Preserve)
            {
                Offset (0x04),
                MW00,   8,
                MW01,   8
            }

            Method (RE1B, 1, NotSerialized)
            {
                OperationRegion (ERM2, EmbeddedControl, Arg0, One)
                Field (ERM2, ByteAcc, NoLock, Preserve)
                {
                    BYTE,   8
                }

                Return (BYTE) /* \_SB.PCI0.LPCB.EC0.RE1B.BYTE */
            }

            Method (RECB, 2, Serialized)
            {
                Arg1 = ((Arg1 + 0x07) >> 0x03)
                Name (TEMP, Buffer (Arg1){})
                Arg1 += Arg0
                Local0 = Zero
                While ((Arg0 < Arg1))
                {
                    TEMP [Local0] = RE1B (Arg0)
                    Arg0++
                    Local0++
                }

                Return (TEMP) /* \_SB.PCI0.LPCB.EC0.RECB.TEMP */
            }

            Method (WE1B, 2, NotSerialized)
            {
                OperationRegion (ERM2, EmbeddedControl, Arg0, One)
                Field (ERM2, ByteAcc, NoLock, Preserve)
                {
                    BYTE,   8
                }

                BYTE = Arg1
            }

            Method (WECB, 3, Serialized)
            {
                Arg1 = ((Arg1 + 0x07) >> 0x03)
                Name (TEMP, Buffer (Arg1){})
                TEMP = Arg2
                Arg1 += Arg0
                Local0 = Zero
                While ((Arg0 < Arg1))
                {
                    WE1B (Arg0, DerefOf (TEMP [Local0]))
                    Arg0++
                    Local0++
                }
            }

            Method (SMRD, 4, NotSerialized)
            {
                If (_OSI ("Darwin"))
                {
                    If (!ECOK)
                    {
                        Return (0xFF)
                    }

                    If ((Arg0 != 0x07))
                    {
                        If ((Arg0 != 0x09))
                        {
                            If ((Arg0 != 0x0B))
                            {
                                If ((Arg0 != 0x47))
                                {
                                    If ((Arg0 != 0xC7))
                                    {
                                        Return (0x19)
                                    }
                                }
                            }
                        }
                    }

                    Acquire (MUT0, 0xFFFF)
                    Local0 = 0x04
                    While ((Local0 > One))
                    {
                        SMST &= 0x40
                        SMCM = Arg2
                        SMAD = Arg1
                        SMPR = Arg0
                        Local3 = Zero
                        While (!Local1 = (SMST & 0xBF))
                        {
                            Sleep (0x02)
                            Local3++
                            If ((Local3 == 0x32))
                            {
                                SMST &= 0x40
                                SMCM = Arg2
                                SMAD = Arg1
                                SMPR = Arg0
                                Local3 = Zero
                            }
                        }

                        If ((Local1 == 0x80))
                        {
                            Local0 = Zero
                        }
                        Else
                        {
                            Local0--
                        }
                    }

                    If (Local0)
                    {
                        Local0 = (Local1 & 0x1F)
                    }
                    Else
                    {
                        If ((Arg0 == 0x07))
                        {
                            Arg3 = SMB0 /* External reference */
                        }

                        If ((Arg0 == 0x47))
                        {
                            Arg3 = SMB0 /* External reference */
                        }

                        If ((Arg0 == 0xC7))
                        {
                            Arg3 = SMB0 /* External reference */
                        }

                        If ((Arg0 == 0x09))
                        {
                            Arg3 = B1B2 (MW00, MW00)
                        }

                        If ((Arg0 == 0x0B))
                        {
                            Local3 = BCNT /* External reference */
                            Local2 = 0x20
                            If ((Local3 > Local2))
                            {
                                Local3 = Local2
                            }

                            If ((Local3 < 0x09))
                            {
                                Local2 = RECB (0x04, 0x40)
                            }
                            ElseIf ((Local3 < 0x11))
                            {
                                Local2 = RECB (0x04, 0x80)
                            }
                            ElseIf ((Local3 < 0x19))
                            {
                                Local2 = RECB (0x04, 0xC0)
                            }
                            Else
                            {
                                Local2 = RECB (0x04, 0x0100)
                            }

                            Local3++
                            Local4 = Buffer (Local3){}
                            Local3--
                            Local5 = Zero
                            Name (OEMS, Buffer (0x46){})
                            ToBuffer (Local2, OEMS) /* \_SB.PCI0.LPCB.EC0.SMRD.OEMS */
                            While ((Local3 > Local5))
                            {
                                GBFE (OEMS, Local5, RefOf (Local6))
                                PBFE (Local4, Local5, Local6)
                                Local5++
                            }

                            PBFE (Local4, Local5, Zero)
                            Arg3 = Local4
                        }
                    }

                    Release (MUT0)
                    Return (Local0)
                }
                Else
                {
                    Return (\_SB.PCI0.LPCB.EC0.XMRD (Arg0, Arg1, Arg2, Arg3))
                }
            }

            Method (SMWR, 4, NotSerialized)
            {
                If (_OSI ("Darwin"))
                {
                    If (!ECOK)
                    {
                        Return (0xFF)
                    }

                    If ((Arg0 != 0x06))
                    {
                        If ((Arg0 != 0x08))
                        {
                            If ((Arg0 != 0x0A))
                            {
                                If ((Arg0 != 0x46))
                                {
                                    If ((Arg0 != 0xC6))
                                    {
                                        Return (0x19)
                                    }
                                }
                            }
                        }
                    }

                    Acquire (MUT0, 0xFFFF)
                    Local0 = 0x04
                    While ((Local0 > One))
                    {
                        If ((Arg0 == 0x06))
                        {
                            SMB0 = Arg3
                        }

                        If ((Arg0 == 0x46))
                        {
                            SMB0 = Arg3
                        }

                        If ((Arg0 == 0xC6))
                        {
                            SMB0 = Arg3
                        }

                        If ((Arg0 == 0x08))
                        {
                            MW00 = Arg3
                            MW01 = (Arg3 >> 0x08)
                        }

                        If ((Arg0 == 0x0A))
                        {
                            WECB (0x04, 0x0100, Arg3)
                        }

                        SMST &= 0x40
                        SMCM = Arg2
                        SMAD = Arg1
                        SMPR = Arg0
                        Local3 = Zero
                        While (!Local1 = (SMST & 0xBF))
                        {
                            Sleep (0x02)
                            Local3++
                            If ((Local3 == 0x32))
                            {
                                SMST &= 0x40
                                SMCM = Arg2
                                SMAD = Arg1
                                SMPR = Arg0
                                Local3 = Zero
                            }
                        }

                        If ((Local1 == 0x80))
                        {
                            Local0 = Zero
                        }
                        Else
                        {
                            Local0--
                        }
                    }

                    If (Local0)
                    {
                        Local0 = (Local1 & 0x1F)
                    }

                    Release (MUT0)
                    Return (Local0)
                }
                Else
                {
                    Return (\_SB.PCI0.LPCB.EC0.XMWR (Arg0, Arg1, Arg2, Arg3))
                }
            }
        }

        Scope (\_SB.BAT0)
        {
            Method (_BST, 0, NotSerialized)  // _BST: Battery Status
            {
                If (_OSI ("Darwin"))
                {
                    If ((^^PCI0.LPCB.EC0.ECOK == One))
                    {
                        If (^^PCI0.LPCB.EC0.MBTS)
                        {
                            UPBS ()
                        }
                        Else
                        {
                            IVBS ()
                        }
                    }
                    Else
                    {
                        IVBS ()
                    }

                    Return (PBST) /* External reference */
                }
                Else
                {
                    Return (\_SB.BAT0.XBST ())
                }
            }

            Method (UPBI, 0, NotSerialized)
            {
                If (_OSI ("Darwin"))
                {
                    Local5 = B1B2 (^^PCI0.LPCB.EC0.FCC0, ^^PCI0.LPCB.EC0.FCC1)
                    If ((Local5 && !(Local5 & 0x8000)))
                    {
                        Local5 >>= 0x05
                        Local5 <<= 0x05
                        PBIF [One] = Local5
                        PBIF [0x02] = Local5
                        Local2 = (Local5 / 0x64)
                        Local2 += One
                        If ((B1B2 (^^PCI0.LPCB.EC0.ADC0, ^^PCI0.LPCB.EC0.ADC1) < 0x0C80))
                        {
                            Local4 = (Local2 * 0x0E)
                            PBIF [0x05] = (Local4 + 0x02)
                            Local4 = (Local2 * 0x09)
                            PBIF [0x06] = (Local4 + 0x02)
                            Local4 = (Local2 * 0x0C)
                        }
                        Else
                        {
                            Local4 = (Local2 * 0x0C)
                            PBIF [0x05] = (Local4 + 0x02)
                            Local4 = (Local2 * 0x07)
                            PBIF [0x06] = (Local4 + 0x02)
                            Local4 = (Local2 * 0x0A)
                        }

                        FABL = (Local4 + 0x02)
                    }

                    If (^^PCI0.LPCB.EC0.MBNH)
                    {
                        Local0 = ^^PCI0.LPCB.EC0.BVLB /* External reference */
                        Local1 = ^^PCI0.LPCB.EC0.BVHB /* External reference */
                        Local1 <<= 0x08
                        Local0 |= Local1
                        PBIF [0x04] = Local0
                        PBIF [0x09] = "OANI$"
                        PBIF [0x0B] = "NiMH"
                    }
                    Else
                    {
                        Local0 = ^^PCI0.LPCB.EC0.BVLB /* External reference */
                        Local1 = ^^PCI0.LPCB.EC0.BVHB /* External reference */
                        Local1 <<= 0x08
                        Local0 |= Local1
                        PBIF [0x04] = Local0
                        Sleep (0x32)
                        PBIF [0x0B] = "LION"
                    }

                    PBIF [0x09] = "Primary"
                    UPUM ()
                    PBIF [Zero] = One
                }
                Else
                {
                    \_SB.BAT0.XPBI ()
                }
            }

            Method (UPBS, 0, NotSerialized)
            {
                If (_OSI ("Darwin"))
                {
                    Local0 = B1B2 (^^PCI0.LPCB.EC0.CUR0, ^^PCI0.LPCB.EC0.CUR1)
                    If ((Local0 & 0x8000))
                    {
                        If ((Local0 == 0xFFFF))
                        {
                            PBST [One] = 0xFFFFFFFF
                        }
                        Else
                        {
                            Local1 = ~Local0
                            Local1++
                            Local3 = (Local1 & 0xFFFF)
                            PBST [One] = Local3
                        }
                    }
                    Else
                    {
                        PBST [One] = Local0
                    }

                    Local5 = B1B2 (^^PCI0.LPCB.EC0.BRM0, ^^PCI0.LPCB.EC0.BRM1)
                    If (!(Local5 & 0x8000))
                    {
                        Local5 >>= 0x05
                        Local5 <<= 0x05
                        If ((Local5 != DerefOf (PBST [0x02])))
                        {
                            PBST [0x02] = Local5
                        }
                    }

                    If ((!^^PCI0.LPCB.EC0.SW2S && (^^PCI0.LPCB.EC0.BACR == One)))
                    {
                        PBST [0x02] = FABL /* External reference */
                    }

                    PBST [0x03] = B1B2 (^^PCI0.LPCB.EC0.BCV0, ^^PCI0.LPCB.EC0.BCV1)
                    PBST [Zero] = ^^PCI0.LPCB.EC0.MBST /* External reference */
                }
                Else
                {
                    \_SB.BAT0.XPBS ()
                }
            }
        }

        Scope (\_SB.PCI0.ACEL)
        {
            Method (ADJT, 0, Serialized)
            {
                If (_OSI ("Darwin"))
                {
                    If (_STA ())
                    {
                        If ((^^LPCB.EC0.ECOK == One))
                        {
                            Local0 = ^^LPCB.EC0.SW2S /* External reference */
                        }
                        Else
                        {
                            Local0 = PWRS /* External reference */
                        }

                        If (((^^^LID0._LID () == Zero) && (Local0 == Zero)))
                        {
                            If ((CNST != One))
                            {
                                CNST = One
                                Sleep (0x0BB8)
                                ^^LPCB.EC0.SMWR (0xC6, 0x50, 0x36, 0x14)
                                ^^LPCB.EC0.SMWR (0xC6, 0x50, 0x37, 0x10)
                                ^^LPCB.EC0.SMWR (0xC6, 0x50, 0x34, 0x2A)
                                ^^LPCB.EC0.SMWR (0xC6, 0x50, 0x24, Zero)
                                ^^LPCB.EC0.PLGS = Zero
                                ^^LPCB.EC0.SMWR (0xC6, 0x50, 0x22, 0x20)
                            }
                        }
                        ElseIf ((CNST != Zero))
                        {
                            CNST = Zero
                            ^^LPCB.EC0.SMWR (0xC6, 0x50, 0x36, One)
                            ^^LPCB.EC0.SMWR (0xC6, 0x50, 0x37, 0x50)
                            ^^LPCB.EC0.SMWR (0xC6, 0x50, 0x34, 0x7F)
                            ^^LPCB.EC0.SMWR (0xC6, 0x50, 0x24, 0x02)
                            ^^LPCB.EC0.PLGS = One
                            ^^LPCB.EC0.SMWR (0xC6, 0x50, 0x22, 0x40)
                        }
                    }
                }
                Else
                {
                    \_SB.PCI0.ACEL.XDJT ()
                }
            }

            Method (CLRI, 0, Serialized)
            {
                If (_OSI ("Darwin"))
                {
                    Local0 = Zero
                    If ((^^LPCB.EC0.ECOK == One))
                    {
                        If ((^^LPCB.EC0.SW2S == Zero))
                        {
                            If ((^^^BAT0._STA () == 0x1F))
                            {
                                If ((B1B2 (^^LPCB.EC0.BRM0, ^^LPCB.EC0.BRM1) <= 0x96))
                                {
                                    Local0 = One
                                }
                            }
                        }
                    }

                    Return (Local0)
                }
                Else
                {
                    Return (\_SB.PCI0.ACEL.XLRI ())
                }
            }
        }
    }

# results matching ""

# No results matching ""