Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

搜索
查看: 2963|回复: 23

[求助] 我的黑果是clover+原版10.13.3 配置config+DSDT/SSDT 的一点疑问 [复制链接]

Rank: 1

UID
1179079
帖子
59
PB币
107
贡献
0
技术
3
活跃
83
发表于 2018-3-4 16:44:05 |显示全部楼层
版主好,各位大老好。
接触黑果的时间不长,自己的一台老本子G450 前几天装的变色龙 MBR 10.11.1(后来升到.6),有了点经验,扒了半个月的贴子,默默的国内外网站找零零碎碎的资料,想把自己的台式机(4590+MSI B85M-E45,HD4600核显)搞得完善一点,下载了R4411最新的CLOVER 与原版10.13.3做成了一个启动U盘(kexts 文件夹空的,加了AppleALC,FAKESMC,INTELGRAPHICSFIXUP,LILU等4个必须的KEXT),里面机型调成了IMac 14,2(I5-4570),看论坛大咖们都是通过config.plist配合DDST/SSDT 来尽量达到完美黑果的。我也照着论坛里大神的方法做了个UBUTUN 提取了DDST与8个SSDT(其中有3个在提取后生成的dynamic文件夹里),拉到Mac环境里iasl软件反编译,排错(我是直接删除出错的语句或是段落)到0错误后把所有的DDST与SSDT放到了CLOVER的ACPI相关文件夹里了,然后配置CONFIG.PLIST 开机。。
到这里其实我的问题与疑问挺多的,明白贪多嚼不烂,不敢当个彻底的伸手党,现有几个疑问,请大老们帮帮我,也帮帮有和我一样疑问的小白:
1,如果提取了原生的主板DSDT与SSDT ,理论上应该是零错误或是几乎没有错误的(生成的dsl我们发现的错误,大神们说了,是反编译过程造成的),直接放到CLOVER里不是最佳选择么? 为何还要反编译后再给它还原成AML文件?
2,用上了自己主板的DSDT ,clover /driver64.efi 文件夹里必须的.efi 文件要哪几个? kexts文件夹必须的kext要哪几个?(既然想完美就不加载多余的,虽然不影响正常使用)。
3,我谈下自己对clover的理解,大老们见笑,当然目的是让您指正。 clover这个东西的目的我理解为:①做一个媒介,引导MacOS的boot    ,将你的主板进行伪装,让MacOS系统里自识别kexts进行原生驱动。 ,加载DSDT(或是生成)让MacOS 认可,从而达到内建硬件的目的。 所以,问题来了
4,想用DSDT ,config.plist里的acpi选项下的fix还用不用勾上呢?
相信一定也有和我一样困惑的小白,还请大咖们不吝赐教,谢谢你们抽空把帖子看完,谢谢!!

Rank: 1

UID
1179079
帖子
59
PB币
107
贡献
0
技术
3
活跃
83
发表于 2018-3-13 18:43:22 |显示全部楼层
做一个补充:
连续熬了几天的夜,都快被家人骂死了,目前进展是 MSI  B85M-E45  I5 4590   成功安装上了原装10.13.3, clover 机型 i MAC 15,1 .   显卡正常 有水波纹,1536M显存,网卡内建正常,可以上iTunes听歌,可以进APP下载QQ.
声卡8111成功驱动后置面板,音箱与麦克风完美(成功驱动appleHDA).
目前问题: 1,  前置音频没有驱动(没有内建耳机选项),尝试过adummyHDA 与补丁修复,更改ID5,7,9 ,没有效果。2,休眠或是睡眠唤醒后卡顿,或是死机。 尝试过DARKWAKE=0,不行,尝试过删除usbinjectall 也没有解决,有大佬指点一下么?

Rank: 1

