- 积分
- 573
- 最后登录
- 2024-4-23
- 精华
- 2
- 阅读权限
- 205
- 主题
- 35
- UID
- 38564
- 帖子
- 1153
- PB币
- 5526
- 威望
- 17
- 贡献
- 1
- 技术
- 172
- 活跃
- 558
- UID
- 38564
- 帖子
- 1153
- PB币
- 5526
- 贡献
- 1
- 技术
- 172
- 活跃
- 558
|
楼主
发表于 2009-8-7 11:56:25
IP属地上海
节省论坛资源,先发个Leopard区的链接,下载可以去那边
https://bbs.pcbeta.com/thread-494894-1-1.html
这里会多加点料,跟大家聊聊DSDT里HDEF的一些技巧
背景知识可以看下杨子龙的这篇教程,https://bbs.pcbeta.com/thread-531144-1-1.html
大家知道,Apple的HDAudio设备是HDEF,如果你的DSDT里没有HDEF设备,那么你需要HDAEnabler把类似于AZAL的HDAudio设备强制成HDEF,因此正常情况下声卡不像显卡那样能够使用EFI-String来驱动,
但是如果把DSDT里所有的AZAL替换成HDEF,即便你没有添加其他的信息,像下面这样- Device (HDEF)
- {
- Name (_ADR, 0x001B0000)
- Method (_PRW, 0, NotSerialized)
- {
- Return (Package (0x02)
- {
- 0x0D,
- 0x05
- })
- }
- }
复制代码 那么你也就不再需要HDAEnabler了,而LayoutID之类的信息就可以用EFI-String来注入了,再配合LegacyHDA就可以驱动声卡了
你也可以完全依靠DSDT来注入必要的信息,之前dsdt代码有很多是没有用的,例如下面这段- Device (HDEF)
- {
- Name (_ADR, 0x001B0000)
- Method (_PRW, 0, NotSerialized)
- {
- Return (Package (0x02)
- {
- 0x0D,
- 0x05
- })
- }
- Method (_DSM, 4, NotSerialized)
- {
- Store (Package (0x08)
- {
- "codec-id",
- Buffer (0x04)
- {
- 0x88, 0x08, 0xEC, 0x10
- },
- "layout-id",
- Buffer (0x04)
- {
- 0x78, 0x03, 0x00, 0x00
- },
- "device-type",
- Buffer (0x11)
- {
- "Realtek ALC888-0"
- },
- "PinConfigurations",
- Buffer (0x28)
- {
- /* 0000 */ 0x50, 0x70, 0x21, 0x01, 0x40, 0x01, 0x13, 0x90,
- /* 0008 */ 0x20, 0x30, 0x81, 0x01, 0x41, 0x40, 0x01, 0x01,
- /* 0010 */ 0x30, 0xE0, 0xC5, 0x01, 0x60, 0xE0, 0x45, 0x01,
- /* 0018 */ 0x0F, 0x00, 0x00, 0x40, 0x0F, 0x00, 0x00, 0x40,
- /* 0020 */ 0x10, 0x01, 0xA0, 0x90, 0x11, 0x01, 0xA0, 0x90
- }
- }, Local0)
- DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
- Return (Local0)
- }
- }
复制代码 这段HDEF代码里面,codec-id,device-type事实上是没有用的,在另外的一些HDEF代码里,还可以看到built-in,这个其实也是没有用的,真正有用的是layout-id和PinConfigurations,layout-id要和你驱动里对应的layout-id一致,而PinConfigurations,其实我们不需要详细的把里面的内容写出来,我们只是需要有PinConfigurations在而已,AppleHDA的机制其实是如果存在PinConfigurations,那么就会去找ConfigData,然后根据ConfigData来设置PinConfigurations,因此无论你把PinConfigurations设置成什么都会被覆盖掉,但是如果没有PinConfigurations,AppleHDA不会自动生成PinConfigurations,因此我们只需要一个空的PinConfigurations即可,范例如下- Device (HDEF)
- {
- Name (_ADR, 0x001B0000)
- Method (_PRW, 0, NotSerialized)
- {
- Return (Package (0x02)
- {
- 0x0D,
- 0x05
- })
- }
- Method (_DSM, 4, NotSerialized)
- {
- Store (Package (0x04)
- {
- "layout-id",
- Buffer (0x04)
- {
- 0x78, 0x03, 0x00, 0x00
- },
- "PinConfigurations",
- Buffer (0x00)
- {}
- }, Local0)
- DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
- Return (Local0)
- }
- }
复制代码 最后一个Tip,如果你碰到一段时间不用声音,再发声的时候有Pop声,请将机器类型设置为MacPro,其他机型的电源管理会关掉暂时不用的声音模块,再次开启就会有电流声 |
-
3
查看全部评分
-
|