- 积分
- 1721
- 最后登录
- 2024-3-9
- 精华
- 0
- 阅读权限
- 50
- 主题
- 40
- UID
- 262174
- 帖子
- 3147
- PB币
- 260
- 威望
- 77
- 贡献
- 0
- 技术
- 197
- 活跃
- 1896
- UID
- 262174
- 帖子
- 3147
- PB币
- 260
- 贡献
- 0
- 技术
- 197
- 活跃
- 1896
|
板凳
发表于 2017-10-24 00:00:59
IP属地重庆
|只看该作者
有新方法,通过dsdt修改寄存器方法彻底解决HD6000、HD7000唤醒问题,以及GCN1.1以上显卡(R9 370、Rx480/580等)开机卡紫条问题。无需Whatevergreen。
这两个问题,其实都是由于PCI Base Address Register(BAR)错误造成的。Mac系统用的是BAR5(32位),PC主板是BAR2(64位),BAR是寄存器控制空间的入口,一旦错误就造成了一系列问题。
对于这两个问题,dsdt修复比whatevergreen更好。dsdt才是彻底解决问题,让显卡自己正确初始化。whatevergreen是把初始化错误的参数改正确,这就要求该kext已经适配了你的显卡。但whatevergreen的作者,不可能每块显卡都有,也靠各个网友反馈,难免对部分显卡照顾不周。
将下面一段代码插入你的dsdt里的显卡函数中就行了,做成hotpatch也行。已经有很多人实验成功了,祝你好运。
注意:显卡函数名不一定是PEGP。根据你自己的情况插。- Device (PEGP)
- {
- Name (_ADR, Zero) // _ADR: Address
- OperationRegion (PCIB, PCI_Config, Zero, 0x0100)
- Field (PCIB, AnyAcc, NoLock, Preserve)
- {
- Offset (0x10),
- BAR0, 32,
- BAR1, 32,
- BAR2, 64,
- BAR4, 32,
- BAR5, 32
- }
-
- Method (_INI, 0, NotSerialized) // _INI: Initialize
- {
- If (LEqual (BAR5, Zero))
- {
- Store (BAR2, Local0)
- }
- Else
- {
- Store (BAR5, Local0)
- }
-
- OperationRegion (GREG, SystemMemory, And (Local0, 0xFFFFFFFFFFFFFFF0), 0x8000)
- Field (GREG, AnyAcc, NoLock, Preserve)
- {
- Offset (0x6800),
- GENA, 32,
- GCTL, 32,
- LTBC, 32,
- Offset (0x6810),
- PSBL, 32,
- SSBL, 32,
- PTCH, 32,
- PSBH, 32,
- SSBH, 32,
- Offset (0x6848),
- FCTL, 32,
- Offset (0x6EF8),
- MUMD, 32
- }
-
- Store (Zero, FCTL)
- Store (Zero, PSBH)
- Store (Zero, SSBH)
- Store (Zero, LTBC)
- Store (One, GENA)
- Store (Zero, MUMD)
- }
- }
复制代码 |
|