UID
1179079
帖子
59
PB币
107
贡献
0
技术
3
活跃
83
发表于 2018-3-15 15:16:47 |显示全部楼层
自己来帖子里补充,所有知道的东西都是自己一点一滴了解的,学的,如有不正确的地方请大牛们指出,更正。
解答我帖子里的第一个疑问,1,原厂主板自带的BIOS分配给引导系统时的DSDT与SSDT文件主要是针对WINDOWS的,里面一些语法,命名方式都是以适配windows来的,比如集成显卡,windows里描述为GFX0可以正常识别。而MacOS只识别IGPU的描述,USB 2.0与3.0接口的描述 WIN与Mac也同,等等等等。 所以我们来提取DSDT与SSDT并进行修改的目的不是单纯为了改正反编译与编译中产生的错误(其实也没有意义,我帖子开头说了,正常出厂的主板DSDT/SSDT不会那么糟糕,其实错误是反编译过程带来的),而是为了在我们提取出来的DSDT与SSDT文件基础上把为了适配windows的设备名称改成Mac识别的(win与Mac 支持共同的语法,我们大多只是来修改名称),打个比方,windows要加载I5 4590的核显,就在主板加电引导前去寻找DSDT和SSDT里面有关GFXO的东西,而要Mac会去寻找有关IGPU的东西,我们就把DSDT/SSDT里面有关GFXO的全给换成IGPU的!!懂了吧?以此类推,但这还不够。win与Mac为加载相同功能有时不单纯只是改个名称就行了,有时你还要屏蔽原始DSDT/SSDT里面的一些方法而自己重新写一套Mac识别的方法取而代之才能正常工作(请原谅我的用词不准确,一切为了表达粗略的意思),比如屏蔽显卡,比如让你的笔记本电脑电池电量反应正常,比如让你的休眠唤醒正常,让你的屏幕可以调节亮度。这些东西windows与Mac的路子是不一样的,我们折腾DSDT/SSDT目的核心就在此!!
2. DriverUEFI-64文件夹里必备的(可以多,但不能少),HFSPlus-64.efi(比VBoxHfs.efi好用),FSInject-64.efi,PartitionDxe-64.efi,DataHubDxe-64.efi,OsxFatBinaryDrv-64.efi,NTFS.efi,apfs.efi(这个是从MacOS里提取的,主要针对10.13,没这个见不到apfs分区),Aptiofix文件(OsxAptioFix2Drv-64,OsxAptioFix3Drv-64,OsxAptioFixDrv-64,OsxLowMemFixDrv-64,AptioMemoryFix,用于Aptio BIOS主板内存修正,,基本是必须的,5选1,推荐新出的aptioMemoryFix,选这个东西与你机子休眠关系比较大!)。如果你的机子精简到这程序不能进行安装界面看情况去加,加什么自己去扒帖子,运气好有人指点你。 这个文件夹在引导时起作用,进了系统就没它事了。  kexts文件夹里的kext(驱动)必备的就是FakeSMC.kext(从字面意思可以看出伪装作用)。运气好你的板子不需要多折腾先上这一个(某些技嘉。。),不行的话针对不同情况一个一个往上加(用不用自己修改的DSDT/SSDT文件也决定你加什么功能的kext)。
3. 如果你的DSDT/SSDT文件改的彻底,clover 的config.plist文件 fix的勾子都不需要(勾子的内容其实就是给DSDT打补丁)。
和我一样的新手们,对这些有不明白的地方可以交流一下,不至于好几天摸不着头脑!欢迎大神来指点迷津,指出错误的地方,不要让我了解的皮毛误了别人!!!谢谢!!!

Rank: 2Rank: 2

UID
1815721
帖子
237
PB币
0
贡献
0
技术
0
活跃
198
发表于 2018-3-25 08:38:50 |显示全部楼层
谢谢分享,小白看完了

Rank: 1

UID
4567177
帖子
119
PB币
1
贡献
0
技术
0
活跃
147
发表于 2018-3-26 18:45:40 |显示全部楼层
哇,好烦啊

Rank: 1

UID
4839538
帖子
6
PB币
0
贡献
0
技术
0
活跃
6
发表于 2018-3-26 23:38:01 |显示全部楼层
加油,我也想知道,也可以多看看

Rank: 1

