Contribute
Register

Custom SSDT for EAPD-Codec-Commander

Status
Not open for further replies.
Joined
Dec 26, 2011
Messages
146
CPU
i5-3317U
Graphics
HD4000
Mac
  1. MacBook Air
Mobile Phone
  1. iOS
Hello Rehabman,

I am using EAPD-Codec-Commander to inject the PinConfigs for my codec and everything seems to works OK, except the HDMI audio. I know that CodecCommander disable attach HDMI codec by default, so I guest that is the reason for my issue.
I have a couple questions:

1) How can I to attach the HDMI codec to CodecCommander using ACPI code?

Here is my custom SSDT:

Code:
DefinitionBlock ("", "SSDT", 2, "ENVY", "HDEF", 0x00000000)
{
    External (_SB_.PCI0.HDEF, DeviceObj)
    Name (_SB.PCI0.HDEF.RMCF, Package()
    {
        "CodecCommanderProbeInit", Package()
        {
            "Version", 0x00020600,
            "111d_76e0", Package()
            {
                "PinConfigDefault", Package()
                {
                    Package(){},
                    Package()
                    {
                        "LayoutID", 3,
                        "PinConfigs", Package()
                        {
                            Package(){},
                            0x0a, 0x400000f0,
                            0x0b, 0x03211020,
                            0x0c, 0x400000f0,
                            0x0d, 0x400000f0,
                            0x0e, 0x400000f0,
                            0x0f, 0x90170132,
                            0x10, 0x400000f0,
                            0x11, 0x97a60110,
                            0x1f, 0x400000f0,
                            0x20, 0x400000f0
                        }
                    }
                }
            }
        }
    })
}

2) How can I avoid CodecCommander update EAPD from disabled nodes?

Here is the log:

Code:
CodecCommander: Node ID 0x0a supports EAPD, will update state after sleep.
CodecCommander: Node ID 0x0b supports EAPD, will update state after sleep.
CodecCommander: Node ID 0x0c supports EAPD, will update state after sleep.
CodecCommander: Node ID 0x0d supports EAPD, will update state after sleep.
CodecCommander: Node ID 0x0e supports EAPD, will update state after sleep.
CodecCommander: Node ID 0x0f supports EAPD, will update state after sleep.

Thanks in advance.
 

Attachments

  • Jose’s MacBook Pro.ioreg.zip
    484.4 KB · Views: 63
Hello Rehabman,

I am using EAPD-Codec-Commander to inject the PinConfigs for my codec and everything seems to works OK, except the HDMI audio. I know that CodecCommander disable attach HDMI codec by default, so I guest that is the reason for my issue.
I have a couple questions:

1) How can I to attach the HDMI codec to CodecCommander using ACPI code?

Here is my custom SSDT:

Code:
DefinitionBlock ("", "SSDT", 2, "ENVY", "HDEF", 0x00000000)
{
    External (_SB_.PCI0.HDEF, DeviceObj)
    Name (_SB.PCI0.HDEF.RMCF, Package()
    {
        "CodecCommanderProbeInit", Package()
        {
            "Version", 0x00020600,
            "111d_76e0", Package()
            {
                "PinConfigDefault", Package()
                {
                    Package(){},
                    Package()
                    {
                        "LayoutID", 3,
                        "PinConfigs", Package()
                        {
                            Package(){},
                            0x0a, 0x400000f0,
                            0x0b, 0x03211020,
                            0x0c, 0x400000f0,
                            0x0d, 0x400000f0,
                            0x0e, 0x400000f0,
                            0x0f, 0x90170132,
                            0x10, 0x400000f0,
                            0x11, 0x97a60110,
                            0x1f, 0x400000f0,
                            0x20, 0x400000f0
                        }
                    }
                }
            }
        }
    })
}

2) How can I avoid CodecCommander update EAPD from disabled nodes?

Here is the log:

Code:
CodecCommander: Node ID 0x0a supports EAPD, will update state after sleep.
CodecCommander: Node ID 0x0b supports EAPD, will update state after sleep.
CodecCommander: Node ID 0x0c supports EAPD, will update state after sleep.
CodecCommander: Node ID 0x0d supports EAPD, will update state after sleep.
CodecCommander: Node ID 0x0e supports EAPD, will update state after sleep.
CodecCommander: Node ID 0x0f supports EAPD, will update state after sleep.

Thanks in advance.

Not a desktop. Moved to laptop support.

Any Info.plist setting in CodecCommander.kext can be overridden by RMCF. Refer to examples in my NUC, or u430 repo...
But that has nothing to do with your non-working HDMI audio.
Your HDAU is 0x0c0c. It requires FakePCIID_Intel_HDMI_Audio.kext.
 
