Contribute
Register

MacPro6,1 BRG0 injection does not work

Status
Not open for further replies.
Joined
May 10, 2012
Messages
146
Motherboard
Asus X299 PRO/SE
CPU
i9-10920X
Graphics
6900XT, W6600, W6800
Mac
  1. Mac Pro
Trying to inject BRG0 SSDT on a MacPro6,1 with 2 internal Discrete cards and 6800XT attached through a thunderbolt expansion.
Code:
/*
 * Intel ACPI Component Architecture
 * AML/ASL+ Disassembler version 20200925 (64-bit version)
 * Copyright (c) 2000 - 2020 Intel Corporation
 *
 * Disassembling to symbolic ASL+ operators
 *
 * Disassembly of iASLxV1T9R.aml, Thu Jan 12 21:51:19 2023
 *
 * Original Table Header:
 *     Signature        "SSDT"
 *     Length           0x000001B5 (437)
 *     Revision         0x02
 *     Checksum         0xF6
 *     OEM ID           "ACDT"
 *     OEM Table ID     "BRG0"
 *     OEM Revision     0x00000000 (0)
 *     Compiler ID      "INTL"
 *     Compiler Version 0x20200925 (538970405)
 */
DefinitionBlock ("", "SSDT", 2, "ACDT", "BRG0", 0x00000000)
{
    External (_SB_.PCI0.PEG0.BR00.BR11.UFS1.DSB1.UPS0, DeviceObj)
    External (DTGP, MethodObj)    // 5 Arguments

    Scope (\_SB.PCI0.PEG0.BR00.BR11.UFS1.DSB1.UPS0)
    {
        Device (BRG0)
        {
            Name (_ADR, 0x00010000)  // _ADR: Address
            Device (BRG1)
            {
                Name (_ADR, Zero)  // _ADR: Address
                Method (_STA, 0, NotSerialized)  // _STA: Status
                {
                    If (_OSI ("Darwin"))
                    {
                        Return (0x0F)
                    }
                    Else
                    {
                        Return (Zero)
                    }
                }

                Device (BRG2)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    Device (GFX1)
                    {
                        Name (_ADR, Zero)  // _ADR: Address
                        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                        {
                            Local0 = Package (0x06)
                                {
                                    "ATY,DeviceName",
                                    Buffer (0x07)
                                    {
                                        "W6800X"
                                    },

                                    "ATY,FamilyName",
                                    Buffer (0x0B)
                                    {
                                        "Radeon Pro"
                                    },

                                    "model",
                                    Buffer (0x16)
                                    {
                                        "AMD Radeon PRO W6800X"
                                    }
                                }
                            DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                            Return (Local0)
                        }
                    }

                    Device (HDAU)
                    {
                        Name (_ADR, One)  // _ADR: Address
                        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                        {
                            If ((Arg2 == Zero))
                            {
                                Return (Buffer (One)
                                {
                                     0x03                                             // .
                                })
                            }

                            Return (Package (0x06)
                            {
                                "model",
                                Buffer (0x13)
                                {
                                    "Navi 21 HDMI Audio"
                                },

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

                                "layout-id",
                                Buffer (0x04)
                                {
                                     0x07, 0x00, 0x00, 0x00                           // ....
                                }
                            })
                        }
                    }
                }
            }
        }
    }
}

Here is the current path:
Code:
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/PEG0@1/IOPP/BR00@0/IOPP/BR11@2/IOPP/UFS1@0/IOPP/DSB1@3/IOPP/UPS0@0/IOPP/pci-bridge@1/IOPP/pci-bridge@0/IOPP/pci-bridge@0/IOPP/display@0



Attached is the IOregistry and the original DSDT/SSDT's

Any suggestion of what might be wrong?
 

Attachments

  • MacPro_arw4.ioreg.zip
    3.8 MB · Views: 28
  • dsdt-backup-mac-pro-2013.zip
    17.1 KB · Views: 27
Last edited:
Any thoughts @CaseySJ ?
Hello @zirkaiva,

Please note that we cannot inject or modify IOReg properties for any device connected via Thunderbolt. If you install the GPU into an internal PCIe slot then you'll be able to inject and/or modify properties.

Additionally, the SSDT shown in Post 1 is not needed (or at least it should not be needed). The SSDT does not appear to be doing anything consequential. Even the attempt to inject Layout ID 7 for HDAU is not valid. We cannot and should not inject Layout IDs for HDMI/DP audio. AppleALC uses Layout IDs only for PCH-based audio (e.g. Realtek ALC-xxx).
 
Last edited:
Please note that we cannot inject or modify IOReg properties for any device connected via Thunderbolt.
Hi @CaseySJ . This is odd. See this SSDT:
Code:
/*
 * Intel ACPI Component Architecture
 * AML/ASL+ Disassembler version 20221020 (64-bit version)
 * Copyright (c) 2000 - 2022 Intel Corporation
 *
 * Disassembling to symbolic ASL+ operators
 *
 * Disassembly of /home/g5/Downloads/SSDT-TbtGCTR.aml, Sat Jan 14 17:31:29 2023
 *
 * Original Table Header:
 *     Signature        "SSDT"
 *     Length           0x0000042D (1069)
 *     Revision         0x01
 *     Checksum         0x73
 *     OEM ID           "APPLE "
 *     OEM Table ID     "TbtGCTR"
 *     OEM Revision     0x00000000 (0)
 *     Compiler ID      "INTL"
 *     Compiler Version 0x20200925 (538970405)
 */