UID
1179079
帖子
59
PB币
107
贡献
0
技术
3
活跃
83
发表于 2018-3-27 14:20:23 |显示全部楼层
2018.3.27 补充:   相信第一次成功进入MAC界面后,很少人的机器能完美运行,都要经过一段漫长的折腾,来完善。这里做为初阶小白,一直在摸索,把我折腾HP-1233TX的一些毛燥经验分享给更白的朋友。 进系统第一步,首先肯定确定三卡是否正常(显,声,网),显卡排第一位去驱动,HD3000+ATI 6470M(6750M),我的笔记本关掉集成显卡是不能工作的(意思就是独立显卡的运行依赖HD3000),而MAC不存在双显卡切换这一说,所以只能乖乖的用集显。机型设置MAC BOOK PRO 8,1,可以直接驱动;第二位就是网卡,有线或是无线一定先搞定一个凑合用(我都驱动了),加入RTL 8100.kext  可以用它直接上网做事情;声卡先不去搞(前期宝贵时间去搞更重要的东西!)。我的目的是能上网,不因为显卡问题死机,影响在MAC平台上操作。 准备好了折腾平台,第二步:  电源管理是整个电脑的核心,我要打响优化黑果第一枪! 去系统扩展里查看 appLPC.kext, AppleIntelCPUPowerManagement.kext,AppleIntelCPUPowerManagementClient.kext有没有加载,NO!! 翻看各种帖子,要驱动它们,感觉一劳永逸的方法就是改DSDT!(一些奇葩机型,打动态补丁不能解决的,改dsdt有可能解决),提取了DSDT 与7个SSDT,终端用 iasl -da -dl *.aml 反编译相对应的dsl文件,对它们用MacIASL 软件排错(只是排错,现在还没修改,教程论坛有)保存备用。  目标: 我要加载苹果自带的appleLPC.kext 电源管理。 win下用AIDA64 查看我电脑本身LPC ID 是8086,1c49,  mac系统里打开S\L\E 找到appleLPC.kext显示包内容发现info.plst里没有我的ID,我不想改系统原装的东西,我要仿冒!! 仿冒里面支持的8086,1e44(里面只要支持的都可以),打开DSDT 用WIN键+F键查找LPCB或0x001F0000 ,改成这样
  1. Device (LPCB)
  2. {
  3.     Name (_ADR,0x001F0000)
  4.     Method (_DSM, 4, NotSerialized)
  5.                 {
  6.                     Store (Package (0x06)
  7.                         {
  8.                             "device-id",
  9.                             Buffer (0x04)
  10.                             {
  11.                                  0x44, 0x1E, 0x00, 0x00
  12.                             },
  13.                             "name",
  14.                             Buffer (0x0D)
  15.                             {
  16.                                 "pci8086,1e44"
  17.                             },
  18.                             "IOName",
  19.                             Buffer (0x0D)
  20.                             {
  21.                                 "pci8086,1e44"
  22.                             }
  23.                         }, Local0)
  24.                     DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
  25.                     Return (Local0)
  26.                 }
  27. ..........
  28. }
复制代码
点排错会提示少DTGP这个函数,在DSDT表开头最后一个External (...............)下面加上DTGP的定义
  1.     Method (DTGP, 5, NotSerialized)
  2.     {
  3.         If (LEqual (Arg0, Buffer (0x10)
  4.                 {
  5.                     /* 0000 */    0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44,
  6.                     /* 0008 */    0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B
  7.                 }))
  8.         {
  9.             If (LEqual (Arg1, One))
  10.             {
  11.                 If (LEqual (Arg2, Zero))
  12.                 {
  13.                     Store (Buffer (One)
  14.                         {
  15.                             0x03
  16.                         }, Arg4)
  17.                     Return (One)
  18.                 }
  19.                  If (LEqual (Arg2, One))
  20.                 {
  21.                     Return (One)
  22.                 }
  23.             }
  24.         }
  25.          Store (Buffer (One)
  26.             {
  27.                 0x00
  28.             }, Arg4)
  29.         Return (Zero)
  30.     }
复制代码
看了有的帖子提供的仿冒代码不全,会导致LPC还是无法正常加载,后来又看了一篇帖子多加了四行代码(name 与IOname 那里)。改完保存一下,iasl DSDT.dsl 得到DSDT.aml 放到变色龙根目录,设置plist,加载DSDT.aml,其它选项不变,进kexts文件夹下把NullCPUPowerManagement.kext   与 各种Powermanagement 之类的kext全删除,开机测试,看到管理员登陆界面我心里踏实多了,继续查看系统扩展,WOW! appLPC.kext, AppleIntelCPUPowerManagement.kext,AppleIntelCPUPowerManagementClient.kext 全部原生加载。 至次,电源管理告一段落。(用变色龙引导的话,路子一样,试过效果刚刚的)
     心脏供电问题解决了,接下我就来搞显卡这一块了,显卡这块工作量很大,涉及了屏蔽独显减少功耗,涉及了休眠/睡眠这一块的功能,今天先到这吧,有时间了我再分享一下第三步折腾显卡这一块的经历!!

Rank: 1

UID
4659142
帖子
45
PB币
3
贡献
0
技术
0
活跃
112
发表于 2018-3-27 23:16:53 |显示全部楼层
写得很好,不过楼主你发错版块了啊,应该发到HighSierra版块的,这里没人看得到的。。。

Rank: 1

UID
1179079
帖子
59
PB币
107
贡献
0
技术
3
活跃
83
发表于 2018-3-28 15:13:10 来自手机 |显示全部楼层
landix 发表于 2018-3-27 23:16
写得很好,不过楼主你发错版块了啊,应该发到HighSierra版块的,这里没人看得到的。。。

谢谢。开始搞自己的台式机时莫名其妙的把帖子开这里了,后来把家里的,亲戚的,朋友的各种老爷机,从10.8一路折腾到10.11路子相通也懒得换版块了,干脆把所有东西做个大杂烩放一起分享了。

Rank: 2Rank: 2

UID
618258
帖子
149
PB币
909
贡献
0
技术
0
活跃
83
发表于 2018-4-1 15:01:59 |显示全部楼层
楼主是天才,执着的天才

