A卡桌面版DSDT完美驱动教程~~
前言:折腾黑苹果那么久了,也掌握了一些技术,闲着无聊就发个教程,让还未成功的朋友少走一些弯路PS:移动版的我没测试过,不过有可能会有很多问题,还会涉及到改FB那些,本帖不作讨论
需要工具:
IORegistryExplorer(查看显卡位置)
DSDT Editor(编辑DSDT)
楼下发教程~~
本帖最后由 YSC3839 于 2014-2-9 20:18 编辑
首先要确定显卡在DSDT中的位置(如果你找得到就跳过)打开IORegistryExplorer,在查找那一栏输入display
仔细看左边的列表,红框的地方就是具体位置,PCI0 PEG0 PEGP,这就是显卡在DSDT里的位置了
然后我们要用到DSDT Editor(当然其他工具也可以)
打开DSDT Editor,点击菜单 File > Extract DSDT,就会提取本机的DSDT了
然后在左边列表找到刚才记下的位置
在这里,可以看到代码是这样的
我们在Name (_ADR, 0xFFFF)的下一行粘贴这段代码,这里发最精简代码,一些额外的将在下面介绍Method (_DSM, 4, NotSerialized)
{
Store (Package ()
{
"@0,name",
Buffer ()
{
"ATY,Vervet" //这里改成你自己的FB
},
"@1,name",
Buffer ()
{
"ATY,Vervet" //这里改成你自己的FB
},
"@2,name",
Buffer ()
{
"ATY,Vervet" //这里改成你自己的FB
},
"VRAM,totalsize",
Buffer (0x04)
{
0x00, 0x00, 0x00, 0x40 //改成自己的显存
},
"model",
Buffer ()
{
"AMD Radeon HD 6750" //这里改成你自己的显卡名称
},
"device-id",
Buffer (0x04)
{
0xb8, 0x68, 0x00, 0x00 //改成你自己的ID
},
"hda-gfx",
Buffer (0x0A)
{
"onboard-1"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}这里的FB可以去看变色龙源代码 forge.voodooprojects.org/p/chameleon/source/tree/HEAD/trunk/i386/libsaio/ati.c
打开网页后搜索你的显卡型号或者显卡ID
注意图中那些Null都是没用的,如果有多个你不确定的话,复制下FB的名称然后在最前面看看是几个接口的(去掉k)
比如Vervet是4个的,当然假如试了这个有问题的话就换其他的
然后复制到前面DSDT那里,我的显卡是3个接口,所以我DSDT里面就是@0-@2,有多的话就依此类推@3@4@5……忘记说了……那里的ID要改成驱动里面有的……
5000系列免驱ID 6898 6899 68E0 68E1 68D8 68C0 68C1 68D9 68B8 68B0 68B1 68A0 68A1
6000系列
6768 6770 6779 6760 6761 6750 6758 6759 6740 6741 6745 6738 6739 6720 6722 6718 6719 6840 6841 6704
7000系列
2600 2200 6790 6798 679A 679E 6780 6820 6821 6825 6827 682D 682F 6839 683B 683D 683F 6800 6801 6806 6808 6810 6818
找跟自己ID相似的,或者同一个核心的,比如我的6750是5750的马甲,而5750和5770是同核心的,5770也能免驱,所以写5770的ID,5770的ID是68B8,然后倒过来写在DSDT就是0xb8, 0x68, 0x00, 0x00
显存对应数值列表
<00000020>512MB
<00000028>640MB
<00000030>768MB
<00000040>1GB
<00000060>1.5GB
<00000080>2GB
<000000C0>3GB
这个似乎不能超过4GB,不知苹果怎么设计的
前面的代码是最精简的代码,起码能驱动,但是可能还会出现一些问题,所以我们可以添加一些额外代码
1、在系统报告 PCI卡里显示的"@0,compatible",
Buffer ()
{
"ATY,Vervet" //这里改成你自己的FB
},
"@0,device_type",
Buffer (0x08)
{
"display"
}, 这段代码添加上去后会显示出一个类型是“显示器控制器”的项目
2、系统报告 EFI驱动程序版本"ATY,EFIVersion",
Buffer (0x0A)
{
"01.00.456"
}, 可以随便写,长度不要超出就没问题
3、ROM 修正版"ATY,Rom#",
Buffer (0x0E)
{
"144-L0306-S65"
},
"ATY,Card#",
Buffer (0x0E)
{
"144-L0306-S65"
}, 这个也能随便写
4、PCI卡中显示显卡信息"device_type",
Buffer ()
{
"ATY,VervetParent" //这个要改成你的FB+Parent
}, 不过添加这个后PCI卡那里会显示两个(我的是这样的),所以我没添加
5、插槽名称"AAPL,slot-name",
Buffer ()
{
"PCIe"
},这个也能随便写,不过我加了没用……
6、PCI卡中显示的名称(这个我没测试过,请大家测试)"name",
Buffer ()
{
"AMD Radeon HD 6750"
},也是可以随便写
7、高分屏用的(这是@xiao201261回复给我的,我没测试)"AAPL00,DualLink",
Buffer (0x04)
{
0x01, 0x00, 0x00, 0x00
},还有很多,大家可以上网找~~
添加完这个之后看你需要添加HDMI代码Device (HDAU)
{
Name (_ADR, One)
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x02)
{
"hda-gfx",
Buffer (0x0A)
{
"onboard-1"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}注意HDAU的位置要与PEGP同级,就像这样
代码都添加好之后我们选择菜单上的Patch > Open,找到DTGP.txt(这个文件DSDT Editor自带了,在Patches文件夹里面),打开后点Apply
然后关闭Patch窗口,按F5编译试试,有Error的话要解决后才能编译成功,编译后点菜单上的IASL > Save AML,保存AML文件,然后放到引导程序的文件夹里面就大功告成了!重启查看效果吧~~
本帖最后由 YSC3839 于 2014-2-9 20:06 编辑
这一层楼我是来讲解一些DSDT的Warning和Remark的修复方法的
1、遇到RemarkUse of compiler reserved name (_T_0)按Command+F把"_T_0"替换成"T_0"(不含引号)
_T_1 _T_2等问题方法一样~~
2、遇到WarningPossible operator timeout is ignored 找到这一行,应该是Acquire (MUT0, 0x0FFF)这样的代码,把"0x0FFF"改成"0xFFFF"(不含引号)
3、遇到WarningReserved method must return a value (Integer/String/Buffer/Package/Reference required for XXX)这个问题是函数没有返回导致的,先找到那个函数,然后在最后面加入Return (Zero)即可
最后发一下需要的工具
IORegistryExplorer https://bbs.pcbeta.com/viewthread-1433743-1-6.html
DSDT编辑 https://bbs.pcbeta.com/viewthread-1460313-1-1.html(Maciasl)
DSDT Editor (需要装Java,Mac Win通用) 前排支持一下~ 期待你的教程! YSC3839 发表于 2014-2-8 22:37 static/image/common/back.gif
再占一层楼~~~
打算占多少楼才来教程{:5_597:} Macbook、 发表于 2014-2-8 22:40 static/image/common/back.gif
打算占多少楼才来教程
{:9_608:}一眼看过去,两楼! A卡前排强力支持。 YSC3839 发表于 2014-2-8 22:37 static/image/common/back.gif
占楼,发教程~~
期待中的楼层,,楼主快啊{:5_597:} 那我就前排挤一挤吧 自己顶一下吧 {:9_413:}ge=yes完美驱动 推荐下: "AAPL00,DualLink",
Buffer (0x04)
{
0x00, 0x00, 0x00, 0x00 //是高分屏改0x01, 0x00, 0x00, 0x00
xiao201261 发表于 2014-2-9 12:11 static/image/common/back.gif
推荐下:
这个可以,找时间加一点额外的DSDT代码上去,话说我1600x900这个代码有什么用嘛? YSC3839 发表于 2014-2-9 18:56 static/image/common/back.gif
这个可以,找时间加一点额外的DSDT代码上去,话说我1600x900这个代码有什么用嘛?
分辨率1600x900? xiao201261 发表于 2014-2-9 18:59 static/image/common/back.gif
分辨率1600x900?
是的,接口HDMI,有什么用? YSC3839 发表于 2014-2-9 19:53 static/image/common/back.gif
是的,接口HDMI,有什么用?
{:9_417:}没用对于我这桌面显卡有内屏的必须用{:9_409:} xiao201261 发表于 2014-2-9 20:02 static/image/common/back.gif
没用对于我这桌面显卡有内屏的必须用
内屏?桌面显卡也有内屏? 教程已更新~~顶起! YSC3839 发表于 2014-2-9 20:04 static/image/common/back.gif
内屏?桌面显卡也有内屏?
一体机蛋疼 xiao201261 发表于 2014-2-9 20:05 static/image/common/back.gif
一体机蛋疼
额,原来如此……