superkaro 发表于 2018-3-4 16:44

我的黑果是clover+原版10.13.3 配置config+DSDT/SSDT 的一点疑问

版主好,各位大老好。
接触黑果的时间不长,自己的一台老本子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还用不用勾上呢?
相信一定也有和我一样困惑的小白,还请大咖们不吝赐教,谢谢你们抽空把帖子看完,谢谢!!

superkaro 发表于 2018-3-13 18:43

做一个补充:
连续熬了几天的夜,都快被家人骂死了,目前进展是 MSIB85M-E45I5 4590   成功安装上了原装10.13.3, clover 机型 i MAC 15,1 .   显卡正常 有水波纹,1536M显存,网卡内建正常,可以上iTunes听歌,可以进APP下载QQ.
声卡8111成功驱动后置面板,音箱与麦克风完美(成功驱动appleHDA).
目前问题: 1,前置音频没有驱动(没有内建耳机选项),尝试过adummyHDA 与补丁修复,更改ID5,7,9 ,没有效果。2,休眠或是睡眠唤醒后卡顿,或是死机。 尝试过DARKWAKE=0,不行,尝试过删除usbinjectall 也没有解决,有大佬指点一下么?

superkaro 发表于 2018-3-15 15:16

自己来帖子里补充,所有知道的东西都是自己一点一滴了解的,学的,如有不正确的地方请大牛们指出,更正。
解答我帖子里的第一个疑问,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打补丁)。
和我一样的新手们,对这些有不明白的地方可以交流一下,不至于好几天摸不着头脑!欢迎大神来指点迷津,指出错误的地方,不要让我了解的皮毛误了别人!!!谢谢!!!

wode25 发表于 2018-3-25 08:38

谢谢分享,小白看完了

水瓜渣 发表于 2018-3-26 18:45

哇,好烦啊

GTXMX 发表于 2018-3-26 23:38

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

superkaro 发表于 2018-3-27 14:20

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 ,改成这样Device (LPCB)
{
    Name (_ADR,0x001F0000)
    Method (_DSM, 4, NotSerialized)
                {
                  Store (Package (0x06)
                        {
                            "device-id",
                            Buffer (0x04)
                            {
                                 0x44, 0x1E, 0x00, 0x00
                            },
                            "name",
                            Buffer (0x0D)
                            {
                              "pci8086,1e44"
                            },
                            "IOName",
                            Buffer (0x0D)
                            {
                              "pci8086,1e44"
                            }
                        }, Local0)
                  DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                  Return (Local0)
                }
..........
}点排错会提示少DTGP这个函数,在DSDT表开头最后一个External (...............)下面加上DTGP的定义    Method (DTGP, 5, NotSerialized)
    {
      If (LEqual (Arg0, Buffer (0x10)
                {
                  /* 0000 */    0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44,
                  /* 0008 */    0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B
                }))
      {
            If (LEqual (Arg1, One))
            {
                If (LEqual (Arg2, Zero))
                {
                  Store (Buffer (One)
                        {
                            0x03
                        }, Arg4)
                  Return (One)
                }
               If (LEqual (Arg2, One))
                {
                  Return (One)
                }
            }
      }
         Store (Buffer (One)
            {
                0x00
            }, Arg4)
      Return (Zero)
    }看了有的帖子提供的仿冒代码不全,会导致LPC还是无法正常加载,后来又看了一篇帖子多加了四行代码(name 与IOname 那里)。改完保存一下,iasl DSDT.dsl 得到DSDT.aml 放到变色龙根目录,设置plist,加载DSDT.aml,其它选项不变,进kexts文件夹下把NullCPUPowerManagement.kext   与 各种Powermanagement 之类的kext全删除,开机测试,看到管理员登陆界面我心里踏实多了,继续查看系统扩展,WOW! appLPC.kext, AppleIntelCPUPowerManagement.kext,AppleIntelCPUPowerManagementClient.kext 全部原生加载。 至次,电源管理告一段落。(用变色龙引导的话,路子一样,试过效果刚刚的)
   心脏供电问题解决了,接下我就来搞显卡这一块了,显卡这块工作量很大,涉及了屏蔽独显减少功耗,涉及了休眠/睡眠这一块的功能,今天先到这吧,有时间了我再分享一下第三步折腾显卡这一块的经历!!

landix 发表于 2018-3-27 23:16

写得很好,不过楼主你发错版块了啊,应该发到HighSierra版块的,这里没人看得到的。。。

superkaro 发表于 2018-3-28 15:13

landix 发表于 2018-3-27 23:16
写得很好,不过楼主你发错版块了啊,应该发到HighSierra版块的,这里没人看得到的。。。

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

369963 发表于 2018-4-1 15:01