Rank: 1

UID
4681434
帖子
54
PB币
0
贡献
0
技术
0
活跃
83
发表于 2018-4-4 01:10:45 |显示全部楼层
我也有此疑问

Rank: 1

UID
1765742
帖子
58
PB币
1
贡献
0
技术
3
活跃
146
发表于 2018-4-5 13:04:30 |显示全部楼层
加油,我也想知道,也可以多看看

Rank: 1

UID
1765742
帖子
58
PB币
1
贡献
0
技术
3
活跃
146
发表于 2018-4-5 13:04:46 |显示全部楼层
wode25 发表于 2018-3-25 08:38
谢谢分享,小白看完了

加油,我也想知道,也可以多看看

Rank: 2Rank: 2

UID
3032578
帖子
60
PB币
16
贡献
0
技术
2
活跃
35
发表于 2018-4-10 13:42:59 |显示全部楼层

谢谢分享,小白看完了

Rank: 1

UID
1179079
帖子
59
PB币
107
贡献
0
技术
3
活跃
83
发表于 2018-4-15 16:55:50 |显示全部楼层
2018.3.27 补充:  测试了一段时间,分享一下显卡方面的折腾过程,第三步,完善显卡:
扒了大量的帖子,国内的,国外的,按上面的方法,有关EC的,有关_REG的,都尝试过了,但是都不能成功,最后尝试了把有关PEG0的SSDT-4整合到了DSDT中才成功把该死的独显屏蔽掉。虽然目的是屏蔽独显,但是强迫症的我还是选择了保留SSDT-4,放弃屏蔽它了,因为我对比发现,电池的耗电并没那么不可接受。这里我只分享整合SSDT-4到DSDT的过程吧。屏蔽独显的原理是在开机图形初始化时调用有关独显的~~PEG0.PEGP(有的机子名称不一样)下的_OFF方法,直接将独显kill在开机阶段。 整理一下思路,开机会调用显卡,休眠或是睡眠唤醒时也会调用显卡,目标很明确,找到开机时与唤醒时的_INI,将_OFF给它怼进去.因为要合并SSDT-4与DSDT,所以搜索SSDT-4中的\_SB.PCI0.PEG0 将里面有关PEG0的代码
  1. OperationRegion (RPCI, PCI_Config, Zero, 0xF0)
  2.         Field (RPCI, DWordAcc, Lock, Preserve)
  3.         {
  4.             Offset (0xB0),
  5.             ASPM,   2,
  6.                 ,   2,
  7.             LNKD,   1
  8.         }

  9.         OperationRegion (RPCX, SystemMemory, \_SB.PCI0.PEG0.PEGP.XBAS, 0x8400)
  10.         Field (RPCX, DWordAcc, NoLock, Preserve)
  11.         {
  12.             Offset (0x8214),
  13.             Offset (0x8216),
  14.             LNKS,   4
  15.         }

  16.         OperationRegion (GPIO, SystemIO, 0x0500, 0x60)
  17.         Field (GPIO, ByteAcc, Lock, Preserve)
  18.         {
  19.             Offset (0x0C),
  20.                 ,   4,
  21.                 ,   13,
  22.             PI17,   1,
  23.             Offset (0x38),
  24.                 ,   3,
  25.             PO35,   1,
  26.             PO36,   1,
  27.             PI37,   1,
  28.                 ,   13,
  29.             PO51,   1,
  30.             PO52,   1,
  31.             PO53,   1,
  32.             PO54,   1
  33.         }
