找回密码
 注册账号
搜索
查看: 1785|回复: 0

[文档] 从 Clover 到 OpenCore (3) —— 摆脱对 Clover ACPI Quirks 的依赖

[复制链接]

755

主题

158

回帖

5568

积分

超级版主

积分
5568

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

发表于 2020.4.23 20:53 | 显示全部楼层 |阅读模式
摆脱对 Clover ACPI Quirks 的依赖

Clover 的 ACPI Quirks 的确是非常方便。一个开关,关机变重启就修复了;三个开关,声卡 HPET、IRQ、TIMR 就修复了;等等等等。但是在 OpenCore 是没有内置这些 ACPI 修复的,所以在 Clover 下的 ACPI Quirk 现在都必须用 SSDT 实现。所幸的是,我们依然可以从 OC-little ( https://github.com/daliansky/OC-little )  里找到绝大部分我们需要的补丁。

FixIPIC:使用 OC-little 的「声卡 IRQ 补丁」章节中的 SSDT-IPIC
FixSBUS:参考 OC-little 的「注入设备」章节中的「SBUS_SMBU 补丁」
FixShutdown:参考 OC-little 的「PTSWAK 综合补丁章节」,需要添加其中的 EXT1 插件补丁(该补丁由我贡献)
FixDisplay:使用 WhateverGreen ( https://github.com/acidanthera/WhateverGreen )  和在缓冲帧补丁中定制显示接口解决
AddMCHC:使用 OC-little 的「添加缺失的设备」章节中的 SSDT-MCHC
FixHDA:该修复已包含在 AppleALC ( https://github.com/acidanthera/AppleALC )  中,使用 AppleALC 即可。
FixHPET、FixRTC 和 FixTIMR:使用 OC-little 的「声卡 IRQ 补丁」章节中的 SSDT-HPET_RTC_TIMR-fix

注意根据原始 DSDT 查看 _STA 内变量是 HPAE 还是 HPTE,并自行修改 SSDT。


FixSATA:这个先不管它,OpenCore 中有对应的 ExternalDiskIcons 的 Quirk,也可以使用 innie.kext 解决
AddPNLF:参考 OC-little 的「注入设备」章节中的「PNLF 注入方法」
AddIMEI:使用 WhateverGreen 即可
FixIntelGfx:使用 WhateverGreen 即可
AddHDMI:使用 WhateverGreen 即可

FixADP1:有两种修复方法
直接 DSDT 重命名 AC0_ to ADP1,根据原始 DSDT 中对 AC0_ 设备的定义,可能还需要用 SSDT 为 ADP1 设备注入 Name (_PRW, Package (0x02) {0x1C,0x03})。
使用 SSDT 的方法,禁用原始 AC0_ 设备,并新增 ADP1 设备。根据原始 DSDT,可能还要为新增的 ADP1 设备添加 Name (_PRW, Package (0x02) {0x1C,0x03})


  1. DefinitionBlock ("", "SSDT", 2, "SUKA", "FixADP1", 0x00001000)
  2. {
  3.     External (_SB_.ADP1, DeviceObj)
  4.     External (_SB_.AC0_, DeviceObj)

  5.     If (_OSI ("Darwin"))
  6.     {
  7.         Scope (\_SB)
  8.         {
  9.             Scope (AC0_)
  10.             {
  11.                 Method (_STA, 0, NotSerialized)
  12.                 {
  13.                     Return (Zero)
  14.                 }
  15.             }

  16.             Device (ADP1)
  17.             {
  18.                 Name (_ADR, Zero)
  19.                 Name (_PRW, Package (0x02) {
  20.                     0x1C,
  21.                     0x03
  22.                 })
  23.                 Method (_STA, 0, NotSerialized)
  24.                 {
  25.                     Return (0x0F)
  26.                 }
  27.             }
  28.         }
  29.     }
  30. }
复制代码

除了这些开关以外,Clover 还有一些其它的 ACPI 设定,也有与之对应的替代。

DisableASPM:没有很好的代替方法,可以在设备属性(Device Properties)中分别添加相关设备的 PCI 总线位置、并注入属性 pci-aspm-default | DATA | <00>。
PluginType:参考 OC-little 的「注入 X86」章节添加 SSDT-PLUG 补丁。
Generate P States 和 Generate C States:这些是六代以前 CPU 才需要的设置,可以用 ssdtPRGen.sh ( https://github.com/Piker-Alpha/ssdtPRGen.sh )  生成对应的 SSDT。
降压和超频功能:Clover 的实现相当简陋,即使 Clover 官方也不建议使用;降压推荐使用 VoltageShift ( https://github.com/sicreative/VoltageShift ) 。

完成上述配置项的精简后,还是以 -v 重启,正常开机后在终端查看日志中是否包括 ACPI Error:

  1. $ log show --last boot | grep -Ei "ACPI"
复制代码




转载自:https://blog.skk.moe/post/from-clover-to-opencore/
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

手机版|站点地图|童话镇

GMT+8, 2024.3.29 18:22 , Processed in 0.044782 second(s), 7 queries , Gzip On, MemCached On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表