各主板黑苹果dsdt补丁 您所在的位置:网站首页 b75改biosnvme 各主板黑苹果dsdt补丁

各主板黑苹果dsdt补丁

#各主板黑苹果dsdt补丁| 来源: 网络整理| 查看: 265

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

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

b5488ed9be176e454657bed159a28f2b.png 9afffed108736eea6941630ff4ba2965.gif 话不多说看下面这几个警告:

7a4088c0af849474085089283d0ccacc.png

第一个:3410 3090 Min/Max/Length/Gran are all Zero,but no resource tagp 这个警告

首先定位到错误的位置:

fbc5e58a2b9ea7f04cb7df20e213b14d.png

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

原值是:0X0000

改为:0X0001

警告消失

第二个警告:

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

定位警告位置:

672df1506b596f68cbc4a6a8ae6c03c9.png

原代码是:

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)

定位到警告的位置:

88dcb61fce7b0b521b7fcdfad06cad0b.png

有警告的代码:

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)

定位警告位置:

ccf2782775655deb2bb35083242b2217.png

有警告的代码段:

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)

定位到警告的位置:

5d5978871e8ca4d3c6df00691a73fbb8.png

错误代码:

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)

定位到错误的地方:

f9c92d14d57bba075bd1036169f1e374.png

错误代码:

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 修正:

5fefd6a0a7ef18422fa5b9090fe02a3d.png

定位到有警告的地方:

f02597e5d48ba04ee0339e286a65c447.png

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)

}

}

b5488ed9be176e454657bed159a28f2b.png

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



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有