复制代码
复制到DSDT中的PEG0中变成这样
  1. Device (PEG0)
  2.         {
  3.             OperationRegion (RPCI, PCI_Config, Zero, 0xF0)
  4.             Field (RPCI, DWordAcc, Lock, Preserve)
  5.             {
  6.                 Offset (0xB0),
  7.                 ASPM,   2,
  8.                     ,   2,
  9.                 LNKD,   1
  10.             }

  11.             OperationRegion (RPCX, SystemMemory, PEGP.XBAS, 0x8400)
  12.             Field (RPCX, DWordAcc, NoLock, Preserve)
  13.             {
  14.                 Offset (0x8214),
  15.                 Offset (0x8216),
  16.                 LNKS,   4
  17.             }

  18.             OperationRegion (GPIO, SystemIO, 0x0500, 0x60)
  19.             Field (GPIO, ByteAcc, Lock, Preserve)
  20.             {
  21.                 Offset (0x0C),
  22.                     ,   4,
  23.                     ,   13,
  24.                 PI17,   1,
  25.                 Offset (0x38),
  26.                     ,   3,
  27.                 PO35,   1,
  28.                 PO36,   1,
  29.                 PI37,   1,
  30.                     ,   13,
  31.                 PO51,   1,
  32.                 PO52,   1,
  33.                 PO53,   1,
  34.                 PO54,   1
  35.             }

  36.             Name (_ADR, 0x00010000)  // _ADR: Address
  37.             Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
  38.             {
  39.                 0x09,
  40.                 0x04
  41.             })
  42.             Name (PR0A, Package (0x04)
  43.             {
  44.                 Package (0x04)
  45.                 {
  46.                     0xFFFF,
  47.                     Zero,
  48.                     LNKA,
  49.                     Zero
  50.                 },

  51.                 Package (0x04)
  52.                 {
  53.                     0xFFFF,
  54.                     One,
  55.                     LNKB,
  56.                     Zero
  57.                 },

  58.                 Package (0x04)
  59.                 {
  60.                     0xFFFF,
  61.                     0x02,
  62.                     LNKC,
  63.                     Zero
  64.                 },

  65.                 Package (0x04)
  66.                 {
  67.                     0xFFFF,
  68.                     0x03,
  69.                     LNKD,
  70.                     Zero
  71.                 }
  72.             })
  73.             Name (AR0A, Package (0x04)
  74.             {
  75.                 Package (0x04)
  76.                 {
  77.                     0xFFFF,
  78.                     Zero,
  79.                     Zero,
  80.                     0x10
  81.                 },

  82.                 Package (0x04)
  83.                 {
  84.                     0xFFFF,
  85.                     One,
  86.                     Zero,
  87.                     0x11
  88.                 },

  89.                 Package (0x04)
  90.                 {
  91.                     0xFFFF,
  92.                     0x02,
  93.                     Zero,
  94.                     0x12
  95.                 },

  96.                 Package (0x04)
  97.                 {
  98.                     0xFFFF,
  99.                     0x03,
  100.                     Zero,
  101.                     0x13
  102.                 }
  103.             })
  104.             Method (_PRT, 0, NotSerialized)  // _PRT: PCI Routing Table
  105.             {
  106.                 If (PICM)
  107.                 {
  108.                     Return (AR0A)
  109.                 }

  110.                 Return (PR0A)
  111.             }
  112.      }
复制代码
请注意,SSDT-4的路径是Scope (\_SB.PCI0.PEG0),DSDT的路径是Device (PEG0)。
然后在SSDT-4中搜索带有_INI与_OFF方法的  \_SB.PCI0.PEG0.PEGP  将模块里的_INI,_OFF 与PEGP代码
  1. Name (ELCT, Zero)
  2.         Name (HVID, Zero)
  3.         Name (HDID, Zero)
  4.         OperationRegion (PCIS, PCI_Config, Zero, 0x0100)
  5.         Field (PCIS, DWordAcc, Lock, Preserve)
  6.         {
  7.             DVID,   16,
  8.             Offset (0x2C),
  9.             SVID,   16,
  10.             SDID,   16,
  11.             Offset (0x4C),
  12.             WVID,   16,
  13.             WDID,   16
  14.         }

  15.         OperationRegion (GPIO, SystemIO, GBAS, 0x60)
  16.         Field (GPIO, ByteAcc, Lock, Preserve)
  17.         {
  18.             Offset (0x0C),
  19.             LVL0,   32,
  20.             Offset (0x38),
  21.             LVL1,   32,
  22.             Offset (0x48),
  23.             LVL2,   32
  24.         }

  25.         OperationRegion (PCAP, PCI_Config, EECP, 0x14)
  26.         Field (PCAP, DWordAcc, NoLock, Preserve)
  27.         {
  28.             Offset (0x10),
  29.             LCTL,   16
  30.         }

  31.         Method (_INI, 0, NotSerialized)  // _INI: Initialize
  32.         {
  33.             Store (Zero, \_SB.PCI0.PEG0.PEGP._ADR)
  34.         }
  35.         Method (_OFF, 0, Serialized)  // _OFF: Power Off
  36.         {
  37.             Store (LCTL, ELCT)
  38.             Store (SVID, HVID)
  39.             Store (SDID, HDID)
  40.             Store (One, LNKD)
  41.             While (LNotEqual (LNKS, Zero))
  42.             {
  43.                 Sleep (One)
  44.             }

  45.             Store (Zero, PO35)
  46.             Store (Zero, PO36)
  47.             Notify (\_SB.PCI0.PEG0, Zero)
  48.             Return (Zero)
  49.         }
