可能说得过于简单了。抱歉。 以889为例,以前一般是修改AppleHDA里面Resources里的Platforms.xml,并且添加一个原生AppleHDA里所没有的Layout889.xml。 Layout889.xml里面有这么一段键值: - <key>LayoutID</key>
- <integer>889</integer>
复制代码 现在,由于DP3的AppleHDA不认非苹果的LayoutID,所以声卡驱动不起来。把889改成AppleHDA原有的LayoutID,比如88, 这样就可以骗过AppleHDA,把声卡驱动起来。具体作法:把原生Layout88.xml.zlib删掉,把Layout889.xml改名为Layout88.xml,再把改名后的Layout88.xml里面的LayoutID的键值改为88,然后把layout88.xml压缩成layout88.xml.zlib。在dsdt里面,有一段layout-id的代码,也要作相应的修改。- Device (HDEF)
- {
- Name (_ADR, 0x001B0000)
- Method (_PRW, 0, NotSerialized)
- {
- Return (Package (0x02)
- {
- 0x0D,
- 0x05
- })
- }
- Method (_DSM, 4, NotSerialized)
- {
- Store (Package (0x04)
- {
- "layout-id",
- /**** Is ResourceTemplate, but EndTag not at buffer end ****/ Buffer (0x04)
- {
- 0x58, 0x00, 0x00, 0x00
- },
- "PinConfigurations",
- Buffer (Zero) {}
- }, Local0)
- DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
- Return (Local0)
- }
- }
复制代码 再就是仿冒驱动里也有一段layoutID的代码,也改成88- <key>HDA Hardware Config Resource</key>
- <dict>
- <key>CFBundleIdentifier</key>
- <string>com.apple.driver.AppleHDAHardwareConfigDriver</string>
- <key>HDAConfigDefault</key>
- <array>
- <dict>
- <key>CodecID</key>
- <integer>283904137</integer>
- <key>ConfigData</key>
- <data>
- AYccQAGHHZABhx6hAYcfkAGXHFABlx2QAZce
- oQGXHwIBpxxgAacdMAGnHoEBpx8BAbcccAG3
- HUABtx4hAbcfAgFHHBABRx1AAUceEQFHHwEB
- VxwgAVcdEAFXHgEBVx8BAWccMAFnHWABZx4B
- AWcfAQF3HIABdx0gAXceAQF3HwEBFxyQARcd
- YQEXHksBFx8BAeccoAHnHQEB5x5WAecfGA==
- </data>
- <key>FuncGroup</key>
- <integer>1</integer>
- <key>LayoutID</key>
- <integer>88</integer>
- </dict>
- </array>
- <key>IOClass</key>
- <string>AppleHDAHardwareConfigDriver</string>
- <key>IOMatchCategory</key>
- <string>AppleHDAHardwareConfigDriver</string>
- <key>IOProviderClass</key>
- <string>AppleHDAHardwareConfigDriverLoader</string>
- <key>PostConstructionInitialization</key>
- <array>
- <dict>
- <key>CodecID</key>
- <integer>283904137</integer>
- <key>Layouts</key>
- <array>
- <integer>36</integer>
- <integer>38</integer>
- <integer>52</integer>
- <integer>53</integer>
- </array>
- <key>widgets</key>
- <array>
- <dict>
- <key>MicAttributes</key>
- <integer>28</integer>
- <key>MicInfo</key>
- <string>Sampled on rising edge</string>
- <key>NodeID</key>
- <integer>39</integer>
- <key>PinConfigDefault</key>
- <integer>2426405136</integer>
- </dict>
- </array>
- </dict>
- <dict>
- <key>Codec</key>
- <string>Cirrus Logic CS4206</string>
- <key>CodecID</key>
- <integer>269697542</integer>
- <key>Layouts</key>
- <array>
- <integer>0</integer>
- </array>
- <key>widgets</key>
- <array>
- <dict>
- <key>NodeID</key>
- <integer>22</integer>
- <key>PinConfigDefault</key>
- <integer>1073742064</integer>
- </dict>
- </array>
- </dict>
- <dict>
- <key>Codec</key>
- <string>Wolfson WM8800</string>
- <key>CodecID</key>
- <integer>451708928</integer>
- <key>Layouts</key>
- <array>
- <integer>67</integer>
- <integer>73</integer>
- </array>
- <key>widgets</key>
- <array>
- <dict>
- <key>MicInfo</key>
- <string>WM8800 External Microphone Virtual Pin Complex</string>
- <key>NodeID</key>
- <integer>24</integer>
- <key>PinConfigDefault</key>
- <integer>28020848</integer>
- </dict>
- </array>
- </dict>
- </array>
- </dict>
复制代码 Platforms.xml里面没有LayoutID的代码,所以直接用以前修改好的压缩替换就行了。最后,就是按原来的方法,patch在AppleHDA.kext/contents/macos/里面的AppleHDA
|