积分 84 最后登录 2024-3-27 精华 0 阅读权限 20 主题 5 UID 803387 帖子 209 PB币 288 威望 0 贡献 0 技术 1 活跃 821
UID 803387 帖子 209 PB币 288 贡献 0 技术 1 活跃 821
发表于 2018-8-26 21:04:10
IP属地海南
| 显示全部楼层
本帖最后由 yrwy1982 于 2018-8-26 23:32 编辑
本来以为是无解之谜了 没想到周末的时候研究whatevergreen的源代码的时候发现居然有解决方案。通过独立显卡10系在linux下也存在问题,需要在启动的时候写在nvidia的驱动再重新modprobe。HDMI audio device only visible after rescan Jamie found out through linux that nvidia graphics on laptops gtx 1060/1070 specifically, that the audio device is disabled by default. Bug description. He discovered that when the 0x488 magic bit is not set, the gfx device advertises as non-multifunction. After the bit is set, the device advertises as multi-function. So, after setting the magic bit, removing the device will cause Linux to re-probe it during the next rescan taking note at that point that it is a multi-function device on linux theres a fix use: setpci -s 01:00.0 0x488.l=0x2000000:0x2000000" on mac os he added: Device (PEG0)
{
Name (_ADR, 0x00010000) // _ADR: Address
Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table
{
** Store (One, ^GFX0.NHDA)**
If (PICM)
{
Return (AR01)
}
Return (PR01)
}
} 复制代码 Scope (_SB.PCI0.PEG0)
{
Device (GFX0)
{
Name (HDAU, Zero)
OperationRegion (PCI2, SystemMemory, 0xE0100000, 0x0500)
Field (PCI2, DWordAcc, Lock, Preserve)
{
Offset (0x48B),
, 1,
NHDA, 1
} 复制代码
本方法需要保存原始的dsdt.aml ,hotpatch方法用了不起作用 可能我对他的了解还不到位。原始dsdt可以载clover启动时按F4进行保存。文件位于EFI->CLOVER->ACPI->origin里面
打开MaciASL 编辑DSDT.aml 搜索PEG0
定位到 Device (PEG0)
Device (PEG0)
{
Name (_ADR, 0x00010000) // _ADR: Address
Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table
{
Store (One, ^PEGP.NHDA)
If (PICM)
{
Return (AR01)
}
Return (PR01)
}
Device (PEGP)
{
Name (HDAU, Zero)
OperationRegion (PCI2, SystemMemory, 0xE0100000, 0x0500)
Field (PCI2, DWordAcc, Lock, Preserve)
{
Offset (0x48B),
, 1,
NHDA, 1
}
Name (_ADR, Zero) // _ADR: Address
}
} 复制代码 用这个替换
搜索 Method (RWAK, 1, Serialized) 并定位
If (LOr (LEqual (Arg0, 0x03), LEqual (Arg0, 0x04)))
{ 复制代码
再此句下面添加
Store (One, \_SB.PCI0.PEG0.PEGP.NHDA)
添加后应为这样
If (LOr (LEqual (Arg0, 0x03), LEqual (Arg0, 0x04)))
{
Store (One, \_SB.PCI0.PEG0.PEGP.NHDA)
If (LEqual (TBTS, One)) 复制代码 到此 DSDT.aml 编辑完毕 COMMAND+S保存即可 并挪到patched文件夹 并在clover configurator ACPI里面 DSDT name那里填上DSDT.aml
把本文附带的SSDT-HDAU.aml放入ACPI->patched目录 重启打开IORegistryExplorer定位到IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/PEG0@1 就可以看到久违的HDAU设备了
记下HDAU设备ID device-id gtx1070m 的设备id是{f0 10 00 00}
众所周知10.13.4之后苹果对nvidia hdmi设备进行了限制 所以我们需要clover configurator进行Kextstopatch
com.apple.driver.AppleHDAController FIND DE100B0E replace DE10F010(这个是我的hdau id) 我记得gtx1060m 是 DE10F110
替换完毕 保存重启
如果还没办法找到设备 放入一个驱动HDMIAudio.kext 好了 下面是相关截图
所需工具驱动
展开阅读全文​
附件:
你需要登录 才可以下载或查看附件。没有帐号?注册
1
查看全部评分