Contribute
Register

[solved] Skylake Framebuffer Patch Not Sticking

Status
Not open for further replies.
Clover patch:
Code:
            <dict>
                <key>Device</key>
                <string>HDA</string>
                <key>Key</key>
                <string>RM,device-id</string>
                <key>Value</key>
                <data>cJ0AAA==</data>
                <key>Comment</key>
                <string>RM,device-id for HDMI audio</string>
            </dict>
I suppose I could wrap all the HDMI + HD audio stuff into an SSDT, since it currently takes 5 clover patches...
 
Clover patch:
Code:
            <dict>
                <key>Device</key>
                <string>HDA</string>
                <key>Key</key>
                <string>RM,device-id</string>
                <key>Value</key>
                <data>cJ0AAA==</data>
                <key>Comment</key>
                <string>RM,device-id for HDMI audio</string>
            </dict>
I suppose I could wrap all the HDMI + HD audio stuff into an SSDT, since it currently takes 5 clover patches...

By "Clover patch", I think you mean config.plist/Devices/AddProperties.
Either way (AddProperties vs. _DSM) is valid.
 
So I just tried to use SSDTs instead (yours, since apparently you've already made everything :p), disabling unneeded Clover entries, and the system volume control works but HDMI audio does not. There is also no sound coming out of the speakers. Here's where I am at the moment.

Note: Regardless of whether or not I have the stuff in AddProperties commented out, the behavior is the same.

EDIT: HD Audio seems to only work using Clover injection rather than SSDTs, unless I messed up SSDT-HDEF somehow (given my track record, that's pretty likely). SSDT-IGPU has 0 problems.

For clarity's sake, this works:
Config.plist
Code:
    <key>Devices</key>
    <dict>
        <key>AddProperties</key>
        <array>
            <dict>
                <key>Device</key>
                <string>HDA</string>
                <key>Key</key>
                <string>RM,device-id</string>
                <key>Value</key>
                <data>cJ0AAA==</data>
                <key>Comment</key>
                <string>RM,device-id for HDMI audio</string>
            </dict>
            <dict>
                <key>Device</key>
                <string>HDA</string>
                <key>Key</key>
                <string>hda-gfx</string>
                <key>Value</key>
                <data>b25ib2FyZC0xAA==</data>
                <key>Comment</key>
                <string>hda-gfx=onboard-1 for HDMI audio</string>
            </dict>
            <dict>
                <key>Device</key>
                <string>HDA</string>
                <key>Key</key>
                <string>layout-id</string>
                <key>Value</key>
                <data>DQAAAA==</data>
                <key>Comment</key>
                <string>layout-id=13</string>
            </dict>
            <dict>
                <key>Device</key>
                <string>HDA</string>
                <key>Key</key>
                <string>PinConfigurations</string>
                <key>Value</key>
                <data></data>
            </dict>
        </array>

But this does not:
SSDT-HDEF (modified from RehabMan's GitHub)
Code:
// Automatic injection of HDEF properties

DefinitionBlock("", "SSDT", 2, "hack", "HDEF", 0)
{
    External(_SB.PCI0.HDEF, DeviceObj)
    External(RMCF.AUDL, IntObj)

    // Note: If your ACPI set (DSDT+SSDTs) does not define HDEF (or AZAL or HDAS)
    // add this Device definition (by uncommenting it)
    //
    //Device(_SB.PCI0.HDEF)
    //{
    //    Name(_ADR, 0x001b0000)
    //    Name(_PRW, Package() { 0x0d, 0x05 }) // may need tweaking (or not needed)
    //}

    // inject properties for audio
    Method(_SB.PCI0.HDEF._DSM, 4)
    {
        If (CondRefOf(\RMCF.AUDL)) { If (Ones == \RMCF.AUDL) { Return(0) } }
        If (!Arg2) { Return (Buffer() { 0x03 } ) }
        Local0 = Package()
        {
            "layout-id", Buffer(4) { 3, 0, 0, 0 },
            "hda-gfx", Buffer() { "onboard-1" },
            "RM,device-id", Buffer(2) { 0x70, 0x9d },
            "PinConfigurations", Buffer() { },
        }
        If (CondRefOf(\RMCF.AUDL))
        {
            CreateDWordField(DerefOf(Local0[1]), 0, AUDL)
            AUDL = \RMCF.AUDL
        }
        Return(Local0)
    }
}
//EOF
Note: AUDL set to 13 in SSDT-Config.
 

Attachments

  • ProbRepFiles.zip
    5.4 MB · Views: 57
Last edited:
So I just tried to use SSDTs instead (yours, since apparently you've already made everything :p), disabling unneeded Clover entries, and the system volume control works but HDMI audio does not. There is also no sound coming out of the speakers. Here's where I am at the moment.

Note: Regardless of whether or not I have the stuff in AddProperties commented out, the behavior is the same.

EDIT: HD Audio seems to only work using Clover injection rather than SSDTs, unless I messed up SSDT-HDEF somehow (given my track record, that's pretty likely). SSDT-IGPU has 0 problems.

For clarity's sake, this works:
Config.plist
Code:
    <key>Devices</key>
    <dict>
        <key>AddProperties</key>
        <array>
            <dict>
                <key>Device</key>
                <string>HDA</string>
                <key>Key</key>
                <string>RM,device-id</string>
                <key>Value</key>
                <data>cJ0AAA==</data>
                <key>Comment</key>
                <string>RM,device-id for HDMI audio</string>
            </dict>
            <dict>
                <key>Device</key>
                <string>HDA</string>
                <key>Key</key>
                <string>hda-gfx</string>
                <key>Value</key>
                <data>b25ib2FyZC0xAA==</data>
                <key>Comment</key>
                <string>hda-gfx=onboard-1 for HDMI audio</string>
            </dict>
            <dict>
                <key>Device</key>
                <string>HDA</string>
                <key>Key</key>
                <string>layout-id</string>
                <key>Value</key>
                <data>DQAAAA==</data>
                <key>Comment</key>
                <string>layout-id=13</string>
            </dict>
            <dict>
                <key>Device</key>
                <string>HDA</string>
                <key>Key</key>
                <string>PinConfigurations</string>
                <key>Value</key>
                <data></data>
            </dict>
        </array>

But this does not:
SSDT-HDEF (modified from RehabMan's GitHub)
Code:
// Automatic injection of HDEF properties

DefinitionBlock("", "SSDT", 2, "hack", "HDEF", 0)
{
    External(_SB.PCI0.HDEF, DeviceObj)
    External(RMCF.AUDL, IntObj)

    // Note: If your ACPI set (DSDT+SSDTs) does not define HDEF (or AZAL or HDAS)
    // add this Device definition (by uncommenting it)
    //
    //Device(_SB.PCI0.HDEF)
    //{
    //    Name(_ADR, 0x001b0000)
    //    Name(_PRW, Package() { 0x0d, 0x05 }) // may need tweaking (or not needed)
    //}

    // inject properties for audio
    Method(_SB.PCI0.HDEF._DSM, 4)
    {
        If (CondRefOf(\RMCF.AUDL)) { If (Ones == \RMCF.AUDL) { Return(0) } }
        If (!Arg2) { Return (Buffer() { 0x03 } ) }
        Local0 = Package()
        {
            "layout-id", Buffer(4) { 3, 0, 0, 0 },
            "hda-gfx", Buffer() { "onboard-1" },
            "RM,device-id", Buffer(2) { 0x70, 0x9d },
            "PinConfigurations", Buffer() { },
        }
        If (CondRefOf(\RMCF.AUDL))
        {
            CreateDWordField(DerefOf(Local0[1]), 0, AUDL)
            AUDL = \RMCF.AUDL
        }
        Return(Local0)
    }
}
//EOF
Note: AUDL set to 13 in SSDT-Config.

You're injecting an incorrect RM,device-id. Must be 4 bytes. You're only injecting two.
 
Code:
// Automatic injection of HDEF properties

DefinitionBlock("", "SSDT", 2, "hack", "HDEF", 0)
{
    External(_SB.PCI0.HDEF, DeviceObj)
    External(RMCF.AUDL, IntObj)

    // Note: If your ACPI set (DSDT+SSDTs) does not define HDEF (or AZAL or HDAS)
    // add this Device definition (by uncommenting it)
    //
    //Device(_SB.PCI0.HDEF)
    //{
    //    Name(_ADR, 0x001b0000)
    //    Name(_PRW, Package() { 0x0d, 0x05 }) // may need tweaking (or not needed)
    //}

    // inject properties for audio
    Method(_SB.PCI0.HDEF._DSM, 4)
    {
        If (CondRefOf(\RMCF.AUDL)) { If (Ones == \RMCF.AUDL) { Return(0) } }
        If (!Arg2) { Return (Buffer() { 0x03 } ) }
        Local0 = Package()
        {
            "layout-id", Buffer(4) { 3, 0, 0, 0 },
            "hda-gfx", Buffer() { "onboard-1" },
            "RM,device-id", Buffer(4) { 0x70, 0x9d, 0x00, 0x00 },
            "PinConfigurations", Buffer() { },
        }
        If (CondRefOf(\RMCF.AUDL))
        {
            CreateDWordField(DerefOf(Local0[1]), 0, AUDL)
            AUDL = \RMCF.AUDL
        }
        Return(Local0)
    }
}
//EOF

It works!
 
Code:
// Automatic injection of HDEF properties

DefinitionBlock("", "SSDT", 2, "hack", "HDEF", 0)
{
    External(_SB.PCI0.HDEF, DeviceObj)
    External(RMCF.AUDL, IntObj)

    // Note: If your ACPI set (DSDT+SSDTs) does not define HDEF (or AZAL or HDAS)
    // add this Device definition (by uncommenting it)
    //
    //Device(_SB.PCI0.HDEF)
    //{
    //    Name(_ADR, 0x001b0000)
    //    Name(_PRW, Package() { 0x0d, 0x05 }) // may need tweaking (or not needed)
    //}

    // inject properties for audio
    Method(_SB.PCI0.HDEF._DSM, 4)
    {
        If (CondRefOf(\RMCF.AUDL)) { If (Ones == \RMCF.AUDL) { Return(0) } }
        If (!Arg2) { Return (Buffer() { 0x03 } ) }
        Local0 = Package()
        {
            "layout-id", Buffer(4) { 3, 0, 0, 0 },
            "hda-gfx", Buffer() { "onboard-1" },
            "RM,device-id", Buffer(4) { 0x70, 0x9d, 0x00, 0x00 },
            "PinConfigurations", Buffer() { },
        }
        If (CondRefOf(\RMCF.AUDL))
        {
            CreateDWordField(DerefOf(Local0[1]), 0, AUDL)
            AUDL = \RMCF.AUDL
        }
        Return(Local0)
    }
}
//EOF

It works!

Note that you don't need to specify the buffer sizes. The iasl compiler will calculate them for you...

eg.
Code:
            "layout-id", Buffer() { 3, 0, 0, 0 },
            "RM,device-id", Buffer() { 0x70, 0x9d, 0x00, 0x00 },

Marked solved.
 
Status
Not open for further replies.
Back
Top