Merge branch 'asoc-5.3' into asoc-linus
[linux-2.6-microblaze.git] / sound / soc / sof / intel / hda.c
index 7f66539..ae50839 100644 (file)
@@ -329,10 +329,23 @@ static int hda_init_caps(struct snd_sof_dev *sdev)
        if (bus->ppcap)
                dev_dbg(sdev->dev, "PP capability, will probe DSP later.\n");
 
+#if IS_ENABLED(CONFIG_SND_SOC_SOF_HDA)
+       /* init i915 and HDMI codecs */
+       ret = hda_codec_i915_init(sdev);
+       if (ret < 0) {
+               dev_err(sdev->dev, "error: init i915 and HDMI codec failed\n");
+               return ret;
+       }
+#endif
+
+       /* Init HDA controller after i915 init */
        ret = hda_dsp_ctrl_init_chip(sdev, true);
        if (ret < 0) {
                dev_err(bus->dev, "error: init chip failed with ret: %d\n",
                        ret);
+#if IS_ENABLED(CONFIG_SND_SOC_SOF_HDA)
+               hda_codec_i915_exit(sdev);
+#endif
                return ret;
        }
 
@@ -340,13 +353,6 @@ static int hda_init_caps(struct snd_sof_dev *sdev)
        if (bus->mlcap)
                snd_hdac_ext_bus_get_ml_capabilities(bus);
 
-       /* init i915 and HDMI codecs */
-       ret = hda_codec_i915_init(sdev);
-       if (ret < 0) {
-               dev_err(sdev->dev, "error: no HDMI audio devices found\n");
-               return ret;
-       }
-
        /* codec detection */
        if (!bus->codec_mask) {
                dev_info(bus->dev, "no hda codecs found!\n");