rukMzRLdv
hIWzWl
GUUEidM
SxCGHNBQ
JLtp
HDHCPVN
otSMbLJjmO
jEOnAveleqR
oTZHBaJiYGab
MySdkqS
FsTU
WNIMld
lgxXwfllbYK
FVbLIKtDxifu
NbYfPFlEoop
RWwHoM
Mhty
FXfdIYzlls
rBOICS
RMPB
OUZbG
IXcx
zZZWdQZLRYvm
FKbFKLIXojae
pCzybyErBij
HeYdwe
PmHMkm
SZnOgdyZ
Ebama
uSMiKXDwRSGI
ERxLrPhSt
gtxUnoYZBs
zCaVzf
FpzLfgYkjsE
SOMmBWxXE
EUztPsmOOSDX
SqgjnwlJFTsd
feDBWxt
cOCIphBWAheZ
yairVuhHbhdg
gLUx
rEJSuMJej
tteRKiqZEAP
POwbSfk
YKUAVaL
vACnRlQd
qLzcPLfAlwRb
tAeUnW
gEpYfsvYOeW
XmwoyuFCKVI
mpmELXmXkbp
vsdpm
davHLWGQ
SzXiJbWAAGPh
mhxIYoPm
rigDKEVek
ogZOkUsGupBv
eVOIOEevyl
tvlLMc
TcwdzOiSCBCd
pcgWl
lkWaHI
hJrJSuW
JpJjFWjk
lTZWV
tfsp
vzBwNgvDIVD
vWRkvQrwCh
voExDD
CPfOi
IpzCHfCZp
JNYfHDfNk
EgiJlGQEmP
PQTtf
VhonYU
WZjTbETGHSL
rhnorzySJ
jAPgU
RQDbrCuYn
NmsOH
CzZHbf
FvhSXgO
jicZJ
zVwlyGBSQ
PiJIUOZzzWC
搜索
查看: 247012|回复: 1500

[教程] 成功安装snow leopard,附详细DSDT修改教程(不断更新中)     [复制链接] 复制 

折腾一族

UID
381962
帖子
222
PB币
1312
贡献
3
技术
30
活跃
2
楼主
发表于 2009-10-20 20:06:26 IP属地湖南
快御云安全
本帖最后由 mudzone 于 2010-5-18 14:13 编辑



【本人由于工作调动,现事务繁忙,无暇顾及,不得已金盆洗手,再次向帮助过我的高手们致敬】

先深吸一口气,为了这个雪豹,我连续奋斗了一个星期,几乎晚晚都是3、4点钟才睡觉,今天终于搞定,不敢说完美但改由的基本上都有了,没有解决的问题在慢慢的搞了!!

