卿云在天 发表于 2017-11-10 19:35

A卡不要WhatEverGreen.kext也可以成功驱动,离完美进了一步

1、配置
主板:GA-Sniper B6 B85
CPU: i7-4790
显卡:迪兰RX580 8G

原先是Lilu.kext + WhatEverGreen.kext驱动显卡,关于本机显示如下:


现在利用dsdt驱动显卡,代码如下:
      Device (PEG0)
      {
            Name (_ADR, 0x00010000)// _ADR: Address
            Device (GFX0)
            {
                Name (_ADR, Zero)// _ADR: Address
                OperationRegion (PCIB, PCI_Config, Zero, 0x0100)
                Field (PCIB, AnyAcc, NoLock, Preserve)
                {
                  Offset (0x10),
                  BAR0,   32,
                  BAR1,   32,
                  BAR2,   64,
                  BAR4,   32,
                  BAR5,   32
                }

                Method (_INI, 0, NotSerialized)// _INI: Initialize
                {
                  If (LEqual (BAR5, Zero))
                  {
                        Store (BAR2, Local0)
                  }
                  Else
                  {
                        Store (BAR5, Local0)
                  }

                  OperationRegion (GREG, SystemMemory, And (Local0, 0xFFFFFFFFFFFFFFF0), 0x8000)
                  Field (GREG, AnyAcc, NoLock, Preserve)
                  {
                        Offset (0x6800),
                        GENA,   32,
                        GCTL,   32,
                        LTBC,   32,
                        Offset (0x6810),
                        PSBL,   32,
                        SSBL,   32,
                        PTCH,   32,
                        PSBH,   32,
                        SSBH,   32,
                        Offset (0x6848),
                        FCTL,   32,
                        Offset (0x6EF8),
                        MUMD,   32
                  }

                  Store (Zero, FCTL)
                  Store (Zero, PSBH)
                  Store (Zero, SSBH)
                  Store (Zero, LTBC)
                  Store (One, GENA)
                  Store (Zero, MUMD)
                }

                Method (_DSM, 4, NotSerialized)// _DSM: Device-Specific Method
                {
                  If (LEqual (Arg2, Zero))
                  {
                        Return (Buffer (One)
                        {
                           0x03                                          
                        })
                  }

                  Return (Package (0x26)
                  {
                        "AAPL,slot-name",
                        Buffer (0x07)
                        {
                            "PCIe"
                        },

                        "VRAM,totalsize",
                        Buffer (0x04)
                        {
                           0x00, 0x00, 0x02, 0x00                        
                        },

                        "@0,name",
                        Buffer (0x1A)
                        {
                            "ATY,AMD,RadeonFramebuffer"
                        },

                        "@0,compatible",
                        Buffer (0x1A)
                        {
                            "ATY,AMD,RadeonFramebuffer"
                        },

                        "@0,device_type",
                        Buffer (0x08)
                        {
                            "display"
                        },

                        "@1,name",
                        Buffer (0x1A)
                        {
                            "ATY,AMD,RadeonFramebuffer"
                        },

                        "@2,name",
                        Buffer (0x1A)
                        {
                            "ATY,AMD,RadeonFramebuffer"
                        },

                        "@3,name",
                        Buffer (0x1A)
                        {
                            "ATY,AMD,RadeonFramebuffer"
                        },

                        "@4,name",
                        Buffer (0x1A)
                        {
                            "ATY,AMD,RadeonFramebuffer"
                        },

                        "ATY,Card#",
                        Buffer (0x14)
                        {
                            "WEAR-112-2017-10-22"
                        },

                        "ATY,Copyright",
                        Buffer (0x25)
                        {
                            "(C) 1988-2017, AMD Technologies Inc."
                        },

                        "ATY,EFIVersion",
                        Buffer (0x41)
                        {
                            "WEAR-112-2017-10-22"
                        },

                        "ATY,Rom#",
                        Buffer (0x14)
                        {
                            "WEAR-112-2017-10-22"
                        },

                        "ATY,VendorID",
                        Buffer (0x02)
                        {
                           0x02, 0x10                                    
                        },

                        "ATY,DeviceID",
                        Buffer (0x02)
                        {
                           0xDF, 0x67                                    
                        },

                        "device_type",
                        Buffer (0x20)
                        {
                            "ATY,AMD,RadeonFramebufferParent"
                        },

                        "model",
                        Buffer (0x17)
                        {
                            "AMD Radeon Pro RX580"
                        },

                        "name",
                        Buffer (0x15)
                        {
                            "AMD Radeon Pro RX580"
                        },

                        "hda-gfx",
                        Buffer (0x0A)
                        {
                            "onboard-1"
                        }
                  })
                }
            }

            Device (HDAU)
            {
                Name (_ADR, One)// _ADR: Address
                Method (_DSM, 4, NotSerialized)// _DSM: Device-Specific Method
                {
                  Store (Package (0x02)
                        {
                            "hda-gfx",
                            Buffer (0x0A)
                            {
                              "onboard-1"
                            }
                        }, Local0)
                  DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                  Return (Local0)
                }
            }
      }