复制代码
全复制(其它无关的不复制)到DSDT下的Device (PEGP)下,并把SSDT-4里面有关路径的都改成绝对路径,仔细观察代码变化。
  1. Device (PEGP)
  2.             {
  3.                 Name (ELCT, Zero)
  4.                 Name (HVID, Zero)
  5.                 Name (HDID, Zero)
  6.                 OperationRegion (SGOP, SystemMemory, 0x9CFBEE18, 0x4B)
  7.                 Field (SGOP, AnyAcc, Lock, Preserve)
  8.                 {
  9.                     EBAS,   32,
  10.                     CPSP,   32,
  11.                     EECP,   32,
  12.                     EVCP,   32,
  13.                     XBAS,   32,
  14.                     SGMD,   8,
  15.                     SGFL,   8,
  16.                     PWOK,   8,
  17.                     HLRS,   8,
  18.                     DSEL,   8,
  19.                     ESEL,   8,
  20.                     PSEL,   8,
  21.                     PWEN,   8,
  22.                     PRST,   8,
  23.                     MXD1,   32,
  24.                     MXD2,   32,
  25.                     MXD3,   32,
  26.                     MXD4,   32,
  27.                     MXD5,   32,
  28.                     MXD6,   32,
  29.                     MXD7,   32,
  30.                     MXD8,   32,
  31.                     GBAS,   16,
  32.                     APDT,   32,
  33.                     AHDT,   32,
  34.                     IHDT,   32
  35.                 }

  36.                 OperationRegion (PCIS, PCI_Config, Zero, 0x0100)
  37.                 Field (PCIS, DWordAcc, Lock, Preserve)
  38.                 {
  39.                     DVID,   16,
  40.                     Offset (0x2C),
  41.                     SVID,   16,
  42.                     SDID,   16,
  43.                     Offset (0x4C),
  44.                     WVID,   16,
  45.                     WDID,   16
  46.                 }

  47.                 OperationRegion (GPIO, SystemIO, GBAS, 0x60)
  48.                 Field (GPIO, ByteAcc, Lock, Preserve)
  49.                 {
  50.                     Offset (0x0C),
  51.                     LVL0,   32,
  52.                     Offset (0x38),
  53.                     LVL1,   32,
  54.                     Offset (0x48),
  55.                     LVL2,   32
  56.                 }

  57.                 OperationRegion (PCAP, PCI_Config, EECP, 0x14)
  58.                 Field (PCAP, DWordAcc, NoLock, Preserve)
  59.                 {
  60.                     Offset (0x10),
  61.                     LCTL,   16
  62.                 }

  63.                 Method (_INI, 0, NotSerialized)  // _INI: Initialize
  64.                 {
  65.                     Store (Zero, _ADR)
  66.                 }

  67.                 Method (_OFF, 0, Serialized)  // _OFF: Power Off
  68.                 {
  69.                     Store (LCTL, ELCT)
  70.                     Store (SVID, HVID)
  71.                     Store (SDID, HDID)
  72.                     Store (One, LNKD)
  73.                     While (LNotEqual (LNKS, Zero))
  74.                     {
  75.                         Sleep (One)
  76.                     }

  77.                     Store (Zero, PO35)
  78.                     Store (Zero, PO36)
  79.                     Notify (PEG0, Zero)
  80.                     Return (Zero)
  81.                 }

  82.                 Name (_ADR, Zero)  // _ADR: Address
  83.                 Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
  84.                 {
  85.                     0x09,
  86.                     0x04
  87.                 })
  88.             }
复制代码
因为SSDT里面 \_SB.PCI0.PEG0.PEGP 可能不止一个,这都是描述PEGP的,都复制到DSDT的 Device (PEG0) 里面。这样SSDT-4与DSDT合并基本差不多了(直到编译不出错为止)。
接下来就是打常规补丁了,在_WAK前面新建个方法POFF这样调用方便多了
  1. Method (POFF, 0, NotSerialized)
  2.     {
  3.         \_SB.PCI0.PEG0.PEGP._OFF ()
  4.     }
复制代码
DSDT中搜_WAK,_INI  在里面加入POFF代码屏蔽独显。_INI可能不止一个,我在PEGP与和_OSI相关的_INI里面调用了POFF。终极结果如下:
  1. Scope (_SB.PCI0)
  2.     {
  3.         Method (_INI, 0, NotSerialized)  // _INI: Initialize
  4.         {
  5.             POFF ()
  6.             Store (0x07D0, OSYS)
  7.             If (CondRefOf (\_OSI, Local0))
  8.             {
  9.                 If (_OSI ("Linux"))
  10.                 {
  11.                     Store (0x03E8, OSYS)
  12.                 }
  13.                ......
  14.             }
  15.          }
  16.      }