楼主是天才,执着的天才{:5_591:}

lidashi19941115 发表于 2018-4-4 01:10

我也有此疑问

psubd177 发表于 2018-4-5 13:04

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

psubd177 发表于 2018-4-5 13:04

wode25 发表于 2018-3-25 08:38 https://www.pcbeta.com/static/image/common/back.gif
谢谢分享,小白看完了

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

yuliu1024 发表于 2018-4-10 13:42


谢谢分享,小白看完了

superkaro 发表于 2018-4-15 16:55

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的代码OperationRegion (RPCI, PCI_Config, Zero, 0xF0)
      Field (RPCI, DWordAcc, Lock, Preserve)
      {
            Offset (0xB0),
            ASPM,   2,
                ,   2,
            LNKD,   1
      }

      OperationRegion (RPCX, SystemMemory, \_SB.PCI0.PEG0.PEGP.XBAS, 0x8400)
      Field (RPCX, DWordAcc, NoLock, Preserve)
      {
            Offset (0x8214),
            Offset (0x8216),
            LNKS,   4
      }

      OperationRegion (GPIO, SystemIO, 0x0500, 0x60)
      Field (GPIO, ByteAcc, Lock, Preserve)
      {
            Offset (0x0C),
                ,   4,
                ,   13,
            PI17,   1,
            Offset (0x38),
                ,   3,
            PO35,   1,
            PO36,   1,
            PI37,   1,
                ,   13,
            PO51,   1,
            PO52,   1,
            PO53,   1,
            PO54,   1
      }复制到DSDT中的PEG0中变成这样Device (PEG0)
      {
            OperationRegion (RPCI, PCI_Config, Zero, 0xF0)
            Field (RPCI, DWordAcc, Lock, Preserve)
            {
                Offset (0xB0),
                ASPM,   2,
                  ,   2,
                LNKD,   1
            }

            OperationRegion (RPCX, SystemMemory, PEGP.XBAS, 0x8400)
            Field (RPCX, DWordAcc, NoLock, Preserve)
            {
                Offset (0x8214),
                Offset (0x8216),
                LNKS,   4
            }

            OperationRegion (GPIO, SystemIO, 0x0500, 0x60)
            Field (GPIO, ByteAcc, Lock, Preserve)
            {
                Offset (0x0C),
                  ,   4,
                  ,   13,
                PI17,   1,
                Offset (0x38),
                  ,   3,
                PO35,   1,
                PO36,   1,
                PI37,   1,
                  ,   13,
                PO51,   1,
                PO52,   1,
                PO53,   1,
                PO54,   1
            }

            Name (_ADR, 0x00010000)// _ADR: Address
            Name (_PRW, Package (0x02)// _PRW: Power Resources for Wake
            {
                0x09,
                0x04
            })
            Name (PR0A, Package (0x04)
            {
                Package (0x04)
                {
                  0xFFFF,
                  Zero,
                  LNKA,
                  Zero
                },

                Package (0x04)
                {
                  0xFFFF,
                  One,
                  LNKB,
                  Zero
                },

                Package (0x04)
                {
                  0xFFFF,
                  0x02,
                  LNKC,
                  Zero
                },

                Package (0x04)
                {
                  0xFFFF,
                  0x03,
                  LNKD,
                  Zero
                }
            })
            Name (AR0A, Package (0x04)
            {
                Package (0x04)
                {
                  0xFFFF,
                  Zero,
                  Zero,
                  0x10
                },

                Package (0x04)
                {
                  0xFFFF,
                  One,
                  Zero,
                  0x11
                },

                Package (0x04)
                {
                  0xFFFF,
                  0x02,
                  Zero,
                  0x12
                },

                Package (0x04)
                {
                  0xFFFF,
                  0x03,
                  Zero,
                  0x13
                }
            })
            Method (_PRT, 0, NotSerialized)// _PRT: PCI Routing Table
            {
                If (PICM)
                {
                  Return (AR0A)
                }

                Return (PR0A)
            }
   }请注意,SSDT-4的路径是Scope (\_SB.PCI0.PEG0),DSDT的路径是Device (PEG0)。
