DSDT的完善
2016-04-16 11:54阅读:
前一篇文章提到了可以利用补丁来完善DSDT ,今天就来说说手动来插入相应的代码。
一、原生电源的加载
DSDT里搜索 0x001F0000 或者 Device
(LPCB)加入下列代码:
- Method (_DSM, 4, NotSerialized)
-
{
-
If (LEqual (Arg2,
Zero)) { Return (Buffer() { 0x03 } ) }
-
Return
(Package()
-
{
-
'compatible', 'pci8086,9c43',
-
})
-
}
(备注:上
述代码不调用 DTGP 函数)
或者用传统方式修改亦可:
- 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 ,然后得到
-
网卡位置
这里一有线网卡为例,可以看到位置为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中找到位置,插入如下代码:
-
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)
}
未完待续……