失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 各主板黑苹果dsdt补丁_关于B75主板的DSDT警告修改和睡眠相关修改

各主板黑苹果dsdt补丁_关于B75主板的DSDT警告修改和睡眠相关修改

时间:2021-12-17 01:08:54

相关推荐

各主板黑苹果dsdt补丁_关于B75主板的DSDT警告修改和睡眠相关修改

最近新装了一台机器:主板微星的B75的黑苹果电脑,无法睡眠,点睡眠就秒醒,DSDT里面的错误也都改正了,觉得应该没有问题了,结果上机,睡20分钟就醒了,今天抽了点时间将这几个警告处理掉。

下面就是主板的DSDT的警告问题,一般只要改正了错误,基本是没有什么问题的,但我这块板子不知道怎么回事。还有一点要说明一下的,我这块B75主板的BIOS里有个选项在电源里有个选项是关于睡眠的,有两个选项:BIOS和OS,如发现不能睡的可以到BIOS里去看看,只要改成OS就可以睡了,当然这只针对黑苹果。

话不多说看下面这几个警告:第一个:3410 3090 Min/Max/Length/Gran are all Zero,but no resource tagp 这个警告

首先定位到错误的位置:

这个警告只要改下面的一个数值:

原值是:0X0000

改为:0X0001

警告消失

第二个警告:

3489 3130 Result is not used,possible operator timeout will be missed

定位警告位置:

原代码是:

Mutex (MUT0, 0x00)

Method (ENFG, 1, NotSerialized)

{

Acquire (MUT0, 0x0FFF)

Store (0x87, INDX)

Store (0x87, INDX)

Store (Arg0, LDN)

}

改正:(这段代码来自Z77主板,其实同型号的主板可以相互通用,也是借鉴一下来修正错误)

Mutex (MUT0, 0x00)

Method (ENFG, 1, NotSerialized)

{

Store (0x87, INDX)

Store (One, INDX)

Store (0x55, INDX)

If (LEqual (SP1O, 0x2E))

{

Store (0x55, INDX)

}

Else

{

Store (0xAA, INDX)

}

Store (Arg0, LDN)

}

第三个警告:

3601 3115 Not all control paths return a value (DSTA)

定位到警告的位置:

有警告的代码:

Method (DSTA, 1, NotSerialized)

{

ENFG (CGLD (Arg0))

Store (ACTR, Local0)

EXFG ()

If (LEqual (Local0, 0xFF))

{

Return (Zero)

}

And (Local0, One, Local0)

If (LGreaterEqual (Arg0, 0x10))

{

Or (IOES, ShiftLeft (Local0, And (Arg0, 0x0F)), IOES)

}

Else

{

Or (IOST, ShiftLeft (Local0, Arg0), IOST)

}

If (Local0)

{

Return (0x0F)

}

ElseIf (LGreaterEqual (Arg0, 0x10))

{

Store (IOES, Local0)

}

Else

{

Store (IOST, Local0)

}

}

修改为以下代码:

Method (DSTA, 1, NotSerialized)

{

ENFG (CGLD (Arg0))

Store (ACTR, Local0)

EXFG ()

If (LEqual (Local0, 0xFF))

{

Return (Zero)

}

And (Local0, One, Local0)

If (LGreaterEqual (Arg0, 0x10))

{

Or (IOES, ShiftLeft (Local0, And (Arg0, 0x0F)), IOES)

}

Else

{

Or (IOST, ShiftLeft (Local0, Arg0), IOST)

}

If (Local0)

{

Return (0x0F)

}

ElseIf (LGreaterEqual (Arg0, 0x10))

{

Store (IOES, Local0)

}

Else

{

Store (IOST, Local0)

}

Return (Zero) 只需要在最后加一个返回值就可以消除这个警告。

}

第四个警告:

9975 3144 Method Local is set but never used (Local0)

定位警告位置:

有警告的代码段:

Scope (_SB.PCI0)

