本帖内容主要是根据“制作电量显示补丁”一文,制作的ThinkPad T430 dsdt 电量显示补丁 学习制作:[MaciASL补丁制作实战] 制作电量显示补丁
最终显示效果:
分享制作好的补丁: - #battery_ThinkPad_T430.txt
- # version(版本): 1.0
- # Update Time(更新时间) : 2016-08-30
- # author machuan, since 2016-08-30
- # works for: 针对
- # ThinkPad_T430
- # Tip: If you get a 0% battery status,you should also patch the Rehabman's "Fix Mutex with non-zero SyncLevel" patch.
- # You also can patch the both of your computer's battery patch and the Rehabman's patch at one time.
- # 注意:如果打过电量补丁后,有获取的电池状态显示为0%的情况,还需要打 Rehabman的 “Fix Mutex with non-zero SyncLevel” 补丁。
- # 你也可以,一次性打好 自己电脑的电量补丁 和 Rehabman 的那个补丁。
- # ==== Field devide 字段拆分 ====
- #HWAK
- into device label EC code_regex HWAK,\s+16, replace_matched begin TAHA,8,TAHB,8, end;
- #SBRC
- into device label EC code_regex SBRC,\s+16, replace_matched begin SBRD,8,SBRE,8, end;
- #SBFC
- into device label EC code_regex SBFC,\s+16, replace_matched begin SBFA,8,SBFB,8, end;
- #SBAC
- into device label EC code_regex SBAC,\s+16, replace_matched begin SBAA,8, SBAB,8, end;
- #SBVO
- into device label EC code_regex SBVO,\s+16, replace_matched begin SBVA,8, SBVB,8, end;
- #SBBM
- into device label EC code_regex SBBM,\s+16, replace_matched begin SBBA,8, SBBB,8, end;
- #SBDC
- into device label EC code_regex SBDC,\s+16, replace_matched begin SBDA,8, SBDB,8, end;
- #SBDV
- into device label EC code_regex SBDV,\s+16, replace_matched begin SBDS,8, SBDD,8, end;
- #SBSN
- into device label EC code_regex SBSN,\s+16 replace_matched begin SBSA,8, SBSB,8, end;
- #SBCH
- into device label EC code_regex SBCH,\s+32 replace_matched begin SBCA,8, SBCS,8, SBCN,8, SBCM,8, end;
- # ==== Replace called method 替换调用方法 ====
- #HWAK
- into method label _L1D code_regex HWAK replaceall_matched begin B1B2(TAHA,TAHB) end;
- #SBRC
- into method label GBST code_regex SBRC replaceall_matched begin B1B2(SBRD, SBRE) end;
- #SBFC
- into method label GBIF code_regex SBFC replaceall_matched begin B1B2(SBFA, SBFB) end;
- #SBAC
- into method label GBST code_regex SBAC replaceall_matched begin B1B2(SBAA, SBAB) end;
- #SBVO
- into method label GBST code_regex SBVO replaceall_matched begin B1B2(SBVA, SBVB) end;
- #SBBM
- into method label GBIF code_regex SBBM replaceall_matched begin B1B2(SBBA, SBBB) end;
- #SBDC METHOD
- into method label GBIF code_regex SBDC replaceall_matched begin B1B2(SBDA, SBDB) end;
- #SBDV
- into method label GBIF code_regex SBDV replaceall_matched begin B1B2(SBDS, SBDD) end;
- #SBSN
- into method label GBIF code_regex SBSN replaceall_matched begin B1B2(SBSA, SBSB) end;
- #SBCH
- into method label GBIF code_regex SBCH replaceall_matched begin B1B4(SBCA, SBCS, SBCN, SBCM) end;
- #大于32
- #SBMN
- into method label GBIF code_regex \(SBMN, replaceall_matched begin (RECB(0x1A,80), end;
- #SBDN
- into method label GBIF code_regex \(SBDN, replaceall_matched begin (RECB(0x25,96), end;
- # ==== Data handling method 数据处理方法 ====
- # utility methods to read/write buffers from/to EC
- into method label RE1B parent_label EC remove_entry;
- into method label RECB parent_label EC remove_entry;
- into device label EC 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 EC remove_entry;
- into method label WECB parent_label EC remove_entry;
- into device label EC 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
- // Arg0 - offset in bytes from zero-based EC\n
- // Arg1 - size of buffer in bits\n
- // Arg2 - value to write\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;
- into method label B1B2 remove_entry;
- into definitionblock code_regex . insert
- begin
- Method (B1B2, 2, NotSerialized)\n
- {\n
- Return(Or(Arg0, ShiftLeft(Arg1, 8)))\n
- }\n
- end;
- into method label B1B4 remove_entry;
- into definitionblock code_regex . insert
- begin
- Method (B1B4, 4, NotSerialized)\n
- {\n
- Store(Arg3, Local0)\n
- Or(Arg2, ShiftLeft(Local0, 8), Local0)\n
- Or(Arg1, ShiftLeft(Local0, 8), Local0)\n
- Or(Arg0, ShiftLeft(Local0, 8), Local0)\n
- Return(Local0)\n
- }\n
- end;
复制代码
|