DefinitionBlock ("", "SSDT", 1, "APPLE ", "TbtGCTR", 0x00000000)
{
    External (_SB_.PCI0.IOU2.I2PS.PPB4.PXS4, DeviceObj)
    External (DTGP, MethodObj)    // 5 Arguments
    External (OSDW, MethodObj)    // 0 Arguments

    Scope (\_SB.PCI0.IOU2.I2PS.PPB4.PXS4)
    {
        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
        {
            If (OSDW ())
            {
                If ((Arg0 == ToUUID ("a0b5b7c6-1318-441c-b0c9-fe695eaf949b") /* Unknown UUID */))
                {
                    Local0 = Package (0x02)
                        {
                            "PCI-Thunderbolt",
                            One
                        }
                    DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                    Return (Local0)
                }
            }

            Return (Zero)
        }

        Device (DSB0)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
            {
                If (OSDW ())
                {
                    If ((Arg0 == ToUUID ("a0b5b7c6-1318-441c-b0c9-fe695eaf949b") /* Unknown UUID */))
                    {
                        Local0 = Package (0x04)
                            {
                                "PCIHotplugCapable",
                                Zero,
                                "model",
                                "GC-TITAN RIDGE I/O Card"
                            }
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }
                }

                Return (Zero)
            }

            Device (NHI0)
            {
                Name (_ADR, Zero)  // _ADR: Address
                Name (_STR, Unicode ("Thunderbolt"))  // _STR: Description String
                Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                {
                    Local0 = Package (0x06)
                        {
                            "linkDetails",
                            Buffer (0x08)
                            {
                                 0x08, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00   // ........
                            },

                            "ThunderboltDROM",
                            Buffer (0x73)
                            {
                                /* 0000 */  0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xED,  // q.......
                                /* 0008 */  0x00, 0x0A, 0x03, 0xE0, 0x22, 0x01, 0x66, 0x00,  // ....".f.
                                /* 0010 */  0xED, 0x00, 0x07, 0xA2, 0x01, 0x01, 0x08, 0x81,  // ........
                                /* 0018 */  0x80, 0x02, 0x80, 0x00, 0x00, 0x00, 0x08, 0x82,  // ........
                                /* 0020 */  0x90, 0x01, 0x80, 0x00, 0x00, 0x00, 0x08, 0x83,  // ........
                                /* 0028 */  0x80, 0x04, 0x80, 0x01, 0x00, 0x00, 0x08, 0x84,  // ........
                                /* 0030 */  0x90, 0x03, 0x80, 0x01, 0x00, 0x00, 0x05, 0x85,  // ........
                                /* 0038 */  0x50, 0x00, 0x00, 0x05, 0x86, 0x50, 0x00, 0x00,  // P....P..
                                /* 0040 */  0x02, 0x87, 0x0B, 0x88, 0x20, 0x01, 0x00, 0x64,  // .... ..d
                                /* 0048 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x89, 0x80,  // ........
                                /* 0050 */  0x05, 0x8A, 0x50, 0x40, 0x00, 0x05, 0x8B, 0x50,  // [email protected]
                                /* 0058 */  0x40, 0x00, 0x0D, 0x01, 0x41, 0x70, 0x70, 0x6C,  // @...Appl
                                /* 0060 */  0x65, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x00, 0x0C,  // e Inc...
                                /* 0068 */  0x02, 0x4D, 0x61, 0x63, 0x69, 0x6E, 0x74, 0x6F,  // .Macinto
                                /* 0070 */  0x73, 0x68, 0x00                                 // sh.
                            },

                            "ThunderboltConfig",
                            Buffer (0x20)
                            {
                                /* 0000 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // ........
                                /* 0008 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // ........
                                /* 0010 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // ........
                                /* 0018 */  0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00   // ........
                            }
                        }
                    DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                    Return (Local0)
                }
            }
        }

        Device (DSB1)
        {
            Name (_ADR, 0x00010000)  // _ADR: Address
            Name (_SUN, 0x04)  // _SUN: Slot User Number
            Device (UPS0)
            {
                Name (_ADR, Zero)  // _ADR: Address
            }
        }

        Device (DSB2)
        {
            Name (_ADR, 0x00020000)  // _ADR: Address
            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
            {
                If (OSDW ())
                {
                    If ((Arg0 == ToUUID ("a0b5b7c6-1318-441c-b0c9-fe695eaf949b") /* Unknown UUID */))
                    {
                        Local0 = Package (0x02)
                            {
                                "PCIHotplugCapable",
                                Zero
                            }
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }
                }

                Return (Zero)
            }

            Device (XHC1)
            {
                Name (_ADR, Zero)  // _ADR: Address
                Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                {
                    Local0 = Package (0x04)
                        {
                            "USBBusNumber",
                            Zero,
                            "AAPL,xhci-clock-id",
                            One
                        }
                    DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                    Return (Local0)
                }

                Device (RHUB)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    Device (SSP1)
                    {
                        Name (_ADR, 0x03)  // _ADR: Address
                        Name (_UPC, Package (0x04)  // _UPC: USB Port Capabilities
                        {
                            0xFF,
                            0x09,
                            Zero,
                            Zero
                        })
                        Name (_PLD, Package (0x01)  // _PLD: Physical Location of Device
                        {
                            ToPLD (
                                PLD_Revision           = 0x1,
                                PLD_IgnoreColor        = 0x1,
                                PLD_Red                = 0x0,
                                PLD_Green              = 0x0,
                                PLD_Blue               = 0x0,
                                PLD_Width              = 0x0,
                                PLD_Height             = 0x0,
                                PLD_UserVisible        = 0x1,
                                PLD_Dock               = 0x0,
                                PLD_Lid                = 0x0,
                                PLD_Panel              = "UNKNOWN",
                                PLD_VerticalPosition   = "UPPER",
                                PLD_HorizontalPosition = "LEFT",
                                PLD_Shape              = "UNKNOWN",
                                PLD_GroupOrientation   = 0x0,
                                PLD_GroupToken         = 0x0,
                                PLD_GroupPosition      = 0x0,
                                PLD_Bay                = 0x0,
                                PLD_Ejectable          = 0x0,
                                PLD_EjectRequired      = 0x0,
                                PLD_CabinetNumber      = 0x0,
                                PLD_CardCageNumber     = 0x0,
                                PLD_Reference          = 0x0,
                                PLD_Rotation           = 0x0,
                                PLD_Order              = 0x0,
                                PLD_VerticalOffset     = 0x0,
                                PLD_HorizontalOffset   = 0x0)

                        })
                        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                        {
                            Local0 = Package (0x02)
                                {
                                    "UsbCPortNumber",
                                    One
                                }
                            DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                            Return (Local0)
                        }
                    }

                    Device (SSP2)
                    {
                        Name (_ADR, 0x04)  // _ADR: Address
                        Name (_UPC, Package (0x04)  // _UPC: USB Port Capabilities
                        {
                            0xFF,
                            0x09,
                            Zero,
                            Zero
                        })
                        Name (_PLD, Package (0x01)  // _PLD: Physical Location of Device
                        {
                            ToPLD (
                                PLD_Revision           = 0x1,
                                PLD_IgnoreColor        = 0x1,
                                PLD_Red                = 0x0,
                                PLD_Green              = 0x0,
                                PLD_Blue               = 0x0,
                                PLD_Width              = 0x0,
                                PLD_Height             = 0x0,
                                PLD_UserVisible        = 0x1,
                                PLD_Dock               = 0x0,
                                PLD_Lid                = 0x0,
                                PLD_Panel              = "UNKNOWN",
                                PLD_VerticalPosition   = "UPPER",
                                PLD_HorizontalPosition = "LEFT",
                                PLD_Shape              = "UNKNOWN",
                                PLD_GroupOrientation   = 0x0,
                                PLD_GroupToken         = 0x0,
                                PLD_GroupPosition      = 0x0,
                                PLD_Bay                = 0x0,
                                PLD_Ejectable          = 0x0,
                                PLD_EjectRequired      = 0x0,
                                PLD_CabinetNumber      = 0x0,
                                PLD_CardCageNumber     = 0x0,
                                PLD_Reference          = 0x0,
                                PLD_Rotation           = 0x0,
                                PLD_Order              = 0x0,
                                PLD_VerticalOffset     = 0x0,
                                PLD_HorizontalOffset   = 0x0)

                        })
                        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                        {
                            Local0 = Package (0x02)
                                {
                                    "UsbCPortNumber",
                                    0x02
                                }
                            DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                            Return (Local0)
                        }
                    }
                }
            }
        }

        Device (DSB4)
        {
            Name (_ADR, 0x00040000)  // _ADR: Address
            Name (_SUN, 0x04)  // _SUN: Slot User Number
            Device (UPS0)
            {
                Name (_ADR, Zero)  // _ADR: Address
            }
        }
    }
}
This is a Thunderbolt device injection. Am I missing something?

Edit: I think I got it. These device properties are injected at the devices integrated in the Thunderbolt card. But Any device connected to the Thunderbolt card cannot accept injected properties. Is this correct?
 
Last edited:
Edit: I think I got it. These device properties are injected at the devices integrated in the Thunderbolt card. But Any device connected to the Thunderbolt card cannot accept injected properties. Is this correct?
Yes, correct. My previous reply states just that:

“…for any device connected via Thunderbolt”

Moreover, there does not appear to be any need to inject those properties.
 
I see. In that case let’s take a look at the card’s device ID. We can find that using IORegistryExplorer.
Actually it is in the IOREG attached earlier. It is a standard 73BF device-id. Search display device in the IORegistry.
1673751570102.png
 
When the Sony Swordsmith video is played it is choppy. Whereas it plays fine in the cMP5,1.
 
Status
Not open for further replies.
Back
Top