然后在SSDT-4中搜索带有_INI与_OFF方法的\_SB.PCI0.PEG0.PEGP将模块里的_INI,_OFF 与PEGP代码Name (ELCT, Zero)
      Name (HVID, Zero)
      Name (HDID, Zero)
      OperationRegion (PCIS, PCI_Config, Zero, 0x0100)
      Field (PCIS, DWordAcc, Lock, Preserve)
      {
            DVID,   16,
            Offset (0x2C),
            SVID,   16,
            SDID,   16,
            Offset (0x4C),
            WVID,   16,
            WDID,   16
      }

      OperationRegion (GPIO, SystemIO, GBAS, 0x60)
      Field (GPIO, ByteAcc, Lock, Preserve)
      {
            Offset (0x0C),
            LVL0,   32,
            Offset (0x38),
            LVL1,   32,
            Offset (0x48),
            LVL2,   32
      }

      OperationRegion (PCAP, PCI_Config, EECP, 0x14)
      Field (PCAP, DWordAcc, NoLock, Preserve)
      {
            Offset (0x10),
            LCTL,   16
      }

      Method (_INI, 0, NotSerialized)// _INI: Initialize
      {
            Store (Zero, \_SB.PCI0.PEG0.PEGP._ADR)
      }
      Method (_OFF, 0, Serialized)// _OFF: Power Off
      {
            Store (LCTL, ELCT)
            Store (SVID, HVID)
            Store (SDID, HDID)
            Store (One, LNKD)
            While (LNotEqual (LNKS, Zero))
            {
                Sleep (One)
            }

            Store (Zero, PO35)
            Store (Zero, PO36)
            Notify (\_SB.PCI0.PEG0, Zero)
            Return (Zero)
      }全复制(其它无关的不复制)到DSDT下的Device (PEGP)下,并把SSDT-4里面有关路径的都改成绝对路径,仔细观察代码变化。Device (PEGP)
            {
                Name (ELCT, Zero)
                Name (HVID, Zero)
                Name (HDID, Zero)
                OperationRegion (SGOP, SystemMemory, 0x9CFBEE18, 0x4B)
                Field (SGOP, AnyAcc, Lock, Preserve)
                {
                  EBAS,   32,
                  CPSP,   32,
                  EECP,   32,
                  EVCP,   32,
                  XBAS,   32,
                  SGMD,   8,
                  SGFL,   8,
                  PWOK,   8,
                  HLRS,   8,
                  DSEL,   8,
                  ESEL,   8,
                  PSEL,   8,
                  PWEN,   8,
                  PRST,   8,
                  MXD1,   32,
                  MXD2,   32,
                  MXD3,   32,
                  MXD4,   32,
                  MXD5,   32,
                  MXD6,   32,
                  MXD7,   32,
                  MXD8,   32,
                  GBAS,   16,
                  APDT,   32,
                  AHDT,   32,
                  IHDT,   32
                }

                OperationRegion (PCIS, PCI_Config, Zero, 0x0100)
                Field (PCIS, DWordAcc, Lock, Preserve)
                {
                  DVID,   16,
                  Offset (0x2C),
                  SVID,   16,
                  SDID,   16,
                  Offset (0x4C),
                  WVID,   16,
                  WDID,   16
                }

                OperationRegion (GPIO, SystemIO, GBAS, 0x60)
                Field (GPIO, ByteAcc, Lock, Preserve)
                {
                  Offset (0x0C),
                  LVL0,   32,
                  Offset (0x38),
                  LVL1,   32,
                  Offset (0x48),
                  LVL2,   32
                }

                OperationRegion (PCAP, PCI_Config, EECP, 0x14)
                Field (PCAP, DWordAcc, NoLock, Preserve)
                {
                  Offset (0x10),
                  LCTL,   16
                }

                Method (_INI, 0, NotSerialized)// _INI: Initialize
                {
                  Store (Zero, _ADR)
                }

                Method (_OFF, 0, Serialized)// _OFF: Power Off
                {
                  Store (LCTL, ELCT)
                  Store (SVID, HVID)
                  Store (SDID, HDID)
                  Store (One, LNKD)
                  While (LNotEqual (LNKS, Zero))
                  {
                        Sleep (One)
                  }

                  Store (Zero, PO35)
                  Store (Zero, PO36)
                  Notify (PEG0, Zero)
                  Return (Zero)
                }

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

            OperationRegion (RPCX, SystemMemory, PEGP.XBAS, 0x8400)
            Field (RPCX, DWordAcc, NoLock, Preserve)
            {
                Offset (0x8214),
                Offset (0x8216),
                LNKS,   4
            }

            OperationRegion (GPIO, SystemIO, 0x0500, 0x60)
            Field (GPIO, ByteAcc, Lock, Preserve)
            {
                Offset (0x0C),
                  ,   4,
                  ,   13,
                PI17,   1,
                Offset (0x38),
                  ,   3,
                PO35,   1,
                PO36,   1,
                PI37,   1,
                  ,   13,
                PO51,   1,
                PO52,   1,
                PO53,   1,
                PO54,   1
            }

            Name (_ADR, 0x00010000)// _ADR: Address
            Name (_PRW, Package (0x02)// _PRW: Power Resources for Wake
            {
                0x09,
                0x04
            })
            Name (PR0A, Package (0x04)
            {
                Package (0x04)
                {
                  0xFFFF,
                  Zero,
                  LNKA,
                  Zero
                },

                Package (0x04)
                {
                  0xFFFF,
                  One,
                  LNKB,
                  Zero
                },

                Package (0x04)
                {
                  0xFFFF,
                  0x02,
                  LNKC,
                  Zero
                },

                Package (0x04)
                {
                  0xFFFF,
                  0x03,
                  LNKD,
                  Zero
                }
            })
            Name (AR0A, Package (0x04)
            {
                Package (0x04)
                {
                  0xFFFF,
                  Zero,
                  Zero,
                  0x10
                },

                Package (0x04)
                {
                  0xFFFF,
                  One,
                  Zero,
                  0x11
                },

                Package (0x04)
                {
                  0xFFFF,
                  0x02,
                  Zero,
                  0x12
                },

                Package (0x04)
                {
                  0xFFFF,
                  0x03,
                  Zero,
                  0x13
                }
            })
            Method (_PRT, 0, NotSerialized)// _PRT: PCI Routing Table
            {
                If (PICM)
                {
                  Return (AR0A)
                }

                Return (PR0A)
            }

            Device (PEGP)
            {
                Name (ELCT, Zero)
                Name (HVID, Zero)
                Name (HDID, Zero)
                OperationRegion (SGOP, SystemMemory, 0x9CFBEE18, 0x4B)
                Field (SGOP, AnyAcc, Lock, Preserve)
                {
                  EBAS,   32,
                  CPSP,   32,
                  EECP,   32,
                  EVCP,   32,
                  XBAS,   32,
                  SGMD,   8,
                  SGFL,   8,
                  PWOK,   8,
                  HLRS,   8,
                  DSEL,   8,
                  ESEL,   8,
                  PSEL,   8,
                  PWEN,   8,
                  PRST,   8,
                  MXD1,   32,
                  MXD2,   32,
                  MXD3,   32,
                  MXD4,   32,
                  MXD5,   32,
                  MXD6,   32,
                  MXD7,   32,
                  MXD8,   32,
                  GBAS,   16,
                  APDT,   32,
                  AHDT,   32,
                  IHDT,   32
                }

                OperationRegion (PCIS, PCI_Config, Zero, 0x0100)
                Field (PCIS, DWordAcc, Lock, Preserve)
                {
                  DVID,   16,
                  Offset (0x2C),
                  SVID,   16,
                  SDID,   16,
                  Offset (0x4C),
                  WVID,   16,
                  WDID,   16
                }

                OperationRegion (GPIO, SystemIO, GBAS, 0x60)
                Field (GPIO, ByteAcc, Lock, Preserve)
                {
                  Offset (0x0C),
                  LVL0,   32,
                  Offset (0x38),
                  LVL1,   32,
                  Offset (0x48),
                  LVL2,   32
                }

                OperationRegion (PCAP, PCI_Config, EECP, 0x14)
                Field (PCAP, DWordAcc, NoLock, Preserve)
                {
                  Offset (0x10),
                  LCTL,   16
                }

                Method (_INI, 0, NotSerialized)// _INI: Initialize
                {
                  POFF ()
                  Store (Zero, _ADR)
                }

                Method (_OFF, 0, Serialized)// _OFF: Power Off
                {
                  Store (LCTL, ELCT)
                  Store (SVID, HVID)
                  Store (SDID, HDID)
                  Store (One, LNKD)
                  While (LNotEqual (LNKS, Zero))
                  {
                        Sleep (One)
                  }

                  Store (Zero, PO35)
                  Store (Zero, PO36)
                  Notify (PEG0, Zero)
                  Return (Zero)
                }

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

注:只适用于HP G4 166E主板的笔记本 1233TX。

superkaro 发表于 2018-4-15 17:28

帖子审核较慢,忘了贴效果图

liao245670616 发表于 2018-4-16 18:11

谢谢分享!!!

zaner.j 发表于 2018-4-17 23:25

楼主牛人啊,我都看不明白一行行的代码,我也想改我的GMA4500显卡,现在能显示最佳分辨率了,但不能真正的驱动,卡的很。想通过DSDT修改下显卡,看能不能驱动起来。

superkaro 发表于 2018-4-18 09:39

zaner.j 发表于 2018-4-17 23:25 https://www.pcbeta.com/static/image/common/back.gif
楼主牛人啊,我都看不明白一行行的代码,我也想改我的GMA4500显卡,现在能显示最佳分辨率了,但不能真正的驱 ...


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

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

l2266k 发表于 2018-4-19 00:21

谢谢楼主!谢谢楼主!
页: [1] 2
查看完整版本: 我的黑果是clover+原版10.13.3 配置config+DSDT/SSDT 的一点疑问