成功驱动,扔掉WhatEverGreen.kext
不过关于本机显示不正确,如下:


maojinbing 发表于 2017-11-11 13:22

楼主测试一下HDMI音频和睡眠,我就不说了,呵呵函数名有些没弄懂

maojinbing 发表于 2017-11-11 13:45

ATY,Card#应该类似:E348030 P21 XT GDDR5 256Mx32 4GB 214e/300mATY,Rom# 应该类似 348X05MF.U32

maojinbing 发表于 2017-11-11 13:51

按照我的测试RX560HDMI端口能被识别而DP 、DDV-D(不存在这样的端口,只有DDV-I)被没有完全识别,似乎用类似通用驱动代替。

wchb 发表于 2017-11-11 18:44

楼主的显示器好小,19寸的吧

munc 发表于 2017-11-11 19:24

应该还是你dsdt,没写对,你指定fbname了?

卿云在天 发表于 2017-11-12 10:21

maojinbing 发表于 2017-11-11 13:22 https://www.pcbeta.com/static/image/common/back.gif
楼主测试一下HDMI音频和睡眠,我就不说了,呵呵函数名有些没弄懂

睡眠唤醒没问题,hdmi输出可以的,请看图





卿云在天 发表于 2017-11-12 10:22

munc 发表于 2017-11-11 19:24 https://www.pcbeta.com/static/image/common/back.gif
应该还是你dsdt,没写对,你指定fbname了?



没有frameBuffer,真的没有!!

卿云在天 发表于 2017-11-12 10:24

maojinbing 发表于 2017-11-11 13:51 https://www.pcbeta.com/static/image/common/back.gif
按照我的测试RX560HDMI端口能被识别而DP 、DDV-D(不存在这样的端口,只有DDV-I)被没有完全识别, ...

RX580 迪兰的,

hdmi x1,我用了三星的24寸显示器,支持的,hdmi没压力
dp x4,我用了dp转vga,19寸老显示器,也支持的,识别完美

都完美吧!

lovest.fdh 发表于 2017-11-12 11:07

Buffer (0xXXX)
看到一堆错的,删除掉所有0xXXXXXX重新编译
比方说你没有发现你的EFI版本好多,,,,,,,,,,咩。

munc 发表于 2017-11-12 13:35

怎么可能没有?

munc 发表于 2017-11-12 13:35

dsdt自己做的?不是吧

金色追风 发表于 2017-11-12 20:11

把你DSDT中的“ATY,AMD,RadeonFramebufferParent”,全部换成“ATY,Dayman",就能正常显示你的显卡名称了

munc 发表于 2017-11-14 20:05

追风的就是580啊。

maojinbing 发表于 2017-11-14 20:42

https://bbs.pcbeta.com/forum.php?mod=redirect&goto=findpost&ptid=1768779&pid=47829172

lzcubchg 发表于 2017-11-14 21:47

看看。。。....

zhuoyue8552 发表于 2017-11-15 09:28

搞不懂,我的RX560谁帮忙做一个DSDT谢谢了 !

sunshineondays 发表于 2017-11-27 15:51

还是用VEGA来得省心,可惜那功耗要上天。

huang____ 发表于 2018-5-31 10:32

楼主,我想问一下,你的显卡DSDT是根据什么教程来修改的?

Baniel 发表于 2018-6-5 14:52

谢谢分享!!
页: [1] 2
查看完整版本: A卡不要WhatEverGreen.kext也可以成功驱动,离完美进了一步