DefinitionBlock ("", "SSDT", 2, "OCLT", "BAT0", 0x00000000)
{
External (_SB.BAT0, DeviceObj)
External (_SB.PCI0.LPCB.EC0, DeviceObj)
External (_SB.BAT0.XPBI, MethodObj)
External (_SB.BAT0.XPBS, MethodObj)
External (_SB.BAT0.XVBI, MethodObj)
External (_SB.PCI0.LPCB.EC0.ECWT, MethodObj)
External (_SB.PCI0.LPCB.EC0.MBST, FieldUnitObj)
External (_SB.PCI0.LPCB.EC0.BACR, FieldUnitObj)
External (_SB.BAT0.PBIF, PkgObj)
External (_SB.BAT0.PBST, PkgObj)
External (_SB.BATM, MutexObj)
External (_SB.BAT0.BTUR, IntObj)
External (POSW, MethodObj)
Method (B1B2, 2, NotSerialized)
{
Return ((Arg0 | (Arg1 << 0x08)))
}
Scope (_SB.PCI0.LPCB.EC0)
{
Method (RE1B, 1, NotSerialized)
{
OperationRegion(ERAM, EmbeddedControl, Arg0, 1)
Field(ERAM, ByteAcc, NoLock, Preserve) { BYTE, 8 }
Return(BYTE)
}
Method (RECB, 2, Serialized)
{
ShiftRight(Arg1, 3, Arg1)
Name(TEMP, Buffer(Arg1) { })
Add(Arg0, Arg1, Arg1)
Store(0, Local0)
While (LLess(Arg0, Arg1))
{
Store(RE1B(Arg0), Index(TEMP, Local0))
Increment(Arg0)
Increment(Local0)
}
Return(TEMP)
}
OperationRegion (ERM2, EmbeddedControl, Zero, 0xFF)
Field (ERM2, ByteAcc, NoLock, Preserve)
{
Offset (0x70),
SCP0,8,SCP1,8,
ACP0,8,ACP1,8,
SVG0,8,SVG1,8,
Offset (0x77),
Offset (0x82),
,8,
CUR0,8,CUR1,8,
BRM0,8,BRM1,8,
BCV0,8,BCV1,8,
}
}
Scope (_SB.BAT0)
{
Method (UPBI, 0, NotSerialized)
{
If (_OSI ("Darwin"))
{
Acquire (BATM, 0xFFFF)
PBIF [One] = B1B2 (^^PCI0.LPCB.EC0.SCP0, ^^PCI0.LPCB.EC0.SCP1)
PBIF [0x02] = B1B2 (^^PCI0.LPCB.EC0.ACP0, ^^PCI0.LPCB.EC0.ACP1)
PBIF [0x04] = B1B2 (^^PCI0.LPCB.EC0.SVG0, ^^PCI0.LPCB.EC0.SVG1)
PBIF [0x05] = (B1B2 (^^PCI0.LPCB.EC0.SCP0, ^^PCI0.LPCB.EC0.SCP1)/0x0A)
PBIF [0x06] = (B1B2 (^^PCI0.LPCB.EC0.SCP0, ^^PCI0.LPCB.EC0.SCP1)/0x64)
PBIF [0x09] = "MWL32b"
If ((B1B2 (^^PCI0.LPCB.EC0.SCP0, ^^PCI0.LPCB.EC0.SCP1) < 0x1770))
{
PBIF [0x09] = "MWL32b"
}
If ((B1B2 (^^PCI0.LPCB.EC0.SCP0, ^^PCI0.LPCB.EC0.SCP1) < 0x0BB8))
{
PBIF [0x09] = "MWL31b"
}
Release (BATM)
}
Else
{
\_SB.BAT0.XPBI()
}
}
Method (UPBS, 0, NotSerialized)
{
If (_OSI ("Darwin"))
{
If ((B1B2 (^^PCI0.LPCB.EC0.BRM0, ^^PCI0.LPCB.EC0.BRM1) == Zero))
{
BTUR = One
}
ElseIf ((BTUR == One))
{
Notify (BAT0, 0x81)
Notify (BAT0, 0x80)
BTUR = Zero
}
Local5 = B1B2 (^^PCI0.LPCB.EC0.CUR0, ^^PCI0.LPCB.EC0.CUR1)
PBST [One] = POSW (Local5)
Local5 = B1B2 (^^PCI0.LPCB.EC0.BRM0, ^^PCI0.LPCB.EC0.BRM1)
If ((^^PCI0.LPCB.EC0.BACR == One))
{
Local5 = ((B1B2 (^^PCI0.LPCB.EC0.SCP0, ^^PCI0.LPCB.EC0.SCP1) / 0x32) +
B1B2 (^^PCI0.LPCB.EC0.BRM0, ^^PCI0.LPCB.EC0.BRM1))
}
Local5 = B1B2 (^^PCI0.LPCB.EC0.BRM0, ^^PCI0.LPCB.EC0.BRM1)
If (!(Local5 & 0x8000))
{
If ((Local5 != DerefOf (PBST [0x02])))
{
PBST [0x02] = Local5
}
}
PBST [0x03] = B1B2 (^^PCI0.LPCB.EC0.BCV0, ^^PCI0.LPCB.EC0.BCV1)
PBST [Zero] = ^^PCI0.LPCB.EC0.MBST
}
Else
{
\_SB.BAT0.XPBS()
}
}
Method (IVBI, 0, NotSerialized)
{
If (_OSI ("Darwin"))
{
PBIF [One] = 0xFFFFFFFF
PBIF [0x02] = 0xFFFFFFFF
PBIF [0x04] = 0xFFFFFFFF
PBIF [0x09] = "Bad"
PBIF [0x0A] = "Bad"
PBIF [0x0B] = "Bad"
PBIF [0x0C] = "Bad"
^^PCI0.LPCB.EC0.ECWT (Zero, ^^PCI0.LPCB.EC0.RECB (0x77, 64))
}
Else
{
\_SB.BAT0.XVBI()
}
}
}
}