ASoC: intel: sof_rt5682: Add quirk for number of HDMI DAI's
authorSathyanarayana Nujella <sathyanarayana.nujella@intel.com>
Tue, 26 Nov 2019 14:32:03 +0000 (08:32 -0600)
committerMark Brown <broonie@kernel.org>
Mon, 9 Dec 2019 18:31:55 +0000 (18:31 +0000)
TGL supports one more HDMI DAI than previous models.
So add quirk support for number of HDMI DAI's.

Signed-off-by: Sathyanarayana Nujella <sathyanarayana.nujella@intel.com>
Signed-off-by: Jairaj Arava <jairaj.arava@intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/20191126143205.21987-2-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/intel/boards/sof_rt5682.c

index 751b8ea..57adada 100644 (file)
 #define SOF_RT5682_SSP_AMP(quirk)      \
        (((quirk) << SOF_RT5682_SSP_AMP_SHIFT) & SOF_RT5682_SSP_AMP_MASK)
 #define SOF_RT5682_MCLK_BYTCHT_EN              BIT(9)
+#define SOF_RT5682_NUM_HDMIDEV_SHIFT           10
+#define SOF_RT5682_NUM_HDMIDEV_MASK            (GENMASK(12, 10))
+#define SOF_RT5682_NUM_HDMIDEV(quirk)  \
+       ((quirk << SOF_RT5682_NUM_HDMIDEV_SHIFT) & SOF_RT5682_NUM_HDMIDEV_MASK)
 
 /* Default: MCLK on, MCLK 19.2M, SSP0  */
 static unsigned long sof_rt5682_quirk = SOF_RT5682_MCLK_EN |
@@ -594,6 +598,8 @@ static int sof_audio_probe(struct platform_device *pdev)
        if (!ctx)
                return -ENOMEM;
 
+       dmi_check_system(sof_rt5682_quirk_table);
+
        if (soc_intel_is_byt() || soc_intel_is_cht()) {
                is_legacy_cpu = 1;
                dmic_be_num = 0;
@@ -604,11 +610,13 @@ static int sof_audio_probe(struct platform_device *pdev)
                                                SOF_RT5682_SSP_CODEC(2);
        } else {
                dmic_be_num = 2;
-               hdmi_num = 3;
+               hdmi_num = (sof_rt5682_quirk & SOF_RT5682_NUM_HDMIDEV_MASK) >>
+                        SOF_RT5682_NUM_HDMIDEV_SHIFT;
+               /* default number of HDMI DAI's */
+               if (!hdmi_num)
+                       hdmi_num = 3;
        }
 
-       dmi_check_system(sof_rt5682_quirk_table);
-
        /* need to get main clock from pmc */
        if (sof_rt5682_quirk & SOF_RT5682_MCLK_BYTCHT_EN) {
                ctx->mclk = devm_clk_get(&pdev->dev, "pmc_plt_clk_3");