#Maintained by: RehabMan for: Laptop Patches #battery_Dell-Vostro-15xx.txt # created by RehabMan 2013-11-12 # created originally for rocrazypl # works for: # Dell Vostro 1510 # Alienware m14xr1 # Dell Inspiron 15R N5521 # Dell 3521 # Dell XPS 12 9q33 into method label B1B2 remove_entry; into definitionblock code_regex . insert begin Method (B1B2, 2, NotSerialized) { Return (Or (Arg0, ShiftLeft (Arg1, 8))) }\n end; # utility methods to read/write buffers from/to EC by RehabMan into method label RE1B parent_label EC0 remove_entry; into method label RECB parent_label EC0 remove_entry; into device label EC0 insert begin Method (RE1B, 1, NotSerialized)\n {\n OperationRegion(ERAM, EmbeddedControl, Arg0, 1)\n Field(ERAM, ByteAcc, NoLock, Preserve) { BYTE, 8 }\n Return(BYTE)\n }\n Method (RECB, 2, Serialized)\n {\n ShiftRight(Arg1, 3, Arg1)\n Name(TEMP, Buffer(Arg1) { })\n Add(Arg0, Arg1, Arg1)\n Store(0, Local0)\n While (LLess(Arg0, Arg1))\n {\n Store(RE1B(Arg0), Index(TEMP, Local0))\n Increment(Arg0)\n Increment(Local0)\n }\n Return(TEMP)\n }\n end; into method label WE1B parent_label EC0 remove_entry; into method label WECB parent_label EC0 remove_entry; into device label EC0 insert begin Method (WE1B, 2, NotSerialized)\n {\n OperationRegion(ERAM, EmbeddedControl, Arg0, 1)\n Field(ERAM, ByteAcc, NoLock, Preserve) { BYTE, 8 }\n Store(Arg1, BYTE)\n }\n Method (WECB, 3, Serialized)\n {\n ShiftRight(Arg1, 3, Arg1)\n Name(TEMP, Buffer(Arg1) { })\n Store(Arg2, TEMP)\n Add(Arg0, Arg1, Arg1)\n Store(0, Local0)\n While (LLess(Arg0, Arg1))\n {\n WE1B(Arg0, DerefOf(Index(TEMP, Local0)))\n Increment(Arg0)\n Increment(Local0)\n }\n }\n end; # # BATN handling is based on original DSDT # make sure your BATN is at offset 0x10 # # OperationRegion (ERAM, EmbeddedControl, Zero, 0xFF) # Field (ERAM, ByteAcc, Lock, Preserve) # { # Offset (0x09), # HSID, 8, # Offset (0x10), # BATN, 128, # into device label EC0 code_regex BATN,\s+128 replace_matched begin BATX,128 end; # Store (^^EC0.BATN, Index (STAT, 0x09)) into method label _BIF code_regex Store\s+\(\^\^EC0\.BATN,(.*)\) replace_matched begin Store(^^EC0.RECB(0x10,128),%1) end; # 16-bit EC into device label EC0 code_regex BRC0,\s+16 replace_matched begin RC00,8,RC01,8 end; into device label EC0 code_regex BSN0,\s+16 replace_matched begin SN00,8,SN01,8 end; into device label EC0 code_regex BPV0,\s+16 replace_matched begin PV00,8,PV01,8 end; into device label EC0 code_regex BDV0,\s+16 replace_matched begin DV00,8,DV01,8 end; into device label EC0 code_regex BDC0,\s+16 replace_matched begin DC00,8,DC01,8 end; into device label EC0 code_regex BFC0,\s+16 replace_matched begin FC00,8,FC01,8 end; into device label EC0 code_regex BPC0,\s+16 replace_matched begin PC00,8,PC01,8 end; into device label EC0 code_regex BAC0,\s+16 replace_matched begin AC00,8,AC01,8 end; # 16-bit EC (fan related) into device label EC0 code_regex ERIB,\s+16 replace_matched begin ERI0,8,ERI1,8 end; into method label FANG code_regex Store\s+\(Arg0,\s+ERIB\) replace_matched begin Store(Arg0, ERI0) Store(ShiftRight(Arg0, 8), ERI1) end; into method label FANW code_regex Store\s+\(Arg0,\s+ERIB\) replace_matched begin Store(Arg0, ERI0) Store(ShiftRight(Arg0, 8), ERI1) end; s # _BIF method into method label _BIF code_regex \(\^\^EC0\.BDC0, replaceall_matched begin (B1B2(^^EC0.DC00,^^EC0.DC01), end; into method label _BIF code_regex \(\^\^EC0\.BFC0, replaceall_matched begin (B1B2(^^EC0.FC00,^^EC0.FC01), end; into method label _BIF code_regex \(\^\^EC0\.BDV0, replaceall_matched begin (B1B2(^^EC0.DV00,^^EC0.DV01), end; into method label _BIF code_regex \(\^\^EC0\.BSN0, replaceall_matched begin (B1B2(^^EC0.SN00,^^EC0.SN01), end; # _BST method into method label _BST code_regex \(\^\^EC0\.BAC0, replaceall_matched begin (B1B2(^^EC0.AC00,^^EC0.AC01), end; into method label _BST code_regex \(\^\^EC0\.BRC0, replaceall_matched begin (B1B2(^^EC0.RC00,^^EC0.RC01), end; into method label _BST code_regex \^\^EC0\.BPV0, replaceall_matched begin B1B2(^^EC0.PV00,^^EC0.PV01), end; # 256-bit register fixes (SMD0) into device label EC0 code_regex (SMD0,)\s+(256) replace_matched begin SMDX,%2,//%1%2 end; into method label CFUN code_regex \(SMD0 replaceall_matched begin (RECB(0x64,256) end; into method label CFUN code_regex Store\s+\((.*),\s+SMD0\) replaceall_matched begin WECB(0x64,256,%1) end;