Merge branch 'for-5.4' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie...
[linux-2.6-block.git] / sound / soc / intel / boards / sof_rt5682.c
index 4f6e58c3954a220fd0050c5d8c29089c0ee16622..751b8ea6ae1f5ca4bda64eb3d35c9aa4d79d9dbc 100644 (file)
@@ -21,6 +21,7 @@
 #include "../../codecs/rt5682.h"
 #include "../../codecs/hdac_hdmi.h"
 #include "../common/soc-intel-quirks.h"
+#include "hda_dsp_common.h"
 
 #define NAME_SIZE 32
 
@@ -53,6 +54,7 @@ struct sof_card_private {
        struct clk *mclk;
        struct snd_soc_jack sof_headset;
        struct list_head hdmi_pcm_list;
+       bool common_hdmi_codec_drv;
 };
 
 static int sof_rt5682_quirk_cb(const struct dmi_system_id *id)
@@ -274,6 +276,13 @@ static int sof_card_late_probe(struct snd_soc_card *card)
        if (is_legacy_cpu)
                return 0;
 
+       pcm = list_first_entry(&ctx->hdmi_pcm_list, struct sof_hdmi_pcm,
+                              head);
+       component = pcm->codec_dai->component;
+
+       if (ctx->common_hdmi_codec_drv)
+               return hda_dsp_hdmi_build_controls(card, component);
+
        list_for_each_entry(pcm, &ctx->hdmi_pcm_list, head) {
                component = pcm->codec_dai->component;
                snprintf(jack_name, sizeof(jack_name),
@@ -370,7 +379,7 @@ static int dmic_init(struct snd_soc_pcm_runtime *rtd)
 
 /* sof audio machine driver for rt5682 codec */
 static struct snd_soc_card sof_audio_card_rt5682 = {
-       .name = "sof_rt5682",
+       .name = "rt5682", /* the sof- prefix is added by the core */
        .owner = THIS_MODULE,
        .controls = sof_controls,
        .num_controls = ARRAY_SIZE(sof_controls),
@@ -651,6 +660,8 @@ static int sof_audio_probe(struct platform_device *pdev)
        if (ret)
                return ret;
 
+       ctx->common_hdmi_codec_drv = mach->mach_params.common_hdmi_codec_drv;
+
        snd_soc_card_set_drvdata(&sof_audio_card_rt5682, ctx);
 
        return devm_snd_soc_register_card(&pdev->dev,