问题描述:已经开启原生电源管理,如果不使用DSDT,不管是用AppleSmartbattery.kext还是Appleacpibatterymanagement.kext.都能显示电量。但是用上DSDT后,显示没有电池,连接电源。电池电量始终不显示。 使用的系统版本:10.8.3懒人版,置顶帖里安装教程附件下载 DSDT电源修改部分采用的教程: https://bbs.pcbeta.com/viewthread-935582-1-1.html https://bbs.pcbeta.com/viewthread-935509-1-1.html 引导工具:Chameleon_V2.1svn_r2070 驱动中要求的AppleACPIPlatform.kext版本:因为没有找到V1.4版,本人用了最新的V1.7,如果是以为这个关系,麻烦有1.4版本的朋友给我发一个。本人百度,远景,国外的www.kext.com 都没有搜到1.4的下载。 下面是本人按照教程修改的过程。我的BAT0部分如下,和教程里差别很大: Device (BAT0) { Name (_HID, EisaId("PNP0C0A")) Name (_UID, One) Name (_PCL, Package (0x01) { _SB }) Method (_STA, 0, NotSerialized) { And (MIS0, 0x02, Local0) If (Local0) { Return (0x1F) } Return (0x0F) } Method (_BIF, 0, NotSerialized) { Name (BIF0, Package (0x01) { Zero }) ECG9 (One, BIF0) Return (BIF0) } Method (_BST, 0, NotSerialized) { Name (BST0, Package (0x01) { Zero }) ECG6 (One, BST0) Return (BST0) } } 发现我的BIF 和 BST 里分别调用了ECG9和ECG6,然后搜索ECG9和ECG6分别找到代码如下: ECG9 Method (ECG9, 2,NotSerialized) { Name (BBI1, Buffer (0x04) {}) CreateByteField (BBI1, Zero,BI00) CreateByteField (BBI1, One,BI01) CreateByteField (BBI1, 0x02,BI02) CreateByteField (BBI1, 0x03,BI03) Name (BBI2, Buffer (0x04) {}) CreateByteField (BBI2, Zero,BI04) CreateByteField (BBI2, One,BI05) CreateByteField (BBI2, 0x02,BI06) CreateByteField (BBI2, 0x03,BI07) Name (BBI3, Buffer (0x04) {}) Name (BBI4, Buffer (0x04) {}) Name (BC00, Buffer (0x04) {}) Name (BC04, Buffer (0x04) {}) Name (BC08, Buffer (0x04) {}) SX10 () If (LEqual (NSMI, Zero)) { \_SB.PCI0.SBRG.KBC.PCA1 (0xA0,One) Store (\_SB.PCI0.SBRG.KBC.ECRB(0x04), BBI2) Store (\_SB.PCI0.SBRG.KBC.ECRB(0x03), BBI1) Store (\_SB.PCI0.SBRG.KBC.ECRB(0x05), BBI3) Store (\_SB.PCI0.SBRG.KBC.ECRB(0x06), BBI4) \_SB.PCI0.SBRG.KBC.PCA1 (0x9E,One) Store (\_SB.PCI0.SBRG.KBC.ECRB(0x03), BC00) Store (\_SB.PCI0.SBRG.KBC.ECRB(0x04), BC04) Store (\_SB.PCI0.SBRG.KBC.ECRB(0x05), BC08) Store (One, Index (Arg1, Zero)) Or (BI03, ShiftLeft (BI04,0x08), Local0) Store (Local0, Local1) Store (Local0, Index (Arg1,One)) Or (BI01, ShiftLeft (BI02,0x08), Local0) Store (Local0, Index (Arg1,0x02)) Store (One, Index (Arg1, 0x03)) Or (BI05, ShiftLeft (BI06,0x08), Local0) Store (Local0, Index (Arg1,0x04)) Store (Divide (Local1, 0x0A, ),Index (Arg1, 0x05)) Store (Divide (Local1, 0x21, ),Index (Arg1, 0x06)) Store (Divide (Local1, 0x64, ),Index (Arg1, 0x07)) Store (Divide (Local1, 0x64, ),Index (Arg1, 0x08)) Store (EGB0 (BC00, BC04, BC08),Index (Arg1, 0x09)) Store (EGB1 (BBI3), Index(Arg1, 0x0A)) Store (EGB2 (BBI4), Index(Arg1, 0x0B)) Store (EGB3 (BBI3), Index(Arg1, 0x0C)) } Else { Store (Zero, Index (Arg1,Zero)) Store (Zero, Index (Arg1, One)) Store (Zero, Index (Arg1,0x02)) Store (Zero, Index (Arg1,0x03)) Store (Zero, Index (Arg1,0x04)) Store (Zero, Index (Arg1,0x05)) Store (Zero, Index (Arg1,0x06)) Store (Zero, Index (Arg1,0x07)) Store (Zero, Index (Arg1,0x08)) Store (Zero, Index (Arg1,0x09)) Store (Zero, Index (Arg1,0x0A)) Store (Zero, Index (Arg1,0x0B)) Store (Zero, Index (Arg1,0x0C)) } SX12 () } 里面并没有出现什么Field或者Multiply什么,只有Store调用,我搜索了所有Store调用中的函数, 如 Store (EGB0 (BC00, BC04, BC08),Index (Arg1, 0x09)) 这行调用中的EGB0,BC00,BC04,BC08,都没有发现16位,或者32为,或者64,128位值。
补充内容 (2013-6-9 13:48):
不知道为什么,后半部分发布出来,已发就说有不良信息,路过的大神,直接看我的DSDT,帮我修改一下吧,改完了麻烦告诉我改的那里,我学习一下, 以后也能帮助别人。如果是有偿修改,也可以,告诉我,我能满足都满足 |