复制代码
  1. Device (PEG0)
  2.         {
  3.             OperationRegion (RPCI, PCI_Config, Zero, 0xF0)
  4.             Field (RPCI, DWordAcc, Lock, Preserve)
  5.             {
  6.                 Offset (0xB0),
  7.                 ASPM,   2,
  8.                     ,   2,
  9.                 LNKD,   1
  10.             }

  11.             OperationRegion (RPCX, SystemMemory, PEGP.XBAS, 0x8400)
  12.             Field (RPCX, DWordAcc, NoLock, Preserve)
  13.             {
  14.                 Offset (0x8214),
  15.                 Offset (0x8216),
  16.                 LNKS,   4
  17.             }

  18.             OperationRegion (GPIO, SystemIO, 0x0500, 0x60)
  19.             Field (GPIO, ByteAcc, Lock, Preserve)
  20.             {
  21.                 Offset (0x0C),
  22.                     ,   4,
  23.                     ,   13,
  24.                 PI17,   1,
  25.                 Offset (0x38),
  26.                     ,   3,
  27.                 PO35,   1,
  28.                 PO36,   1,
  29.                 PI37,   1,
  30.                     ,   13,
  31.                 PO51,   1,
  32.                 PO52,   1,
  33.                 PO53,   1,
  34.                 PO54,   1
  35.             }

  36.             Name (_ADR, 0x00010000)  // _ADR: Address
  37.             Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
  38.             {
  39.                 0x09,
  40.                 0x04
  41.             })
  42.             Name (PR0A, Package (0x04)
  43.             {
  44.                 Package (0x04)
  45.                 {
  46.                     0xFFFF,
  47.                     Zero,
  48.                     LNKA,
  49.                     Zero
  50.                 },

  51.                 Package (0x04)
  52.                 {
  53.                     0xFFFF,
  54.                     One,
  55.                     LNKB,
  56.                     Zero
  57.                 },

  58.                 Package (0x04)
  59.                 {
  60.                     0xFFFF,
  61.                     0x02,
  62.                     LNKC,
  63.                     Zero
  64.                 },

  65.                 Package (0x04)
  66.                 {
  67.                     0xFFFF,
  68.                     0x03,
  69.                     LNKD,
  70.                     Zero
  71.                 }
  72.             })
  73.             Name (AR0A, Package (0x04)
  74.             {
  75.                 Package (0x04)
  76.                 {
  77.                     0xFFFF,
  78.                     Zero,
  79.                     Zero,
  80.                     0x10
  81.                 },

  82.                 Package (0x04)
  83.                 {
  84.                     0xFFFF,
  85.                     One,
  86.                     Zero,
  87.                     0x11
  88.                 },

  89.                 Package (0x04)
  90.                 {
  91.                     0xFFFF,
  92.                     0x02,
  93.                     Zero,
  94.                     0x12
  95.                 },

  96.                 Package (0x04)
  97.                 {
  98.                     0xFFFF,
  99.                     0x03,
  100.                     Zero,
  101.                     0x13
  102.                 }
  103.             })
  104.             Method (_PRT, 0, NotSerialized)  // _PRT: PCI Routing Table
  105.             {
  106.                 If (PICM)
  107.                 {
  108.                     Return (AR0A)
  109.                 }

  110.                 Return (PR0A)
  111.             }

  112.             Device (PEGP)
  113.             {
  114.                 Name (ELCT, Zero)
  115.                 Name (HVID, Zero)
  116.                 Name (HDID, Zero)
  117.                 OperationRegion (SGOP, SystemMemory, 0x9CFBEE18, 0x4B)
  118.                 Field (SGOP, AnyAcc, Lock, Preserve)
  119.                 {
  120.                     EBAS,   32,
  121.                     CPSP,   32,
  122.                     EECP,   32,
  123.                     EVCP,   32,
  124.                     XBAS,   32,
  125.                     SGMD,   8,
  126.                     SGFL,   8,
  127.                     PWOK,   8,
  128.                     HLRS,   8,
  129.                     DSEL,   8,
  130.                     ESEL,   8,
  131.                     PSEL,   8,
  132.                     PWEN,   8,
  133.                     PRST,   8,
  134.                     MXD1,   32,
  135.                     MXD2,   32,
  136.                     MXD3,   32,
  137.                     MXD4,   32,
  138.                     MXD5,   32,
  139.                     MXD6,   32,
  140.                     MXD7,   32,
  141.                     MXD8,   32,
  142.                     GBAS,   16,
  143.                     APDT,   32,
  144.                     AHDT,   32,
  145.                     IHDT,   32
  146.                 }

  147.                 OperationRegion (PCIS, PCI_Config, Zero, 0x0100)
  148.                 Field (PCIS, DWordAcc, Lock, Preserve)
  149.                 {
  150.                     DVID,   16,
  151.                     Offset (0x2C),
  152.                     SVID,   16,
  153.                     SDID,   16,
  154.                     Offset (0x4C),
  155.                     WVID,   16,
  156.                     WDID,   16
  157.                 }

  158.                 OperationRegion (GPIO, SystemIO, GBAS, 0x60)
  159.                 Field (GPIO, ByteAcc, Lock, Preserve)
  160.                 {
  161.                     Offset (0x0C),
  162.                     LVL0,   32,
  163.                     Offset (0x38),
  164.                     LVL1,   32,
  165.                     Offset (0x48),
  166.                     LVL2,   32
  167.                 }

  168.                 OperationRegion (PCAP, PCI_Config, EECP, 0x14)
  169.                 Field (PCAP, DWordAcc, NoLock, Preserve)
  170.                 {
  171.                     Offset (0x10),
  172.                     LCTL,   16
  173.                 }

  174.                 Method (_INI, 0, NotSerialized)  // _INI: Initialize
  175.                 {
  176.                     POFF ()
  177.                     Store (Zero, _ADR)
  178.                 }

  179.                 Method (_OFF, 0, Serialized)  // _OFF: Power Off
  180.                 {
  181.                     Store (LCTL, ELCT)
  182.                     Store (SVID, HVID)
  183.                     Store (SDID, HDID)
  184.                     Store (One, LNKD)
  185.                     While (LNotEqual (LNKS, Zero))
  186.                     {
  187.                         Sleep (One)
  188.                     }

  189.                     Store (Zero, PO35)
  190.                     Store (Zero, PO36)
  191.                     Notify (PEG0, Zero)
  192.                     Return (Zero)
  193.                 }

  194.                 Name (_ADR, Zero)  // _ADR: Address
  195.                 Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
  196.                 {
  197.                     0x09,
  198.                     0x04
  199.                 })
  200.             }
  201.       }
