From: "Sodhi, VunnyX" vunnyx.sodhi@intel.com
HDMI codec is required to be powered up before controller initialization for successful enumeration of codec. If the probe fails it needs to be powered off to balance the power state of HDMI codec.
This fix balances the reference count in the error path before turning off the codec.
Reported-by: Takashi Sakamoto o-takashi@sakamocchi.jp Signed-off-by: Sodhi, VunnyX vunnyx.sodhi@intel.com Signed-off-by: Subhransu S. Prusty subhransu.s.prusty@intel.com --- sound/soc/intel/skylake/skl.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/sound/soc/intel/skylake/skl.c b/sound/soc/intel/skylake/skl.c index 61a4848..1c47f4d 100644 --- a/sound/soc/intel/skylake/skl.c +++ b/sound/soc/intel/skylake/skl.c @@ -729,7 +729,7 @@ static int skl_probe(struct pci_dev *pci,
if (skl->nhlt == NULL) { err = -ENODEV; - goto out_free; + goto out_display_power_off; }
skl_nhlt_update_topology_bin(skl); @@ -801,6 +801,9 @@ out_mach_free: skl_machine_device_unregister(skl); out_nhlt_free: skl_nhlt_free(skl->nhlt); +out_display_power_off: + if (IS_ENABLED(CONFIG_SND_SOC_HDAC_HDMI)) + snd_hdac_display_power(bus, false); out_free: skl->init_failed = 1; skl_free(ebus);