- 积分
- 923
- 最后登录
- 2020-4-12
- 精华
- 0
- 阅读权限
- 40
- 主题
- 49
- UID
- 1496643
- 帖子
- 313
- PB币
- 196
- 威望
- 133
- 贡献
- 0
- 技术
- 25
- 活跃
- 309
- UID
- 1496643
- 帖子
- 313
- PB币
- 196
- 贡献
- 0
- 技术
- 25
- 活跃
- 309
|
修改DSDT的原生AppleACPIPlatform.kext支持中发现32位和128位变量。
看V版的修改是这样的,16位的好理解也有例子。32和128的就不知道如何表达了。
以下是V版的方法。
“
- //如果有16bit的才使用来合并拆开的值
- //B1B2(Arg0,Arg1) 把2个8bit合并成16bit, Arg1高8位,Arg0低位,
- Method (B1B2, 2, NotSerialized)
- {
- Or (ShiftLeft(Arg1,0x08), Arg0, Local0)
- Return (Local0)
- }
- //如果有32bit的才使用来合并拆开的值,否则无需添加这个。
- //更高的话也需要这个,下面的 Method (L1L4, 4, NotSerialized)会用到
- //B1B4(Arg0,Arg1Arg2,Arg3) 把4个8bit合并成32bit,Arg3是最高高8位,Arg0是最低低8位
- Method (B1B4, 4, NotSerialized)
- {
- Or (ShiftLeft(Arg1,0x08), Arg0, Local0)
- Or (ShiftLeft(Arg2,0x10), Local0, Local0)
- Or (ShiftLeft(Arg3,0x18), Local0, Local0)
- Return (Local0)
- }
- //如果有128bit的才使用来合并拆开的值,更高的话也需要添加这个,
- //L1L4(Arg0,Arg1Arg2,Arg3) 把4个32bit合并成128bit,Arg3是最高高32位,Arg0是最低低32位
- Method (L1L4, 4, NotSerialized)//32*4=128
- {
- Or (ShiftLeft(Arg1,0x20), Arg0, Local0)
- Or (ShiftLeft(Arg2,0x40), Local0, Local0)
- Or (ShiftLeft(Arg3,0x60), Local0, Local0)
- Return (Local0)
- }”
以下是我的问题:
Field (ECOR, ByteAcc, NoLock, Preserve)
{
Offset (0xA0),
SBCH, 32
……
Store (SBCH, BTYP)
以及
Field (ECOR, ByteAcc, NoLock, Preserve)
{
Offset (0xA0),
SBMN, 128
}
Field (ECOR, ByteAcc, NoLock, Preserve)
{
Offset (0xA0),
SBDN, 128
}
……
Store (SBMN, Index (Arg1, 0x0C))
Store (SBDN, Index (Arg1, 0x09))
如何修改呀!请为32位和128位举个例子好吗?我DSDT里恰巧有这两个变量。请知道的朋友不吝赐教!非常感谢!
另,用1.4以上的AppleACPIPlatform.kext后睡眠唤醒比较缓慢,FN唤醒后,需要再两次按键盘。不然黑屏状态重新进入睡眠。好容易醒来了结果USB外接口全部失效,USB鼠标重启前无法使用。不知大家是否有好办法呀!
|
|