- 积分
- 60
- 最后登录
- 2024-4-15
- 精华
- 0
- 阅读权限
- 20
- 主题
- 31
- UID
- 1646414
- 帖子
- 149
- PB币
- 0
- 威望
- 0
- 贡献
- 0
- 技术
- 1
- 活跃
- 393
- UID
- 1646414
- 帖子
- 149
- PB币
- 0
- 贡献
- 0
- 技术
- 1
- 活跃
- 393
|
4F
发表于 2014-9-17 17:57:25
IP属地河北
|只看该作者
爬帖若干。。。终于解决了!!! 我的方法放上:
dsdt未修改前相关代码如下:
Method (_PTS, 1, NotSerialized)
{
Store (Arg0, DEBG)
If (LEqual (Arg0, 0x05))
{
\_SB.PHSR (0x4B)
}
}
做如下修改:
1. 查找_PTS
在Method (_PTS, 1, NotSerialized)前加入如下代码(注意红色部分按2.修改)
OperationRegion (PMRS, SystemIO, 0x1030, 0x13)
Field (PMRS, ByteAcc, NoLock, Preserve)
{
, 4,
SLPE, 1
}
2. 查找 Scope (_PR) //之前是这里搞错了。。。坑了我好一阵子。。。
看Processor (CPU0, 0x00, 0x00001010, 0x06)红色部分,我的是1010,最终得到0x1030。
算法为:0x(红色部分4位+20) 。即:0x(1010+20)=0x1030 。
3. 原Method函数内执行语句放入条件判断Else中,新增一些代码,修改如下:
Method (_PTS, 1, NotSerialized)
{
If (LEqual (Arg0, 0x05))
{
Store (Zero, SLPE)
Sleep (0x10)
}
Else
{
Store (Arg0, DEBG)
\_SB.PHSR (0x4B)
}
}
4. 编译,dsdt.aml替换原档,重启系统,再执行关机,居然成功了。呵呵~~~
|
|