Jump to content
8 posts in this topic

Recommended Posts

I'm a beginner when it comes to DSDT patching.  I've cobbled together some patches, by using examples from toleda and others.  I've finally gotten HDMI audio working, but I wonder if there's a more elegant way.  I'd love to get some feedback from more experienced users about this.

 

First, I renamed H000 to GFX1 to resolve the black screen bug with Mac Pro 6,1 SMBIOS in Yosemite.  That's just two edits, on lines 30101 and 55613.

 

Now for audio, I'm using two Clover patches: FixHDA renames ALZA to HDEF, and AddDTGP enables layout-id injection.  I use Clover to inject audio ID 2, and AppleALC.kext to patch AppleHDA on the fly.

 

For HDMI, I renamed H001 to HDAU, and added several lines to that device and GFX1.  Some of this code may be unnecessary, but I copied large chunks from toleda's SSDT-HDMI-NVIDIA-BR3A.  Here is the modified section, and I've attached the full DSDT.  I would love to make these into SSDTs instead, for easier sharing with others, but I don't know how.

Device (GFX1)
{
	Name (_ADR, Zero)
	Name (_SUN, One)
	Method (_DSM, 4, NotSerialized)
	{
		If (LEqual (Arg2, Zero))
		{
			Return (Buffer (One)
			{
				0x03
			})
		}

		Return (Package (0x0E)
		{
			"@0,connector-type", 
			Buffer (0x04)
			{
				0x00, 0x08, 0x00, 0x00
			}, 

			"@1,connector-type", 
			Buffer (0x04)
			{
				0x00, 0x08, 0x00, 0x00
			}, 

			"@2,connector-type", 
			Buffer (0x04)
			{
				0x00, 0x08, 0x00, 0x00
			}, 

			"@3,connector-type", 
			Buffer (0x04)
			{
				0x00, 0x08, 0x00, 0x00
			}, 

			"@4,connector-type", 
			Buffer (0x04)
			{
				0x00, 0x08, 0x00, 0x00
			}, 

			"@5,connector-type", 
			Buffer (0x04)
			{
				0x00, 0x08, 0x00, 0x00
			}, 

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

Device (HDAU)
{
	Name (_ADR, One)
	Method (_DSM, 4, NotSerialized)
	{
		If (LEqual (Arg2, Zero))
		{
			Return (Buffer (One)
			{
				0x03
			})
		}

		Return (Package (0x04)
		{
			"hda-gfx", 
			Buffer (0x0A)
			{
				"onboard-2"
			}, 

			"layout-id", 
			Buffer (0x04)
			{
				0x01, 0x00, 0x00, 0x00
			}
		})
	}
}

DSDT.aml.zip

Link to comment
https://www.insanelymac.com/forum/topic/315474-x99-c610-audio-patching/
Share on other sites

Hi Elliot,

You should not need most of that for functionality. 

DefinitionBlock ("", "SSDT", 1, "iconic", "GFX1", 0x00001000)
{
    External (_SB_.PCI0.BR3A, DeviceObj)    // (from opcode)

    Scope (_SB.PCI0.BR3A)
    {
        Device (GFX1)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Name (_SUN, One)  // _SUN: Slot User Number
        }
    }

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

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

    Name (_SB.PCI0.BR3A.H000._STA, Zero)  // _STA: Status
    Name (_SB.PCI0.BR3A.H001._STA, Zero)  // _STA: Status
    Name (_SB.PCI0.BR3A.D080._STA, Zero)  // _STA: Status
    Name (_SB.PCI0.BR3A.D07F._STA, Zero)  // _STA: Status

 

  • 3 weeks later...
  • 2 months later...

Hey genzai, could you please explain what that SSDT does, besides the GPU rename and HDAU?  I see it renames the ethernet slot to "Internal" — is that purely cosmetic?  What does it do with the USB?  And what is the VSND device for?

Hey genzai, could you please explain what that SSDT does, besides the GPU rename and HDAU?  I see it renames the ethernet slot to "Internal" — is that purely cosmetic?  What does it do with the USB?  And what is the VSND device for?

Internal is important for certain services like iMessage and app store login. Or at least it used to be. 

USB fixes make the ports appear more native, and so may help in some cases or may be just cosmetic but certainly should not hurt. VSND does not do anything anymore, it used to fix some issues on system that did not have any audio controllers. But it is still useful as a way to tell very quickly and easily if the SSDT is getting loaded properly in cases where that is in question.

g\

  • 3 months later...
×
×
  • Create New...