新浪博客

DSDT的完善

2016-04-16 11:54阅读:
前一篇文章提到了可以利用补丁来完善DSDT ,今天就来说说手动来插入相应的代码。
一、原生电源的加载
DSDT里搜索 0x001F0000 或者 Device (LPCB)加入下列代码:
  1. Method (_DSM, 4, NotSerialized)
  • {
  • If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }
  • Return (Package()
  • {
  • 'compatible', 'pci8086,9c43',
  • })
  • }
(备注:上
述代码不调用 DTGP 函数)或者用传统方式修改亦可:
  1. Method (_DSM, 4, NotSerialized)
  • {
  • Store (Package (0x02)
  • {
  • 'device-id',
  • Buffer (0x04)
  • {
  • 0x43, 0x9C, 0x00, 0x00
  • }
  • }, Local0)
  • DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
  • Return (Local0)
  • }
  • 说明:这里的ID不一定非要是这个,可以修改为苹果原生支持的即可。
  • 查看的方法: AppleLpc.kext 查看包内容里的info.plist
  • 二、内建网卡
  • 在这里推荐用IORegistryExplorer这个软件来查看具体网卡的位置,可以输入eth ,然后得到
DSDT的完善网卡位置
这里一有线网卡为例,可以看到位置为PCI0---RP01---IOPP---PXSX
打开DSDT软件,搜索PXSX找到对应的位置,添加如下代码:
  • Method (_DSM, 4, NotSerialized)
  • {
  • Store (Package (0x06)
  • {
  • 'built-in',
  • Buffer (One)
  • {
  • 0x01
  • },
  • 'device_type',
  • Buffer (0x09)
  • {
  • 'ethernet'
  • },
  • 'name',
  • Buffer ()
  • {
  • 'Broadcom Netlink BCM57790' //自己显卡的名字
  • }
  • }, Local0)
  • DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
  • Return (Local0)
  • }
或者简化为:
  • Method (_DSM, 4, NotSerialized)
  • {
  • Return (Package (0x04) {
  • 'built-in', Buffer (One) { 0x01 },
  • 'location', Buffer (0x02) { '1' }
  • })
  • }
  • 无线网卡添加方法与有线网卡一样。
  • 三、USB内建
  • 在这里推荐用IORegistryExplorer这个软件来查看USB具体的位置,这里推荐搜索 EHC ,如图所示
DSDT的完善
在DSDT中找到位置,插入如下代码:
  • Method (_DSM, 4, NotSerialized)
  • {
  • Store (Package (0x0B)
  • {
  • 'device-id',
  • Buffer (0x04)
  • {
  • 0x34, 0x3A, 0x00, 0x00
  • }
  • 'AAPL,clock-id',
  • Buffer (One)
  • {
  • 0x01 // 依次递增
  • },
  • 'device_type',
  • Buffer (0x05)
  • {
  • 'EHCI'
  • },
  • 'AAPL,current-available',
  • 0x04B0,
  • 'AAPL,current-extra',
  • 0x02BC,
  • 'AAPL,current-in-sleep',
  • 0x03E8,
  • Buffer (One)
  • {
  • 0x00
  • }
  • }, Local0)
  • DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
  • Return (Local0)
  • }
  • 注意上述数值,可以利用IORegistryExplorer找到,更改为自己的数值。有的教程会提到要更改每个USB的数值,我这里只更改了这两个。

  • 四、声卡内建
  • 打开DSDT搜索HDEF插入函数
Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method
{
Store (Package (0x0A)
{
'hda-gfx',
Buffer (0x0A)
{
'onboard-1'
},
'codec-id',
Buffer (0x04)
{
0x92, 0x08, 0xEC, 0x10
},
'layout-id',
Buffer (0x04)
{
0x01, 0x00, 0x00, 0x00
},
'device-type',
Buffer (0x07)
{
'ALC892'
},
'PinConfigurations',
Buffer (Zero) {}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}


未完待续……​

我的更多文章

下载客户端阅读体验更佳

APP专享