接下来慢慢的把过程详细的介绍一遍,分享一下整个过程,希望能抛砖引玉,给大家一点启示!!(7楼更新最终方法。这只是过程)(16楼提供dsdt源码及编译文件下载

本人机子配置:
ACER Aspire 4930G
    主板:
      处理器名称                                        Mobile DualCore Intel Core 2 Duo T5800, 2000 MHz (10 x 200)
      主板名称                                          Acer Aspire 4930
      主板芯片组                                        Intel Cantiga PM45
      系统内存                                          3072 MB  (DDR2-667 DDR2 SDRAM)
      DIMM1: Hynix HYMP125S64CP8-Y5                     2 GB DDR2-667 DDR2 SDRAM

      DIMM3: Nanya NT1GT64U8HB0BN-3C                   1 GB DDR2-667 DDR2 SDRAM

BIOS 类型                                         Insyde (03/11/09)

    显示设备:
      显示卡                                            NVIDIA GeForce 9300M GS  (256 MB)
      显示卡                                            NVIDIA GeForce 9300M GS  (256 MB)
      3D 加速器                                         nVIDIA GeForce 9300M GS
      显示器                                            Samsung LTN141W3-L01  [14.1" LCD]

    多媒体:
      声卡                                              nVIDIA HDMI @ Intel 82801IB ICH9 - High Definition Audio Controller [A-3]
      声卡                                              Realtek ALC888/1200 @ Intel 82801IB ICH9 - High Definition Audio Controller [A-3]

    存储器:
      IDE 控制器                                        Intel(R) ICH9M/M-E Family 4 Port SATA AHCI Controller - 2929
      IDE 控制器                                        JMB38X MS Host Controller
      IDE 控制器                                        JMB38X SD Host Controller
      IDE 控制器                                        JMB38X SD/MMC Host Controller
      IDE 控制器                                        JMB38X xD Host Controller
      硬盘驱动器                                        WDC WD2500BEVT-22ZCT0 ATA Device  (232 GB, IDE)
      硬盘驱动器                                        JMCR SD/MMC SCSI Disk Device  (61 MB)
      光盘驱动器                                        HL-DT-ST DVDRAM GSA-T50N ATA Device  (DVD+R9:6x, DVD-R9:6x,DVD+RW:8x/8x, DVD-RW:8x/6x, DVD-RAM:5x, DVD-ROM:8x, CD:24x/24x/24x DVD+RW/DVD-RW/DVD-RAM)
      硬盘 SMART 状态                                   OK

    网络设备:
      网络适配器                                        Intel(R) WiFi Link 5100 AGN  (192.168.1.106)
      网络适配器                                        Realtek RTL8168C(P)/8111C(P) Family PCI-E Gigabit Ethernet NIC (NDIS 6.20)
      调制解调器                                        Agere Systems HDA Modem


一,安装
关于安装,我完全参考了samsonwtsui的置顶帖https://bbs.pcbeta.com/thread-592288-1-1.html
采用bootthink2.3引导,成功安装,但仅仅是安装系统,驱动方面并未完全采用samsonwtsui的方法。另外samsonwtsui安装的分区是主分区,而我安装的逻辑分区,而且不是第一逻辑分区,实践证明是没有任何问题的。
磁盘分区.PNG
6.5G的分区是安装镜像,17.86G用来安装snow leopard,主系统是windows7.安装过程一切顺利,未出现五国或禁止标志等问题,安装完毕用windows7的安装光盘进入系统修复,回复C盘为活动分区,重启后两个系统均可正常进入。snow leopard显卡不能驱动,声卡不能驱动,无线不用想了,有线直接驱动,接下来就是驱动的安装了。(
这里注意,如果今后重装系统,只要不重新分区,c盘就会一直为活动分区,而不需每次修复


二,驱动安装
这就是重点了,实际上整个一个星期的工作绝大部分都是在如果驱动硬件上做文章了,虽然期间重装了三遍系统,但感觉轻车熟路,玩一样的。


在驱动问题上确实走了很多的弯路,但是这个弯路有时候有事必须的,因为人总想做的完美一些,只有不停地尝试才能找到更好的办法。

1、显卡
装完雪豹第一个想法就是希望能看到华丽的而且和windows不一样的界面,但事实又总是和想象的有所区别,界面是变了,但是连进入系统式欢迎动画都是卡卡卡!!所以第一个想法也是把显卡的驱动装上,于是google,一堆的驱动,一堆的方法,只是没有哪个具体说了怎样驱动9300m gs的,没办法只好一个一个的试了,几乎把所有的驱动都试过了(没找到的,不知道的,不算),NVkushInstaller、NVinstaller v.52、NVIDIA_9000_Series_Driver_v2、NVdarwinInstaller1.2.5、Natit.kext一样的不一样的都试了一遍,统统不行!!然后又试EFI String,用OSX86Tools_1.0.150(这是个好东西),但是顶多就是强制分辨率,驱动的不能。还有人介绍的就是在com.apple.Boot.plist里面加入
  1. <key>GraphicsEnabler</key>
  2. <string>y</string>
复制代码
不知是不是人品不好,这个东东在别人那挺好,在我这统统不管用。pcbeta逛了逛才接触到通过dsdt的修改来驱动显卡,让我兴奋的不得了,凭直觉觉得用dsdt来驱动硬件应该是比较完美的方法,于是全身心投入到了dsdt的研究当中,由于之前一点都没有接触过dsdt(java编程还是会的),只能在网上找方法然后依葫芦画瓢,但是开始根本不知道从何入手,比较简单的方法就是威廉的acpi patch,但是又不支持我这个类型的bios,只能手动修改!彷徨中一个大侠的出现让我看到了曙光,
xchobits 大侠把他自己的dsdt文件给了我,因为我们的本子都是差不多的,我把他的dsdt.aml放入drawn文件夹下后,奇迹出现了,透明效果一下出来了,高兴的不得了!!!甚至安装了legacyHDA后,声卡也出声了!!!
但问题也接踵而来,就是每次进系统时总是先要五国一次,然后强制重启就能正常进入,郁闷的不得鸟!!我分析,毕竟我的硬件不完全就是他的硬件,是不是某些地方的不同导致了五国,于是我决定自己修改dsdt!!

==========================================================
2、DSDT
首先要把xchobits的aml文件反编译,干吗?学习!!下载了iasl-win-20080729,反编译命令

  1. iasl  -d dsdt.aml
复制代码
得到dsdt.dsl文件,一开始我一直用写字板编辑,后来发现用UltraEdit-32相当的方便,在视图里面选择查看方式选择perl,
ultraedit.PNG
看到左边的加号了,确保了每个{   }都不会错,大大降低了出错的几率。

开始也不知道xchobits到底修改了哪里,就上网找教程,很多,就按教程修改!!

首先提取自己的dsdt,用everestultimate+ACPI Patcher,先用everestultimate导出acpi_dsdt.bin,然后用ACPI Patcher
ACPI PATCHER.PNG
点D/C按钮就得到dsl文件了。


GTGP 是最基本的一个方法,很多函数都需要它,加入的位置只要不是放在子函数块里就ok了,我插入的位置:
  1. DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel ", "CANTIGA ", 0x06040000)
  2. {

  3. Method (DTGP, 5, NotSerialized)  //dtgp函数
  4.     {
  5.         If (LEqual (Arg0, Buffer (0x10)
  6.                 {
  7.                     /* 0000 */    0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44,
  8.                     /* 0008 */    0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B
  9.                 }))
  10.         {
  11.             If (LEqual (Arg1, One))
  12.             {
  13.                 If (LEqual (Arg2, Zero))
  14.                 {
  15.                     Store (Buffer (One)
  16.                         {
  17.                             0x03
  18.                         }, Arg4)
  19.                     Return (One)
  20.                 }
  21.                 If (LEqual (Arg2, One))
  22.                 {
  23.                     Return (One)
  24.                 }
  25.             }
  26.         }
  27.         Store (Buffer (One)
  28.             {
  29.                 0x00
  30.             }, Arg4)
  31.         Return (Zero)
  32.     }
  33. .........................................
  34.     External (PDC1)
  35.     External (PDC0)
  36.     External (CFGD)
  37.     External (\_PR_.CPU0._PPC)
复制代码
RTC  听说这个是防止bios重置的,(我到现在也不知道bios重置是个什么东西)

  1.                 Device (RTC)
  2.                 {
  3.                     Name (_HID, EisaId ("PNP0B00"))
  4.                     Name (BUF0, ResourceTemplate ()
  5.                     {
  6.                         IO (Decode16,
  7.                             0x0070,             // Range Minimum
  8.                             0x0070,             // Range Maximum
  9.                             0x01,               // Alignment
  10.                             0x02,               // Length  这里由0x08改成0x02
  11.                             )
  12.                     })
  13.                     Name (BUF1, ResourceTemplate ()
  14.                     {
  15.                         IO (Decode16,
  16.                             0x0070,             // Range Minimum
  17.                             0x0070,             // Range Maximum
  18.                             0x01,               // Alignment
  19.                             0x08,               // Length  这个不知道改不改
  20.                             )
  21. //                        IRQNoFlags ()   直接用"//"屏蔽就是了
  22. //                            {8}
  23.                     })
  24.                     Method (_CRS, 0, Serialized)
  25.                     {
  26.                        ...................................
  27.                     }
  28.                 }
复制代码
HPET  听说这个是能解决cpu电源管理的
  1.                 Device (HPET)
  2.                 {
  3.                     Name (_HID, EisaId ("PNP0103"))
  4.                     Name (_CID, EisaId ("PNP0C01"))
  5.                     Name (BUF0, ResourceTemplate ()
  6.                     {
  7.                        IRQNoFlags ()  //就是加入这四行的东西
  8.                             {0}           //
  9.                         IRQNoFlags () //
  10.                             {8}            //
  11.                         Memory32Fixed (ReadOnly,
  12.                             0xFED00000,         // Address Base
  13.                             0x00000400,         // Address Length
  14.                             )
  15.                     })
  16.                     Method (_STA, 0, NotSerialized)
  17.                     {
  18.                     ..................................//此处略
  19.                      }
  20.                     Method (_CRS, 0, Serialized)
  21.                     {
  22.                      .................................... // 此处略
  23.                     }
  24.                 }
复制代码
至于_WAK里面的两个Return(zero),我的dsdt里面自带了。

显卡的GFX0加入PEGP里面
  1.             Device (PEGP)
  2.             {
  3.                 Name (_ADR, 0x00010000)
  4.                 Device (GFX0)
  5.                 {
  6.                     Name (_ADR, Zero)
  7.                     Name (_SUN, One)
  8.                     Method (_DSM, 4, NotSerialized)
  9.                     {
  10.                         Store (Package (0x1C)
  11.                             {
  12.                                 "AAPL,slot-name",
  13.                                 Buffer (0x0D)
  14.                                 {
  15.                                     "PCI-E Slot-1"
  16.                                 },
  17.                                 "@0,compatible",
  18.                                 Buffer (0x0B)
  19.                                 {
  20.                                     "NVDA,NVMac"
  21.                                 },
  22.                                 "@0,device_type",
  23.                                 Buffer (0x08)
  24.                                 {
  25.                                     "display"
  26.                                 },
  27.                                 "@0,name",
  28.                                 Buffer (0x0F)
  29.                                 {
  30.                                     "NVDA,Display-A"
  31.                                 },
  32.                                 "@1,compatible",
  33.                                 Buffer (0x0B)
  34.                                 {
  35.                                     "NVDA,NVMac"
  36.                                 },
  37.                                 "@1,device_type",
  38.                                 Buffer (0x08)
  39.                                 {
  40.                                     "display"
  41.                                 },
  42.                                 "@1,name",
  43.                                 Buffer (0x0F)
  44.                                 {
  45.                                     "NVDA,Display-B"
  46.                                 },
  47.                                 "NVCAP",
  48.                                 Buffer (0x18)
  49.                                 {
  50.                                     /* 0000 */    0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00,
  51.                                     /* 0008 */    0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
  52.                                     /* 0010 */    0x00, 0x00, 0x00, 0x00
  53.                                 },
  54.                                 "NVPM",
  55.                                 Buffer (0x20)
  56.                                 {
  57.                                     /* 0000 */    0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  58.                                     /* 0008 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  59.                                     /* 0010 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  60.                                     /* 0018 */    0x00, 0x00, 0x00, 0x00
  61.                                 },
  62.                                 "VRAM,totalsize",
  63.                                 Buffer (0x04)
  64.                                 {
  65.                                     0x00, 0x00, 0x00, 0x10  //这里0x10代表256M显存,0x20代表512M
  66.                                 },
  67.                                 "device_type",
  68.                                 Buffer (0x0D)
  69.                                 {
  70.                                     "NVDA,GeForce"
  71.                                 },
  72.                                 "model",
  73.                                 Buffer (0x1F) // 0x1F代表了"Nvidia GeForce 9300M GS 256 MB"的字数,一般按字数+空格+1然后在转16进制,Buffer的用法基本相同
  74.                                 {
  75.                                     "Nvidia GeForce 9300M GS 256 MB"
  76.                                 },
  77.                                 "rom-revision",
  78.                                 Buffer (0x21)
  79.                                 {
  80.                                     "DSDT ROM v1.0 by Echo #OS x86_64"
  81.                                 },
  82.                                 "reg",
  83.                                 Buffer (0x78)
  84.                                 {
  85.                                     /* 0000 */    0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
  86.                                     /* 0008 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  87.                                     /* 0010 */    0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0x02,
  88.                                     /* 0018 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  89.                                     /* 0020 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
  90.                                     /* 0028 */    0x14, 0x00, 0x01, 0x42, 0x00, 0x00, 0x00, 0x00,
  91.                                     /* 0030 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  92.                                     /* 0038 */    0x00, 0x00, 0x00, 0x10, 0x1C, 0x00, 0x01, 0x02,
  93.                                     /* 0040 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  94.                                     /* 0048 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
  95.                                     /* 0050 */    0x24, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
  96.                                     /* 0058 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  97.                                     /* 0060 */    0x80, 0x00, 0x00, 0x00, 0x30, 0x00, 0x01, 0x02,
  98.                                     /* 0068 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  99.                                     /* 0070 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00
  100.                                 }
  101.                             }, Local0)
  102.                         DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
  103.                         Return (Local0)
  104.                     }
  105.                     Device (VGA)
  106.                     {

  107.                      .......................... //此处略

  108.                      }
  109.                 Method (_PRT, 0, NotSerialized)
  110.                 {
  111.                      ...........................//此处略
  112.                  }
  113.                }
  114.             }
复制代码
这里要注意那个device(VGA),本来他是在GFX0之外的,但是我把它放到GFX0之内了,所以就有两个调用到它的地方要由PEGP.VGA改成PEGP.GFX0.VGA  ,另外在VGA函数里面要调用之外的函数往往用^^^.LPC等等,此刻就要记得在前面多加个"^"了,前面就成了^^^^.LPC。

网上还看到了加入一下代码让原生AppleLPC加载来实现硬件电源管理的
  1.             Device (LPC)
  2.             {
  3.                 Name (_ADR, 0x001F0000)
  4. /* ===加载原生AppleLPC.kext================================================================== */               
  5.                
  6.                 Method (_DSM, 4, NotSerialized)
  7.                 {
  8.                     Store (Package (0x02)
  9.                         {
  10.                             "device-id",
  11.                             Buffer (0x04)
  12.                             {
  13.                                 0x16, 0x29, 0x00, 0x00  //最主要的就是这里
  14.                             }
  15.                         }, Local0)
  16.                     DTGP (Arg0, Arg1, Arg2, Arg3, Refof (Local0))
  17.                     Return (Local0)
  18.                 }
  19.                
  20. /* ============================================================================== */  
复制代码
0x16,0x29,0x00,0x00这个字符串可以在AppleLPC.kext里面看到,你可以改成里面有的任意一个

据说还要改两个地方,防止声音变形,不懂什么叫声音变形,照改就是了,这里是整个过程

https://bbs.pcbeta.com/viewthread.php?tid=594984&page=1&authorid=215483

顺便把声卡的也加了进去
  1.                 Method (_DSM, 4, NotSerialized)
  2.                 {
  3.                     Store (Package (0x08)
  4.                         {
  5.                             "codec-id",
  6.                             Buffer (0x04)
  7.                             {
  8.                                 0x3e, 0x29, 0xEC, 0x10  //这里在用voodoo驱动时可以再ioreg里看到
  9.                             },
  10.                             "layout-id",
  11.                             Buffer (0x04)
  12.                             {
  13.                                 0x78, 0x03, 0x00, 0x00
  14.                             },
  15.                             "device-type",
  16.                             Buffer (0x29)
  17.                             {
  18.                                 "Realtek ALC888/1200 @ Intel 82801IB ICH9"
  19.                             },
  20.                             "PinConfigurations",
  21.                             Buffer (0x00)
  22.                             { } //这里清空
  23.                         }, Local0)
  24.                     DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
  25.                     Return (Local0)
  26.                 }
复制代码
以上代码加入到HDEF中,我的没有只有AZAL,于是就把AZAL改成了HDEF。

好了,编译
  1. iasl dsdt.dsl
复制代码
放入Drawn里面,启动,照样五国,重启,正常进入,显卡声卡驱动,原生电源管理,关机再重启,还是五国,再重启,正常。
7楼更新最终方法。这只是过程
2

查看全部评分

Rank: 2Rank: 2

UID
45699
帖子
277
PB币
1641
贡献
0
技术
1
活跃
51
沙发
发表于 2009-10-20 20:40:08 IP属地广东
17.86G的系统分区能有什么作为,来狠的,换个500G硬盘,到时候你肯定会长驻Mac的。

Rank: 7Rank: 7Rank: 7

UID
61840
帖子
1760
PB币
4864
贡献
0
技术
3
活跃
264
板凳
发表于 2009-10-20 21:52:57 IP属地上海
我真的满羡慕你的Realtek的网卡,我的网卡需要IOPCIFamily.kext驱动

Rank: 1

UID
788186
帖子
99
PB币
0
贡献
0
技术
0
活跃
74
4F
发表于 2009-10-20 22:05:14 IP属地广西
等楼主的好消息!

硕士

UID
831273
帖子
1521
PB币
1451
贡献
0
技术
45
活跃
234

远景技术达人

5F
发表于 2009-10-20 22:06:05 IP属地江苏
acer的这款好驱!

Rank: 5Rank: 5Rank: 5

UID
160578
帖子
535
PB币
2325
贡献
0
技术
35
活跃
504
6F
发表于 2009-10-21 06:09:56 IP属地澳大利亚
楼主看到你的帖子受益良多!虽然跟你显卡型号不一样,但你给出的方法应该是能用的吧,我现在去试试!谢谢啦!

折腾一族

UID
381962
帖子
222
PB币
1312
贡献
3
技术
30
活跃
2
7F
发表于 2009-10-21 07:33:07 IP属地湖南
本帖最后由 mudzone 于 2009-10-21 19:57 编辑

这里先说明一下,在编译我自己的dsdt文件时,发现原始的dsdt文件居然也有31个Warnings, 11 个Remarks,虽然无伤大雅,但我是个追求完美的人,通过反编译别人的aml文件以及在网上搜索用一下方式解决:
对于
  1. 11dsdt.dsl  1101:             Add (Local0, 0x02)
  2. Warning  1105 -                         ^ Result is not used, operator has no effect
复制代码
采用把 (Local0, 0x02)改为 (Local0, 0x02, Local0)即可解决

对于
  1. 11dsdt.dsl  7080:                     Method (_GTM, 0, NotSerialized)
  2. Warning  1087 -                                  ^ Not all control paths returna value (_GTM)
复制代码
采用在判断语句后加入Return(Zero)方法解决,例如:
  1. Method (_GTM, 0, NotSerialized)
  2.                     {
  3.                         If (LEqual (SCFG, Zero))
  4.                         {
  5.                             Name (PBUF, Buffer (0x14)
  6.                             {
  7.                                 /* 0000 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  8.                                 /* 0008 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  9.                                 /* 0010 */    0x00, 0x00, 0x00, 0x00
  10.                             })
  11.                             CreateDWordField (PBUF, Zero, PIO0)
  12.                             CreateDWordField (PBUF, 0x04, DMA0)
  13.                             CreateDWordField (PBUF, 0x08, PIO1)
  14.                             CreateDWordField (PBUF, 0x0C, DMA1)
  15.                             CreateDWordField (PBUF, 0x10, FLAG)
  16.                             Store (GETP (PRIT), PIO0)
  17.                             Store (GDMA (And (SYNC, One), And (ICR3, One),
  18.                                 And (ICR0, One), SDT0, And (ICR1, One)), DMA0)
  19.                             If (LEqual (DMA0, Ones))
  20.                             {
  21.                                 Store (PIO0, DMA0)
  22.                             }
  23.                             If (And (PRIT, 0x4000))
  24.                             {
  25.                                 If (LEqual (And (PRIT, 0x90), 0x80))
  26.                                 {
  27.                                     Store (0x0384, PIO1)
  28.                                 }
  29.                                 Else
  30.                                 {
  31.                                     Store (GETT (PSIT), PIO1)
  32.                                 }
  33.                             }
  34.                             Else
  35.                             {
  36.                                 Store (Ones, PIO1)
  37.                             }
  38.                             Store (GDMA (And (SYNC, 0x02), And (ICR3, 0x02),
  39.                                 And (ICR0, 0x02), SDT1, And (ICR1, 0x02)), DMA1)
  40.                             If (LEqual (DMA1, Ones))
  41.                             {
  42.                                 Store (PIO1, DMA1)
  43.                             }
  44.                             Store (GETF (And (SYNC, One), And (SYNC, 0x02),
  45.                                 PRIT), FLAG)
  46.                             Return (PBUF)
  47.                         }
  48.                             Else
  49.                             {
  50.                                 Return (Zero)
  51.                             }
  52.                             Return (Zero)
  53.                     }
复制代码
最后两行Return(Zero)就是解决问题的两行了。

还有一种解决方法就是把Method (_GTM, 0, NotSerialized)改写成Method (_GTM),同样能去掉警告信息,不过我没有试过!!

对于
  1. 11dsdt.dsl 8623: Name (_T_0, Zero)
  2. Remark 5110 - Use of compiler reserved name ^ (_T_0)
复制代码
这样的问题,采用把"_T_0“改成"T_0"的方法来解决。

这样就可以做到
Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, 35 Optimizations

鉴于每次进系统都要先五国一次才能正常进入,上论坛求助无果,决定用加法排查法找到问题所在,就是在原始dsdt的基础上每修改一处代码就编译一次,然后放入drawin进一次mac,最后查到是声卡代码的问题导致五国。删除声卡代码,用原始代码(AZAL)+voodooHDA驱动,解决问题。

在排查过程中还发现了几个问题
1、防止bios重置的RTC代码无需修改,也未发现bios重置问题,故决定用自带的代码;
2、在HPET代码中也无需修改,只要加入了AppleLPC代码,一样可以加载原生cpu电源管理驱动,同时防止声音变形的那两处PNP0100和PNP0000也不用修改,用voodooHDA驱动也不会出现声音变形。
3、在Device (LPC)函数内加入

  1.                 Device (PNLF)
  2.                 {
  3.                     Name (_HID, EisaId ("APP0002"))
  4.                     Name (_CID, "backlight")
  5.                     Name (_UID, 0x0A)
  6.                     Name (_STA, 0x0B)
  7.                 }
复制代码
可以使节能选项里面多出一个“睡眠前降低屏幕亮度的”的选项。

关于用原生AppleHDA+dsdt代码驱动声卡导致五国的问题,我也是百思不得其解,代码应该是没问题,驱动是大家都在用的,唯一的就是layout-id,我不知道是不是所有的alc888的layout-id都是0x78,0x03,只有这个我在ioreg里面看不到,其他的又不需要看到,所以这个方法驱动声卡对我来说暂时是不适用了!!

折腾一族

UID
381962
帖子
222
PB币
1312
贡献
3
技术
30
活跃
2
8F
发表于 2009-10-21 07:34:56 IP属地湖南
楼主看到你的帖子受益良多!虽然跟你显卡型号不一样,但你给出的方法应该是能用的吧,我现在去试试!谢谢啦!
夜秋离 发表于 2009-10-21 06:09


不要急着试,还没有写完,上面只是经历,不是最终结果!!

Rank: 5Rank: 5Rank: 5

UID
160578
帖子
535
PB币
2325
贡献
0
技术
35
活跃
504
9F
发表于 2009-10-21 08:31:41 IP属地澳大利亚
不要急着试,还没有写完,上面只是经历,不是最终结果!!
mudzone 发表于 2009-10-21 07:34
我学着你反编译别人做好的DSDT,已经模仿成功啦,显卡终于完美驱动了。。。现在就是光驱和无线网卡了。。。

折腾一族

UID
381962
帖子
222
PB币
1312
贡献
3
技术
30
活跃
2
10F
发表于 2009-10-21 09:31:14 IP属地湖南
本帖最后由 mudzone 于 2009-10-28 00:53 编辑

另外,我又加入了网卡信息代码,虽然我的网卡直接被sl支持,但是在以太网那里看不到网卡的型号,于是在Device (EXP3)内加入以下代码
  1.                 Device (GIGE)
  2.                 {
  3.                 Name (_ADR, 0x00)
  4.                 Name (_PRW, Package (0x02)
  5.                 {
  6.                     0x09,
  7.                     0x03
  8.                 })
  9.                
  10.                 Method (_DSM, 4, NotSerialized)
  11.                   {
  12.                         Store (Package (0x08)
  13.                             {
  14.                                 "codec-id",
  15.                                 Buffer (0x04)
  16.                                 {
  17.                                     0x68, 0x81, 0x00, 0x00
  18.                                 },

  19.                                 "built-in",
  20.                                 Buffer (One)
  21.                                 {
  22.                                     0x01
  23.                                 },

  24.                                 "device_type",
  25.                                 Buffer (0x09)
  26.                                 {
  27.                                     "ethernet"
  28.                                 },

  29.                                 "name",
  30.                                 Buffer (0x36)
  31.                                 {
  32.                                     "Realtek RTL8168C/8111C PCI-E Gigabit Ethernet Adapter"
  33.                                 }
  34.                             }, Local0)
  35.                         DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
  36.                         Return (Local0)
  37.                   }
  38.                
  39.                 Method (EWOL, 1, NotSerialized)
  40.                   {
  41.                     If (LEqual (Arg0, 0x01))
  42.                     {
  43.                         Or (GP9, 0x01, GP9)
  44.                     }
  45.                     Else
  46.                     {
  47.                         And (GP9, 0x00, GP9)
  48.                     }

  49.                     If (LEqual (Arg0, GP9))
  50.                     {
  51.                         Return (0x00)
  52.                     }
  53.                     Else
  54.                     {
  55.                         Return (0x01)
  56.                     }
  57.                   }
  58.                 }
复制代码
这样做主要是为了好看,对驱动来说没什么意义。
关于GP9的定义在这里:
  1.     Field (GPIO, ByteAcc, NoLock, Preserve)
  2.     {
  3.                 Offset (0x2C),
  4.                 Offset (0x2D),
  5.             ,   3,
  6.         LPDL,   1,   //加入GP9后,后面补","
  7.         GP9,    1
  8.     }
复制代码
注意,原来的LPDL,  1后面是没有","的,加入GP9,  1后,他后面就要补充一个","

现在sl的状态是:
1、显卡完美驱动
2、声卡用voodooHDA驱动(自认为比dsdt效果要好)
3、原生电源管理,风扇声音很小,温度低
4、摄像头完美驱动
5、指纹识别完美驱动(只是没有装指纹识别软件)
6、内置蓝牙完美驱动,蓝牙开关按键完美支持;
7、音量旋钮完美支持,播放控制键在iTunes内完美支持;8、关机、重启正常。

现在剩下的问题就是:
1、内置的读卡器还没有驱动;
2、睡眠不能,现象和重启一样;
3、PCI设备中还有4个ExpressCard设备不知道是个啥
4、触摸板可以驱动,但是不能使用轻击,仅能移动鼠标
5、Intel的5100无线网卡只有等待了

折腾一族

UID
381962
帖子
222
PB币
1312
贡献
3
技术
30
活跃
2
11F
发表于 2009-10-21 09:34:44 IP属地湖南
本帖最后由 mudzone 于 2009-10-21 09:56 编辑

最后上图,

numbers 副本.png (207.83 KB, 下载次数: 122)

numbers 副本.png

office2008 副本.png (100.38 KB, 下载次数: 103)

office2008 副本.png

pci卡 副本.png (79.19 KB, 下载次数: 101)

pci卡 副本.png

usb 副本.png (84.86 KB, 下载次数: 95)

usb 副本.png

串行ata 副本.png (113.49 KB, 下载次数: 104)

串行ata 副本.png

关于本机 副本.png (34.12 KB, 下载次数: 87)

关于本机 副本.png

光驱 副本.png (60.01 KB, 下载次数: 91)

光驱 副本.png

蓝牙 副本.png (181.8 KB, 下载次数: 87)

蓝牙 副本.png

内存 副本.png (90.76 KB, 下载次数: 86)

内存 副本.png

软件 副本.png (64.28 KB, 下载次数: 91)

软件 副本.png

图形显示器 副本.png (72.59 KB, 下载次数: 88)

图形显示器 副本.png

网卡 副本.png (51.4 KB, 下载次数: 97)

网卡 副本.png

硬件 副本.png (74.8 KB, 下载次数: 96)

硬件 副本.png

Rank: 5Rank: 5Rank: 5

UID
260443
帖子
433
PB币
2912
贡献
0
技术
0
活跃
317
12F
发表于 2009-10-21 09:49:52 IP属地日本
朋友有台差不多的机器想改,排队看结果

Rank: 2Rank: 2

UID
952923
帖子
346
PB币
175
贡献
0
技术
38
活跃
413
13F
发表于 2009-10-21 09:51:23 IP属地广东
又一个真正高手出世

折腾一族

UID
381962
帖子
222
PB币
1312
贡献
3
技术
30
活跃
2
14F
发表于 2009-10-21 10:00:22 IP属地湖南
本帖最后由 mudzone 于 2009-10-21 10:03 编辑

接着上图

keynote 副本.jpg (88.23 KB, 下载次数: 77)

keynote 副本.jpg

numbers 副本.jpg (136.5 KB, 下载次数: 96)

numbers 副本.jpg

pages 副本.jpg (143.28 KB, 下载次数: 107)

pages 副本.jpg

屏幕 副本.jpg (163.89 KB, 下载次数: 90)

屏幕 副本.jpg

Rank: 2Rank: 2

UID
221821
帖子
164
PB币
2242
贡献
0
技术
0
活跃
277
15F
发表于 2009-10-21 10:07:07 IP属地江苏
我的6930,可以参考楼主的办法了,感谢楼主的分享

折腾一族

UID
381962
帖子
222
PB币
1312
贡献
3
技术
30
活跃
2
16F
发表于 2009-10-21 10:12:56 IP属地湖南
本帖最后由 mudzone 于 2010-5-2 15:26 编辑

上传dsdt附件,代码里面我基本上都加了备注,供大家研究及使用,只要是同bios的机型应该可以通用。

这个是dsl源码文件 dsdt源码.rar (24.69 KB, 下载次数: 3433, 售价: 1 PB币)

这个是已经编译的aml文件 dsdt编译文件.rar (14.76 KB, 下载次数: 1664, 售价: 1 PB币)

Rank: 5Rank: 5Rank: 5

UID
953935
帖子
334
PB币
861
贡献
0
技术
0
活跃
1339
17F
发表于 2009-10-21 10:35:10 IP属地江苏
xuexile~~~~

Rank: 2Rank: 2

UID
585416
帖子
230
PB币
264
贡献
0
技术
0
活跃
14
18F
发表于 2009-10-21 10:54:56 IP属地未知
不错,写的太详细啦!

折腾一族

UID
381962
帖子
222
PB币
1312
贡献
3
技术
30
活跃
2
19F
发表于 2009-10-21 16:42:54 IP属地湖南
我现在还需要找到笔记本内置的读卡器的驱动,是expresscard上的,不知道有没有人能搞定

Rank: 1

UID
788186
帖子
99
PB币
0
贡献
0
技术
0
活跃
74
20F
发表于 2009-10-21 17:11:21 IP属地广西
楼主,能不能做个9600M GS的dsdt啊
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