{

Method (_INI, 0, NotSerialized) // _INI: Initialize

{

Store (0x07D0, OSYS)

If (CondRefOf (_OSI, Local0))

{

If (_OSI ("Windows 2001"))

{

Store (0x07D1, OSYS)

}

If (_OSI ("Windows 2001 SP1"))

{

Store (0x07D1, OSYS)

}

修改为:

Scope (_SB.PCI0)

{

Method (_INI, 0, NotSerialized) // _INI: Initialize

{

Store (0x07D0, OSYS)

If (CondRefOf (_OSI)) 只要修改一下后面的数值就可以了很简单的一个警告。

{

If (_OSI ("Windows 2001"))

{

Store (0x07D1, OSYS)

}

第五个警告:

11018 3115 Not all control paths rerurn a value (_HID)

定位到警告的位置:

错误代码:

Device (_SB.PCI0.LPCB.TPM)

{

Method (_HID, 0, NotSerialized) // _HID: Hardware ID

{

If (TCMF) {}

Else

{

Return (0x0201D824)

}

}

修改为:

Device (_SB.PCI0.LPCB.TPM)

{

Method (_HID, 0, NotSerialized) // _HID: Hardware ID

{

If (TCMF) {}

Else

{

Return (0x0201D824)

}

Return (Zero) 直接给它加一个返回值,同时5个和6个警告都消失了。

}

第六个警告在修改第五个警告的同时第六个警告自动修改好了。

第七个警告:

11487 3136 Non-hex letters must be upper case (pnp0c14)

定位到错误的地方:

错误代码:

Scope (_SB)

{

Device (WMIO)

{

Mutex (WMIX, 0x01)

Name (_HID, "pnp0c14") // _HID: Hardware ID

Name (_UID, Zero) // _UID: Unique ID

Name (BUF4, Buffer (0x04)

{

0x00, 0x00, 0x00, 0x00

})

CreateByteField (BUF4, Zero, BF00)

CreateByteField (BUF4, One, BF01)

CreateByteField (BUF4, 0x02, BF02)

CreateByteField (BUF4, 0x03, BF03)

Name (_WDG, Buffer (0x14)

{

/* 0000 */ 0xCE, 0x93, 0x05, 0xA8, 0x77, 0x23, 0xDA, 0x11,

/* 0008 */ 0xB0, 0x12, 0xB6, 0x22, 0x20, 0x12, 0x07, 0x27,

/* 0010 */ 0x4D, 0x49, 0x01, 0x02

})

OperationRegion (CMOS, SystemIO, 0x72, 0x02)

Field (CMOS, ByteAcc, NoLock, Preserve)

{

CMIN, 8,

CMDA, 8

}

修改为:

Scope (_SB)

{

Device (WMIO)

{

Mutex (WMIX, 0x01)

Name (_HID, "PNP0c14") // _HID: Hardware ID 这个最简单只需要将小写的"pnp"改成大写的“PNP”即可

Name (_UID, Zero) // _UID: Unique ID

Name (BUF4, Buffer (0x04)

至此警告都修正了,同时睡眠也可以了。

关于这个:

_REG has no corresponding Operation Region 修正:

定位到有警告的地方:

Scope (_SB.PCI0.SAT0)

{

Name (REGF, One)

Method (_REG, 2, NotSerialized) // _REG: Region Availability

{

If (LEqual (Arg0, 0x02))

{

Store (Arg1, REGF)

}

}

改正为:

Scope (_SB.PCI0.SAT0)

{

Name (REGF, One)

Method (REG, 2, NotSerialized) // _REG: Region Availability 只要改REG前面的“—”去掉就可以了。

{

If (LEqual (Arg0, 0x02))

{

Store (Arg1, REGF)

}

}

希望能帮到大家,其实修改DSDT其实很简单,只要用对工具,这东西不是编程没有想的那么复杂,我也知道有人会说我可以打补丁啊何必这么麻烦,那你就当我没有说,DSDT谁用谁知道。

如果觉得《各主板黑苹果dsdt补丁_关于B75主板的DSDT警告修改和睡眠相关修改》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。