本帖最后由 daxuexinsheng 于 2014-2-6 17:05 编辑
一些通用的DSDT修复方法,部分内容转载自http://blog.csdn.net/zengconggen/article/details/6721056
1、Object not found or not accessible from scope ( PEG0.PEGP.TGPC) 括号里的名称不一定相同 CreateField (^^^PEG0.PEGP.TGPC, 0x0A, 0x02, PRGE) 修改为: CreateField (\_PR.PEG0.PEGP.TGPC, 0x0A, 0x02, PRGE) 再在DSDT开始的地方 DefinitionBlock () { 在这下面添加 External(\_PR.PEG0.PEGP.TGPC)
2、Access width of Field Unit extends beyond region limit OperationRegion (GPIO, SystemIO, 0x1180, 0x3B) 增大0x3B,比如改为0x3C Field (GPIO, WordAcc, Lock, Preserve) { AccessAs (DWordAcc, 0x00), Offset (0x0F), , 4, LV28, 1, Offset (0x2D), , 5 .......... }
3、syntax error, unexpected PARSEOP_NAMESEG,expecting PARSEOP_DEFINITIONBLOCK 查看DSDT开始的地方 ACPIError (dmutils-0261): Argument count mismatch for method\_SB_.VWAK 3 1 [20080926] ACPIError (dmutils-0261): Argument count mismatch for method\_GPE.VBRE 2 1 [20080926] /* * Intel ACPI ComponentArchitecture * AML Disassemblerversion 20080926 修改:删除 /* 之前的语句。 删除了语句 /* * Intel ACPI ComponentArchitecture * AML Disassemblerversion 20080926
4、Internal compiler error ^ (null Op pointer) If (LNot (\_OSI ("Windows2006"))) { PHSR (0x10, 0x00) } 修改为: If (\_OSI ("Windows2006")) { } Else { PHSR (0x10, 0x00) }
5、Method local variable is not initialized (Local0) 括号里的名称不一定相同 Scope (\_SI) { Method (_MSG, 1, NotSerialized) { Store (Local0, Local0) } Method (_SST, 1, NotSerialized) { Store (Local0, Local0) } } 修改为: Scope (\_SI) { Method (_MSG, 1, NotSerialized) { Store (Zero, Local0) } Method (_SST, 1, NotSerialized) { Store (Zero, Local0) } }
6、Object not found or not accessible from scope ^ (^CPU0._PPC) 把 External (^CPU0._PPC) 修改为: External (\_PR.CPU0._PPC)
7、Method local variable is not initialized (Local0) 错误5的另一种情况错误 Scope (\_SI) { Method (_MSG, 1, NotSerialized) { Store (Local0, Local0) } Method (_SST, 1, NotSerialized) { Store (Local0, Local0) If (LEqual (Arg0, 0x03)) {} If (LEqual (Arg0, 0x01)) {} } } 有两段代码需要修改 Scope (\_SI) { Method (_MSG, 1, NotSerialized) { /* Store (Local0,Local0) */ } Method (_SST, 1, NotSerialized) { /* Store (Local0,Local0) */ If (LEqual (Arg0, 0x03)) {} If (LEqual (Arg0, 0x01)) {} } }
8、Method local variable is not initialized 又一种情况 If (LNot (LEqual (ShiftRight (And (Local1, 0x10),0x03), And (Local2, 0x02)))) Error 1013 - Method local variable is not initialized ^ (Local1) 修改 把 If 那一行的 Local1 修改为 Local2 ,只限于这种情况,其它情况会引起跟多的错误。
9、Missing ResourceSourcestring (required) WordBusNumber (ResourceProducer, MinFixed, MaxFixed,PosDecode, 0x0000, /* Address SpaceGranularity */ 0x0000, /* Address RangeMinimum */ 0x00FF, /* Address RangeMaximum */ 0x0000, /* AddressTranslation Offset */ 0x0100, 0x00) 修改为: WordBusNumber (ResourceProducer, MinFixed, MaxFixed,PosDecode, 0x0000, /* Address SpaceGranularity */ 0x0000, /* Address RangeMinimum */ 0x00FF, /* Address RangeMaximum */ 0x0000, /* AddressTranslation Offset */ 0x0100) 删除0x00
10、Reserved methodmust return a value (_WAK) 仅对于Method(_WAK),其它方法的请看主楼。 在_WAK方法的最后添加 Return (Package (0x02) { Zero, Zero }) 例如: Method (_WAK, 1, NotSerialized) { 原来的代码 ...... Return (Package (0x02) { Zero, Zero }) }
11、Not all control paths return a value 请看主楼 12、Not all control paths return a value 又一种情况 Device (CMB0) { Name (_HID, EisaId ("PNP0C0A")) Name (_UID, 0x01) Name (BATP, Ones) Name (_PCL, Package (0x01) { \_SB }) ... Method (_BTP, 1, NotSerialized) { If (LEqual (\ECFL, Zero)) { Return (0x0F) } Else { Store ("_SB.CMB0._BTP", Debug) 把Debug修改为上面的 If 的 Return的值,对于本例Store ("_SB.CMB0._BTP", 0x0F) } } ... }
13、Object does not exist (括号里有提示的名称) 在DSDT开始的地方 DefinitionBlock () {在这下面添加 External (括号里有提示的名称) 例如: DefinitionBlock (等等名称, 等等名称, 等等名称, 等等名称, 等等名称,等等名称) { External (\C001) 根据提示添加的 External (\_PR.C000) 根据提示添加的
14、Object does not exist ^ (\LOR) If (\LOr (_OSI ("Darwin"), _OSI ("Windows2001"))) 修改为: If (LOr (\_OSI ("Darwin"), \_OSI ("Windows2001"))) 或者修改为: If (LOr (_OSI ("Darwin"), _OSI ("Windows2001")))
15、Operation Region requires ByteAcc 把那一行代码中的AnyAcc改为ByteAcc 16、Possible operator timeout is ignored 把0x****改为0xFFFF
17、Reserved method has too fewarguments (_EJ0 requires 1) 或者Reserved method has too many arguments Method (_EJ0, 0, NotSerialized) 把0改为提示中requires后面的值,本例是1。 Method (_EJ0, 1, NotSerialized)
18、Reserved method must return a value (_PSR) Method (_PSR, 0, NotSerialized) { If (\_SB.PCI0.PIB.EC.ECOK) { Return (\_SB.PCI0.PIB.EC.ADP) } } 修改为: Method (_PSR, 0, NotSerialized) { If (\_SB.PCI0.PIB.EC.ECOK) { Return (0x01) } Else { Return (0x00) } }
19、Reserved method must return a value (_STA) Method (_STA, 0, NotSerialized) { STAL (0x60) } 修改为: Method (_STA, 0, NotSerialized) { Return (STAL (0x60)) }
20、Result is not used, operator has no effect ^ ..... Store (AAXB, MBUF) ShiftRight (BUF2, 0x04) < ------- Error Store (BUF2, Local3) Store (CMER, BUF0) Store (0xFF, BUF1) Store (Zero, BUF2) ..... 修改为: Store (BUF2, Local4) <------- 添加 Store (AAXB, MBUF) Store (BUF2, Local4) <------- 修改 Store (BUF2, Local3) Store (CMER, BUF0) Store (0xFF, BUF1) Store (Zero, BUF2)
21、Result is not used, operator has no effect ^ 另一种情况 And (CTRL, 0x1E) 修改为: And (CTRL, 0x1E, CTRL)
22、String must be entirely alphanumeric (*PNP0A03) 修改为: (PNP0A03)
23、Reserved method has too many arguments ( _GLK requires 0) Method (_GLK, 1, NotSerialized) 修改为:因为提示requires 0,可以把后面的部分删除。 Method (_GLK)
楼下还有其它的相关链接。
|