Thanks RehabMan,
You right, I forgot to to load FakePCIID_Intel_HDMI_Audio.kext. Now HDMI audio works.
Regarding to 2nd question, disable EAPD update from unused nodes, can you please post a example to do that?

Thanks.
 
Regarding to 2nd question, disable EAPD update from unused nodes, can you please post a example to do that?

Look at SSDT-NUCHDA.dsl in my NUC repo on github.
 
Thanks RehabMan,

Another issue:

Sometimes, at cold boot, my laptop cannot detect headphones and only does it after sleep, I mean at wake.

Here is my new custom SSDT:

Code:
DefinitionBlock ("", "SSDT", 2, "ENVY", "HDEF", 0x00000000)
{
    External (_SB_.PCI0.HDEF, DeviceObj)
    Name (_SB.PCI0.HDEF.RMCF, Package()
    {
        "CodecCommanderProbeInit", Package()
        {
            "Version", 0x00020600,
            "111d_76e0", Package()
            {
                "PinConfigDefault", Package()
                {
                    Package(){},
                    Package()
                    {
                        "PinConfigs", Package()
                        {
                            Package(){},
                            0x0a, 0x400000f0,
                            0x0b, 0x03211020,
                            0x0c, 0x400000f0,
                            0x0d, 0x400000f0,
                            0x0e, 0x400000f0,
                            0x0f, 0x90170132,
                            0x10, 0x400000f0,
                            0x11, 0x97a60110,
                            0x1f, 0x400000f0,
                            0x20, 0x400000f0
                        }
                    }
                }
            }
        },
        "CodecCommander", Package()
        {
            "Version", 0x020600,
            "111d_76e0", Package()
            {
                "Custom Commands", Package()
                {
                    Package(){},
                    Package()
                    {
                        // 0x0b SET_PIN_WIDGET_CONTROL 0x25
                        "Command", Buffer() { 0x0b, 0x07, 0x07, 0x25 },
                        "On Init", ">n",
                        "On Sleep", ">n",
                        "On Wake", ">y"
                    },
                    Package()
                    {
                        // 0x0f SET_PIN_WIDGET_CONTROL 0x25
                        "Command", Buffer() { 0x0f, 0x07, 0x07, 0x25 },
                        "On Init", ">n",
                        "On Sleep", ">n",
                        "On Wake", ">y"
                    }
                },
                "Perform Reset", ">n",
                //"Perform Reset on External Wake", ">n",
                //"Send Delay", 10,
                "Sleep Nodes", ">n",
                "Update Nodes", ">n"
            }
        }
    })
}

Thanks in advance.
 
Last edited:
Thanks RehabMan,

Another issue:

Sometimes, at cold boot, my laptop cannot detect headphones and only does it after sleep, I mean at wake.

Here is my new custom SSDT:

Code:
DefinitionBlock ("", "SSDT", 2, "ENVY", "HDEF", 0x00000000)
{
    External (_SB_.PCI0.HDEF, DeviceObj)
    Name (_SB.PCI0.HDEF.RMCF, Package()
    {
        "CodecCommanderProbeInit", Package()
        {
            "Version", 0x00020600,
            "111d_76e0", Package()
            {
                "PinConfigDefault", Package()
                {
                    Package(){},
                    Package()
                    {
                        "PinConfigs", Package()
                        {
                            Package(){},
                            0x0a, 0x400000f0,
                            0x0b, 0x03211020,
                            0x0c, 0x400000f0,
                            0x0d, 0x400000f0,
                            0x0e, 0x400000f0,
                            0x0f, 0x90170132,
                            0x10, 0x400000f0,
                            0x11, 0x97a60110,
                            0x1f, 0x400000f0,
                            0x20, 0x400000f0
                        }
                    }
                }
            }
        },
        "CodecCommander", Package()
        {
            "Version", 0x020600,
            "111d_76e0", Package()
            {
                "Custom Commands", Package()
                {
                    Package(){},
                    Package()
                    {
                        // 0x0b SET_PIN_WIDGET_CONTROL 0x25
                        "Command", Buffer() { 0x0b, 0x07, 0x07, 0x25 },
                        "On Init", ">n",
                        "On Sleep", ">n",
                        "On Wake", ">y"
                    },
                    Package()
                    {
                        // 0x0f SET_PIN_WIDGET_CONTROL 0x25
                        "Command", Buffer() { 0x0f, 0x07, 0x07, 0x25 },
                        "On Init", ">n",
                        "On Sleep", ">n",
                        "On Wake", ">y"
                    }
                },
                "Perform Reset", ">n",
                //"Perform Reset on External Wake", ">n",
                //"Send Delay", 10,
                "Sleep Nodes", ">n",
                "Update Nodes", ">n"
            }
        }
    })
}

Thanks in advance.

Why are you not sending the custom commands "On Init"?
 
Status
Not open for further replies.
Back
Top