- 积分
- 221
- 最后登录
- 2023-6-22
- 精华
- 0
- 阅读权限
- 30
- 主题
- 12
- UID
- 4841777
- 帖子
- 478
- PB币
- 168
- 威望
- 5
- 贡献
- 0
- 技术
- 0
- 活跃
- 491
- UID
- 4841777
- 帖子
- 478
- PB币
- 168
- 贡献
- 0
- 技术
- 0
- 活跃
- 491
|
6F
发表于 2018-9-4 13:55:20
IP属地四川
|只看该作者
# ==== # 16-bit, HWAK, HSPD, SBRC, SBFC, SBAC, SBVO, SBDC, SBDV, SBSN====
#HWAK
into device label EC code_regex HWAK,\s+16, replace_matched begin HWA1,8,HWA2,8, end;
into method label _L1D parent_label \_GPE code_regex \(\\_SB\.PCI0\.LPC\.EC\.HWAK, replaceall_matched begin (B1B2(\\_SB.PCI0.LPC.EC.HWA1,\\_SB.PCI0.LPC.EC.HWA2), end; //参考RehabMan的battery_Lenovo-X201.txt
这里没什么
#HSPD
into device label EC code_regex HSPD,\s+16, replace_matched begin HSPM,8,HSPN,8, end;
这里只是拆分了,因为出现的地方是device(HSPD),问了群里的大佬,不需要改的
#SBRC
into device label EC code_regex SBRC,\s+16, replace_matched begin SBR1,8,SBR2,8, end;
into_all method label GBST code_regex \(SBRC, replaceall_matched begin (B1B2 (SBR1, SBR2), end; //参考RehabMan的battery_Lenovo-X201.txt
这是出现的地方 If (Arg2)
{
Multiply (SBRC, 0x0A, Local2)
}
Else
{
Store (SBRC, Local2)
}
有点奇怪,出现了2次,我看RehabMan改成all method
#SBFC
into device label EC code_regex SBFC,\s+16, replace_matched begin SBF1,8,SBF2,8, end;
into_all method label GBIF code_regex \(SBFC, replaceall_matched begin (B1B2 (SBF1, SBF2), end; //参考RehabMan的battery_Lenovo-X201.txt
这个RehabMan改成all method
这是出现的地方
If (Local7)
{
Multiply (SBFC, 0x0A, Local1)
}
Else
{
Store (SBFC, Local1)
}

#SBAC
into device label EC code_regex SBAC,\s+16, replace_matched begin SBA1,8,SBA2,8, end;
into_all method label GBST code_regex \(SBAC, replaceall_matched begin (B1B2 (SBA1, SBA2), end; //参考RehabMan的battery_Lenovo-X201.txt
这里没什么
#SBVO
into device label EC code_regex SBVO,\s+16, replace_matched begin SBVA,8,SBVB,8, end;
into_all method label GBST code_regex \(SBVO, replaceall_matched begin (B1B2 (SBVA, SBVB), end; //参考RehabMan的battery_Lenovo-X201.txt
这里没什么
#SBBM
into device label EC code_regex SBBM,\s+16, replace_matched begin SBB1,8,SBB2,8, end;
into method label GBIF code_regex SBBM replaceall_matched begin B1B2(SBB1,SBB2) end; //参考链接的方法
这里没什么
#SBDC
into device label EC code_regex SBDC,\s+16, replace_matched begin SBDP,8,SBDQ,8, end;
into_all method label GBIF code_regex \(SBDC, replaceall_matched begin (B1B2 (SBDP, SBDQ), end; //参考RehabMan的battery_Lenovo-X201.txt
这里 GBIF下有两个
If (Local7)
{
Multiply (SBDC, 0x0A, Local0)
}
Else
{
Store (SBDC, Local0)
}
还有一个函数 Method (SBDC, 1, NotSerialized) 看这句的命令应该是没改这里
#SBDV
into device label EC code_regex SBDV,\s+16, replace_matched begin SBDX,8,SBDY,8, end;
into_all method label GBIF code_regex \(SBDV, replaceall_matched begin (B1B2 (SBDX, SBDY), end; //参考RehabMan的battery_Lenovo-X201.txt
into_all method label GBIF code_regex \(SBDV\) replaceall_matched begin (B1B2 (SBDX, SBDY)) end; //参考RehabMan的battery_Lenovo-X201.txt
into_all method label GBIF code_regex ,\s+SBDV, replaceall_matched begin ,B1B2(SBDX, SBDY), end; //参考RehabMan的battery_Lenovo-X201.txt
这里出现了3出,都出是出现在GBIF ,我看他写了三行
ElseIf (SBDV)
{
Divide (0x00030D40, SBDV, Local2, Index (Arg1, 0x06))
}
Else
{
Store (0x00, Index (Arg1, 0x06))
}
Store (SBDV, Index (Arg1, 0x04))

#SBSN
into device label EC code_regex SBSN,\s+16 replace_matched begin SBS1,8,SBS2,8 end;
into_all method label GBIF code_regex \(SBSN replaceall_matched begin (B1B2 (SBS1, SBS2) end; //参考RehabMan的battery_Lenovo-
X201.txt
这里没什么

# ==== # 32-bit,SBCH ,SBMN , SBDN====
#SBCH
into device label EC code_regex SBCH,\s+32 replace_matched begin BCH0,8,BCH1,8,BCH2,8,BCH3,8 end; //参考RehabMan的battery_Lenovo-X201.txt
into_all method label GBIF code_regex \(SBCH, replaceall_matched begin (B1B4(BCH0,BCH1,BCH2,BCH3), end; //参考RehabMan的battery_Lenovo-X201.txt
32位的没什么问题

#SBMN //Store (SBMN, Index (Arg1, 0x0C))
into device label EC code_regex (SBMN,)\s+(128) replace_matched begin BMNX,%2,//%1%2 end; //参考RehabMan的battery_Lenovo-X201.txt
into method label GBIF code_regex \(SBMN, replaceall_matched begin (RECB(0xA0,128), end; //参考RehabMan的battery_Lenovo-X201.txt
这里128位的,不是太理解,我自己可能阅读不够仔细,我自己写的话,只能写出来第二句,第一句的含义不是特别明白

#SBDN
into device label EC code_regex (SBDN,)\s+(128) replace_matched begin BDNX,%2,//%1%2 end; //参考RehabMan的battery_Lenovo-X201.txt
into method label GBIF code_regex \(SBDN, replaceall_matched begin (RECB(0xA0,128), end; //参考RehabMan的battery_Lenovo-X201.txt
这里128位的,不是太理解,我自己可能阅读不够仔细,我自己写的话,只能写出来第二句,第一句的含义不是特别明白
# ==== 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; //这一段不知道对我有用没,我大于32位的都没有写入,全部都是读取的
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; //这一段我感觉好像是通用的,不打上的话,会找不到对象b1b2
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; //这一段我感觉好像是通用的,不打上的话,会找不到对象b1b4
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;
|
|