I have an Asus S430FN Laptop that has an error of only receiving 50% battery, I'm trying to fix it. I see you have succeeded in fixing the battery on many device. Therefore, I wonder if you can share the original DSDT and SSDT which has the Battery fixed of the device or how to patch the battery for me. Thanks a lot
Method (B1B2, 2, NotSerialized)
{
Return ((Arg0 | (Arg1 << 0x08)))
}
Method (B1B4, 4, NotSerialized)
{
Local0 = (Arg2 | (Arg3 << 0x08))
Local0 = (Arg1 | (Local0 << 0x08))
Local0 = (Arg0 | (Local0 << 0x08))
Return (Local0)
}
Method (W16B, 3, NotSerialized)
{
Arg0 = Arg2
Arg1 = (Arg2 >> 0x08)
}
Scope (_SB.PCI0.LPCB.EC0)
{
OperationRegion (BRIX, SystemIO, 0x0381, One)
Field (BRIX, ByteAcc, Lock, Preserve)
{
BRAH, 8
}
OperationRegion (BRAX, SystemIO, 0x0382, 0x02)
Field (BRAX, ByteAcc, Lock, Preserve)
{
BRAI, 8,
BRAD, 8
}
IndexField (BAIX, BADX, ByteAcc, NoLock, Preserve)
{
Offset (0x04),
Offset (0x40),
Offset (0x6E),
Offset (0x8E),
Offset (0x90),
EB0S, 8,
Offset (0x98),
Offset (0x9C),
BVL0, 8,
BVL1, 8,
BVL2, 8,
BVL3, 8,
BRC0, 8,
BRC1, 8,
BRC2, 8,
BRC3, 8,
BFC0, 8,
BFC1, 8,
BFC2, 8,
BFC3, 8,
BMD0, 8,
BMD1, 8,
BMD2, 8,
BMD3, 8,
BST0, 8,
BST1, 8,
BST2, 8,
BST3, 8,
BCC0, 8,
BCC1, 8,
BCC2, 8,
BCC3, 8,
BDC0, 8,
BDC1, 8,
BDC2, 8,
BDC3, 8,
BDV0, 8,
BDV1, 8,
BDV2, 8,
BDV3, 8
}
Method (BVOT, 0, NotSerialized)
{
Acquire (CMUT, 0xFFFF)
If (BSLF)
{
BRAH = 0xC9
Local0 = B1B4 (BVL0, BVL1, BVL2, BVL3)
}
Release (CMUT)
Return (Local0)
}
Method (BRCP, 0, NotSerialized)
{
Acquire (CMUT, 0xFFFF)
If (BSLF)
{
BRAH = 0xC9
Local0 = B1B4 (BRC0, BRC1, BRC2, BRC3)
}
Release (CMUT)
If ((Local0 == 0xFFFF))
{
Local0 = Ones
}
Return (Local0)
}
Method (BIF2, 0, NotSerialized)
{
If (ECAV ())
{
Acquire (CMUT, 0xFFFF)
If (BSLF)
{
BRAH = 0xC9
Local0 = B1B4 (BFC0, BFC1, BFC2, BFC3)
}
Release (CMUT)
Local0 &= 0xFFFF
}
Else
{
Local0 = Ones
}
Return (Local0)
}
Method (BIF3, 0, NotSerialized)
{
If (ECAV ())
{
Acquire (CMUT, 0xFFFF)
If (BSLF)
{
BRAH = 0xC9
Local0 = B1B4 (BMD0, BMD1, BMD2, BMD3)
}
Release (CMUT)
If ((Local0 != 0xFFFF))
{
Local0 >>= 0x09
Local0 &= One
Local0 ^= One
}
}
Else
{
Local0 = Ones
}
Return (Local0)
}
Method (BIF0, 0, NotSerialized)
{
If (ECAV ())
{
Acquire (CMUT, 0xFFFF)
If (BSLF)
{
BRAH = 0xC9
Local0 = B1B4 (BMD0, BMD1, BMD2, BMD3)
}
Release (CMUT)
If ((Local0 != 0xFFFF))
{
Local1 = (Local0 >> 0x0F)
Local1 &= One
Local0 = (Local1 ^ One)
}
}
Else
{
Local0 = Ones
}
Return (Local0)
}
Method (BSTS, 0, NotSerialized)
{
Acquire (CMUT, 0xFFFF)
If (BSLF)
{
BRAH = 0xC9
Local0 = B1B4 (BST0, BST1, BST2, BST3)
}
Release (CMUT)
Return (Local0)
}
Method (BCRT, 0, NotSerialized)
{
Acquire (CMUT, 0xFFFF)
If (BSLF)
{
BRAH = 0xC9
Local0 = B1B4 (BCC0, BCC1, BCC2, BCC3)
}
Release (CMUT)
Return (Local0)
}
Method (BIF1, 0, NotSerialized)
{
If (ECAV ())
{
Acquire (CMUT, 0xFFFF)
If (BSLF)
{
BRAH = 0xC9
Local0 = B1B4 (BDC0, BDC1, BDC2, BDC3)
}
Release (CMUT)
Local0 &= 0xFFFF
}
Else
{
Local0 = Ones
}
Return (Local0)
}
Method (BIF4, 0, NotSerialized)
{
If (ECAV ())
{
Acquire (CMUT, 0xFFFF)
If (BSLF)
{
BRAH = 0xC9
Local0 = B1B4 (BDV0, BDV1, BDV2, BDV3)
}
Release (CMUT)
}
Else
{
Local0 = Ones
}
Return (Local0)
}
Method (FBST, 4, NotSerialized)
{
Local1 = (Arg1 & 0xFFFF)
Local0 = Zero
If (ACAP ())
{
Local0 = One
}
If (Local0)
{
If (CHGS (Zero))
{
Local0 = 0x02
}
Else
{
Local0 = One
}
}
Else
{
Local0 = One
}
If (BLLO)
{
Local2 = 0x04
Local0 |= Local2
}
BRAH = 0xC9
If ((EB0S & 0x08))
{
Local2 = 0x04
Local0 |= Local2
}
If ((Local1 >= 0x8000))
{
Local1 = (0xFFFF - Local1)
}
Local2 = Arg2
If ((PUNT == Zero))
{
Acquire (CMUT, 0xFFFF)
BRAH = 0xC9
Local1 *= B1B4 (BDV0, BDV1, BDV2, BDV3)
Release (CMUT)
Local2 *= 0x0A
}
Local3 = (Local0 & 0x02)
If (!Local3)
{
Local3 = (LFCC - Local2)
Divide (LFCC, 0xC8, Local4, Local5)
If ((Local3 < Local5))
{
Local2 = LFCC /* External reference */
}
}
Else
{
Divide (LFCC, 0xC8, Local4, Local5)
Local4 = (LFCC - Local5)
If ((Local2 > Local4))
{
Local2 = Local4
}
}
If (!ACAP ())
{
Divide (Local2, MBLF, Local3, Local4)
If ((Local1 < Local4))
{
Local1 = Local4
}
}
PBST [Zero] = Local0
PBST [One] = Local1
PBST [0x02] = Local2
PBST [0x03] = Arg3
}
Method (CBST, 0, NotSerialized)
{
If (PUNT)
{
Acquire (CMUT, 0xFFFF)
BRAH = 0xC9
PBST [0x03] = B1B4 (BDV0, BDV1, BDV2, BDV3)
Release (CMUT)
Local0 = DerefOf (PBST [0x03])
PBST [One] = (DerefOf (PBST [One]) * Local0)
PBST [One] = (DerefOf (PBST [One]) / 0x03E8)
PBST [0x02] = (DerefOf (PBST [0x02]) * Local0)
PBST [0x02] = (DerefOf (PBST [0x02]) / 0x03E8)
}
}
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++
}
}
}
Scope (_SB.PCI0.LPCB.EC0.BAT0)
{
Method (_BIX, 0, NotSerialized) // _BIX: Battery Information Extended
{
If (_OSI ("Darwin"))
{
If (!BATP (Zero))
{
Return (\_SB.PCI0.LPCB.EC0.BAT0.XBIX ())
}
If ((GBTT (Zero) == 0xFF))
{
Return (\_SB.PCI0.LPCB.EC0.BAT0.XBIX ())
}
_BIF ()
BIXT [One] = DerefOf (PBIF [Zero])
BIXT [0x02] = DerefOf (PBIF [One])
BIXT [0x03] = DerefOf (PBIF [0x02])
BIXT [0x04] = DerefOf (PBIF [0x03])
BIXT [0x05] = DerefOf (PBIF [0x04])
BIXT [0x06] = DerefOf (PBIF [0x05])
BIXT [0x07] = DerefOf (PBIF [0x06])
BIXT [0x0E] = DerefOf (PBIF [0x07])
BIXT [0x0F] = DerefOf (PBIF [0x08])
BIXT [0x10] = DerefOf (PBIF [0x09])
BIXT [0x11] = DerefOf (PBIF [0x0A])
BIXT [0x12] = DerefOf (PBIF [0x0B])
BIXT [0x13] = DerefOf (PBIF [0x0C])
If ((DerefOf (BIXT [One]) == One))
{
BIXT [One] = Zero
Local0 = DerefOf (BIXT [0x05])
BIXT [0x02] = (DerefOf (BIXT [0x02]) * Local0)
BIXT [0x03] = (DerefOf (BIXT [0x03]) * Local0)
BIXT [0x06] = (DerefOf (BIXT [0x06]) * Local0)
BIXT [0x07] = (DerefOf (BIXT [0x07]) * Local0)
BIXT [0x0E] = (DerefOf (BIXT [0x0E]) * Local0)
BIXT [0x0F] = (DerefOf (BIXT [0x0F]) * Local0)
Divide (DerefOf (BIXT [0x02]), 0x03E8, Local0, BIXT [0x02])
Divide (DerefOf (BIXT [0x03]), 0x03E8, Local0, BIXT [0x03])
Divide (DerefOf (BIXT [0x06]), 0x03E8, Local0, BIXT [0x06])
Divide (DerefOf (BIXT [0x07]), 0x03E8, Local0, BIXT [0x07])
Divide (DerefOf (BIXT [0x0E]), 0x03E8, Local0, BIXT [0x0E])
Divide (DerefOf (BIXT [0x0F]), 0x03E8, Local0, BIXT [0x0F])
}
Local0 = (STC4 (0x2F) << 0x08)
Local0 += STC4 (0x2E)
BIXT [0x08] = Local0
BIXT [0x09] = 0x0001869F
Return (BIXT) /* External reference */
}
Else
{
Return (\_SB.PCI0.LPCB.EC0.BAT0.XBIX ())
}
}
}