卿云在天 发表于 2017-11-10 18:51

我的AMD 迪兰恒进 RX580 8G 按照楼主教程,加入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)
                }
            }
      }

结果是:
1. 扔掉了WhateverGreen.kext已经完美驱动
2. 问题是系统信息,显示的显卡型号错误,请看下图正确的和错误的比较:





请大家帮忙分析一下

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

jiangzhourui 发表于 2017-11-6 22:17 https://www.pcbeta.com/static/image/common/back.gif
显卡是rx580,用whatevergreen时io检测位置在pci0-peg0-gfx0,然后用上面的代码做成hotpatch,然后重启在用 ...

同样的问题,我的显示出来的是:

AMD R9 xxx:

芯片组型号:        AMD R9 xxx
类型:        GPU
总线:        PCIe
插槽:        PCIe,,
PCIe Lane 宽度:        x16
VRAM(总和):        8 GB
供应商:        AMD (0x1002)
设备 ID:        0x67df
修正版 ID:        0x00e7
ROM 修正版:        WEAR-112-2017-10-22
EFI 驱动程序版本:        WEAR-112-2017-10-22,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
Metal:        支持
显示器:
SyncMaster:
分辨率:        1440 x 900 @ 60 Hz
帧缓冲深度:        30 位彩色 (ARGB2101010)
显示器序列号:        HVJQ715221
镜像:        关
联机:        是
旋转:        支持
自动调节亮度:        否
连接类型:        模拟 VGA 或模拟 Over DVI-I
适配器固件版本:        0.00
C24F390:
分辨率:        1920 x 1080 @ 60 Hz
帧缓冲深度:        30 位彩色 (ARGB2101010)
显示器序列号:        HTQHA00985
主显示器:        是
镜像:        关
联机:        是
旋转:        支持
自动调节亮度:        否

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

卿云在天 发表于 2017-11-10 19:06 https://www.pcbeta.com/static/image/common/back.gif
同样的问题,我的显示出来的是:

AMD R9 xxx:


Buffer 值长度设置有误,在我的SSDT中(下面是你的)Return (Package (0x26)这一行,设置超过0x1E后面的内容将无法显示,猜测可能是存在着某种限制,包括后面出现一大堆逗号的也是,字节长度被自动填补。
"AAPL,slot-name",
                Buffer (0x06)
                {
                  "PCI-E"
                },

"ATY,EFIVersion",
                Buffer (0x14)
                {
                  "WEAR-112-2017-10-22"
                },
另外,请精简你的注入内容,可能太多了,显卡名称建议保留model去掉name。

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

本帖最后由 maojinbing 于 2017-11-11 13:39 编辑

“连接类型:      模拟 VGA 或模拟 Over DVI-I.”已经告诉我们,无法对应任何FB,不能跟早期A卡比,那些可以对应到FB,所有显卡能得到正确的芯片型号。已RX560为例
ATOM BIOS Rom:
        SubsystemVendorID: 0x1da2 SubsystemID: 0xe348
        IOBaseAddress: 0x0000
        Filename: 348X05MF.U32
        BIOS Bootup Message:
E348030 P21 XT GDDR5 256Mx32 4GB 214e/300m                                 

PCI ID: 1002:67ff
Connector at index 0
        Type [@offset 40680]: DisplayPort (10)
        Encoder [@offset 40684]: INTERNAL_UNIPHY1 (0x20)
        i2cid [@offset 40754]: 0x90, OSX senseid: 0x1
        HotPlugID: 5
Connector at index 1
        Type [@offset 40690]: HDMI-A (11)
        Encoder [@offset 40694]: INTERNAL_UNIPHY1 (0x20)
        i2cid [@offset 40781]: 0x93, OSX senseid: 0x4
        HotPlugID: 3
Connector at index 2
        Type [@offset 40700]: DVI-D (3)
        Encoder [@offset 40704]: INTERNAL_UNIPHY (0x1e)
        i2cid [@offset 40808]: 0x94, OSX senseid: 0x5
        HotPlugID: 4
11348X05MF.U32:

E348030 P21 XT GDDR5 256Mx32 4GB 214e/300m                                 

Subsystem Vendor ID: 1da2
       Subsystem ID: e348
Object Header Structure Size: 222
Connector Object Table Offset: 34
Router Object Table Offset: 0
Encoder Object Table Offset: a1
Display Path Table Offset: 12
Connector Object Id which is
        encoder obj id which is enc 0x2)] linkb: false
Connector Object Id which is
        encoder obj id which is enc 0x3)] linkb: true
Connector Object Id which is
        encoder obj id which is enc 0x0)] linkb: false
HDMI端口可以被系统准确识别,其他2个端口我认为需要修改FB值,暂时未获取到资料

disontsie 发表于 2017-11-11 15:53

mark住到时候看看。7670m

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

kaeserlin 发表于 2017-11-11 13:22 https://www.pcbeta.com/static/image/common/back.gif
Buffer 值长度设置有误,在我的SSDT中(下面是你的)这一行,设置超过0x1E后面的内容将无法显示,猜测可能 ...

感谢楼主回复!

目前还没有测试,已经用回了whatEverGreen了,不折腾了

wyhtc 发表于 2017-11-16 00:00

本帖最后由 wyhtc 于 2017-11-16 00:03 编辑




楼主在吗?我的Vega弄hotpatch后,位置跑到了display@0下,我只是打算改个名,但是跑到这个位置下后,改名无效,依然RX xxx,求解。。附上我的SSDT和IOReg。。

   

limurphy 发表于 2017-11-16 07:39

wyhtc 发表于 2017-11-16 00:00 https://www.pcbeta.com/static/image/common/back.gif
楼主在吗?我的Vega弄hotpatch后,位置跑到了display@0下,我只是打算改个名,但是跑到这个位置下后, ...

用 hotpatch 的話,clover -> dsdt patch-> 要加入 find 5045 4750 replace 4746 5830commnad PEGP -> GFX0
SSDT-VEGA.aml內         Name (_ADR, Zero)// _ADR: Address   <- 把這行註解掉。

wyhtc 发表于 2017-11-16 13:10

limurphy 发表于 2017-11-16 07:39 https://www.pcbeta.com/static/image/common/back.gif
用 hotpatch 的話,clover -> dsdt patch-> 要加入 find 5045 4750 replace 4746 5830commnad PEGP ->...

谢谢~晚上我回家试试看

jie112 发表于 2017-11-19 12:34

谢谢楼主。我去试试

livus 发表于 2017-11-19 18:48

谢谢楼主 使用这个 我变色龙引导的 amd fx 8320 + rx460 可以单卡启动了

zouyanggary 发表于 2017-11-25 02:44

大佬,这个真是极好的

aslhyvv1 发表于 2017-11-28 20:00

谢谢楼主的分享

obenzzz 发表于 2018-1-29 20:56

感谢分享~~~~~

zfqq 发表于 2018-1-30 16:17

太复杂了 有没有傻瓜式的解决办法

comnara 发表于 2018-2-9 20:41

lovest.fdh 发表于 2018-2-13 00:32

comnara 发表于 2018-2-10 00:41 https://www.pcbeta.com/static/image/common/back.gif
Buffer ()里的值是怎么获取的呢?

留空就行,

juyaobin 发表于 2018-2-13 01:42

cosmid 发表于 2018-3-5 14:43

谢谢分享,支持楼主。

zhoufeng1209 发表于 2018-3-25 16:33

hotpatch要如何使用?
页: 1 2 3 4 5 6 [7] 8 9 10
查看完整版本: 通过修改DSDT解决部分AMD显卡唤醒以及R9 280X安装界面黑屏