复制代码
然后找RM现成的亮度补丁、HD3000补丁打上去...... 还有其它的补丁有用的自己选择。
因为篇幅实在有限,我写得也不是教程,只能大致讲下我的一些思路和历程。黑果完善这块没有捷径,都得经过痛苦的学习......  我会把我的原始DSDT,原始SSDT与合并它们两个做好的DSDT一起上传,DSDT打了我认为该有的补丁,不局限于显卡,还包括了USB,IRQ,AUDIO,无线与有线网卡内建等等,有兴趣的朋友可以研究一下,最好把不足的地方补充出来,我也十分很想再进步。  当然我现在用得不是这套DSDT,有兴趣的可以留言,我再分享我用的这套没有屏蔽独显的DSDT与SSDT。
DSDT文件打包.zip (48.03 KB, 下载次数: 3)
注:只适用于HP G4 166E主板的笔记本 1233TX。

Rank: 1

UID
1179079
帖子
59
PB币
107
贡献
0
技术
3
活跃
83
发表于 2018-4-15 17:28:46 |显示全部楼层
帖子审核较慢,忘了贴效果图

独显屏蔽效果

独显屏蔽效果

Rank: 1

UID
4778003
帖子
9
PB币
1
贡献
0
技术
0
活跃
13
发表于 2018-4-16 18:11:43 |显示全部楼层
谢谢分享!!!

Rank: 2Rank: 2

UID
1552438
帖子
290
PB币
50
贡献
0
技术
0
活跃
310
发表于 2018-4-17 23:25:54 |显示全部楼层
楼主牛人啊,我都看不明白一行行的代码,我也想改我的GMA4500显卡,现在能显示最佳分辨率了,但不能真正的驱动,卡的很。想通过DSDT修改下显卡,看能不能驱动起来。

Rank: 1

UID
1179079
帖子
59
PB币
107
贡献
0
技术
3
活跃
83
发表于 2018-4-18 09:39:09 |显示全部楼层
zaner.j 发表于 2018-4-17 23:25
楼主牛人啊,我都看不明白一行行的代码,我也想改我的GMA4500显卡,现在能显示最佳分辨率了,但不能真正的驱 ...


改DSDT的一个目的就是让你的设备ID或是路径被MAC识别用它自带的驱动运行你的硬件。

你这个和DSDT关系已经不是很大了,因为4500的驱动,MacOS里面就没有,需要第三方来加载。找别人做好的吧。

Rank: 1

UID
4839267
帖子
27
PB币
0
贡献
0
技术
0
活跃
46
发表于 2018-4-19 00:21:20 |显示全部楼层
谢谢楼主!谢谢楼主!
关闭

站长推荐

推荐好友加入远景可拿奖励
推荐好友进远景,可以拿3重奖励,PBB,威望,勋章,通通有~ 本帖只限回复推荐用
回顶部
Copyright (C) 2005-2018 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛 | 电脑硬件 | 安卓软件