积分 161 最后登录 2023-4-23 精华 0 阅读权限 20 主题 10 UID 3546283 帖子 328 PB币 97 威望 5 贡献 0 技术 1 活跃 395
UID 3546283 帖子 328 PB币 97 贡献 0 技术 1 活跃 395
DSDT和其他的SSDT都已解决了错误,剩下这个SSDT几个错误不知道是否修改正确,谁能帮我看看是否正确,我是在Clover 按 F4取的DSDT和SSDT。把提取到的文件复制到桌面的CLOVERDSDT文件夹下,然后把部分文件名的x去除。
我用iasl来联合编译,在终端输入命令 iasl -da -dl -fe refs.txt *.aml refs.txt的内容是在 https://bbs.pcbeta.com/forum.php?mod=viewthread&tid=1744298&highlight= 这个帖子下方的回复里面看见的,然后在文件夹下得到的了反编译的dsl文件,然后我用 MaciASL打开编译所得到的dsl文件来修改错误以及打补丁。
我先修改DSDT.dsl,这个DSDT.dsl文件存在一个 Errors和33个Warning,下面是我的修改过程,如果有错的地方请大神指点更正。
第一个错误:314 6074 Name already exists in scope (BNUM),我是这样修复的,先定位到错误的第314行代码,然后把 BNUM, 8, 删除。
第二个是Warning(警告):4615 3130 Result is not used,possible operator timeout will be missed,定位到错误提示行代码,然后把Acquire (MUT0, 0x0FFF)改成Acquire (MUT0, 0xFFFF),然后警告就没有了。
第三个还是Warning(警告):13000 3115 Not all control paths return a value (CGLS),先定位到Warning的代码Method (CGLS, 0, Serialized) 行下,然后在Method (CGLS, 0, Serialized){}的挂号内加入Return (Zero),然后警告就没有了。
第四个还是Warning(警告):13000 3115 Not all control paths return a value (THDS),先定位到Warning的代码Method (THDS, 1, Serialized) 行下,然后在Method (THDS, 1, Serialized) {}的挂号内Store (Zero, DO30)的下方加入Return (Zero),然后警告就没有了。
第五个还是Warning(警告):14057 3115 Not all control paths return a value (GPEH),先定位到Warning的代码Method (GPEH, 0, NotSerialized) 行下,然后在Method (GPEH, 0, NotSerialized) {}的挂号内加入Return (Zero),然后在Device (GLAN){}的挂号内加入Return (Zero)。
这里我感觉有点奇怪,剩下的Warning提示都没有了。
接着就是修改SSDT*.dsl文件了,由于大部分的SSDT文件都没有错误,就这个SSDT-12.dsl 文件存在5个Errors。
修改前的代码:
If (LGreaterEqual (ToInteger (Arg1), One))
{
While (One)
{
Store (ToInteger (Arg2), _T_0)
If (LEqual (_T_0, Zero))
{
Return (Buffer (One)
{
0x0F
})
}
ElseIf (LEqual (_T_0, One))
{
Store (DerefOf (Index (Arg3, Zero)), PGCE)
Store (DerefOf (Index (Arg3, One)), PGCD)
Store (\_SB.GGOV (0x02010016), OLDV)
\_SB.SGOV (0x02010016, PGCE)
If (LGreater (PGCD, Zero))
{
Sleep (PGCD)
\_SB.GGOV (0x02010016)
OLDV
}
If (LEqual (\_SB.GGOV (0x02010016), One))
{
Sleep (0x96)
If (LEqual (\_SB.GGOV (0x02010014), One)) {}
Else
{
Notify (\_SB.PCI0.I2C0.DFUD, One)
}
}
Return (Zero)
}
ElseIf (LEqual (_T_0, 0x02))
{
Store (DerefOf (Index (Arg3, Zero)), DFUE)
Store (DerefOf (Index (Arg3, One)), DFUD)
Store (\_SB.GGOV (0x02010014), OLDV)
\_SB.GGOV (0x02010014)
DFUE
If (LGreater (DFUD, Zero))
{
Sleep (DFUD)
\_SB.GGOV (0x02010014)
OLDV
}
Return (Zero)
}
ElseIf (LEqual (_T_0, 0x03))
{
Store (\_SB.GGOV (0x02010014), DFUV)
Store (\_SB.GGOV (0x02010016), PGCV)
Return (Package (0x02)
{
PGCV,
DFUV
})
}
Break
}
Return (Zero)
} 复制代码
修改后的代码:
If (LGreaterEqual (ToInteger (Arg1), One))
{
While (One)
{
Store (ToInteger (Arg2), _T_0)
If (LEqual (_T_0, Zero))
{
Return (Buffer (One)
{
0x0F
})
}
ElseIf (LEqual (_T_0, One))
{
Store (DerefOf (Index (Arg3, Zero)), PGCE)
Store (DerefOf (Index (Arg3, One)), PGCD)
Store (\_SB.GGOV (0x02010016), OLDV)
Store (\_SB.SGOV (0x02010016), PGCE)
If (LGreater (PGCD, Zero))
{
Sleep (PGCD)
Store (\_SB.GGOV (0x02010016), OLDV)
}
If (LEqual (\_SB.GGOV (0x02010016), One))
{
Sleep (0x96)
If (LEqual (\_SB.GGOV (0x02010014), One)) {}
Else
{
Notify (\_SB.PCI0.I2C0.DFUD, One)
}
}
Return (Zero)
}
ElseIf (LEqual (_T_0, 0x02))
{
Store (DerefOf (Index (Arg3, Zero)), DFUE)
Store (DerefOf (Index (Arg3, One)), DFUD)
Store (\_SB.GGOV (0x02010014), OLDV)
Store (\_SB.GGOV (0x02010014), DFUE)
If (LGreater (DFUD, Zero))
{
Sleep (DFUD)
Store (\_SB.GGOV (0x02010014), OLDV)
}
Return (Zero)
}
ElseIf (LEqual (_T_0, 0x03))
{
Store (\_SB.GGOV (0x02010014), DFUV)
Store (\_SB.GGOV (0x02010016), PGCV)
Return (Package (0x02)
{
PGCV,
DFUV
})
}
Break
}
Return (Zero)
} 复制代码
现在SSDT-12.dsl这个文件的Errors都没有提示了,但是不知道我这样子修改是否正确,请大神指点。
展开阅读全文​
附件:
你需要登录 才可以下载或查看附件。没有帐号?注册