ASoC: qcom: sc7180: fix 32 bit format for adau7002
authorxuyuqing <xuyuqing@huaqin.corp-partner.google.com>
Wed, 18 Nov 2020 00:58:58 +0000 (08:58 +0800)
committerMark Brown <broonie@kernel.org>
Fri, 27 Nov 2020 14:50:17 +0000 (14:50 +0000)
the microphone is attached to external codec(adau7002)
instead of rt5682.We need to always use 32 bit format on sc7180
to meet the clock requirement of adau7002:
The ADAU7002 requires a BCLK rate
that is a minimum of 64× the LRCLK sample rate

Signed-off-by: xuyuqing <xuyuqing@huaqin.corp-partner.google.com>
Link: https://lore.kernel.org/r/20201118005858.123013-2-xuyuqing@huaqin.corp-partner.google.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/qcom/sc7180.c

index de70fa7..768566b 100644 (file)
@@ -245,6 +245,7 @@ static int sc7180_adau7002_snd_startup(struct snd_pcm_substream *substream)
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_dai *cpu_dai = asoc_rtd_to_cpu(rtd, 0);
        struct snd_soc_dai *codec_dai = asoc_rtd_to_codec(rtd, 0);
+       struct snd_pcm_runtime *runtime = substream->runtime;
 
        switch (cpu_dai->id) {
        case MI2S_PRIMARY:
@@ -252,6 +253,8 @@ static int sc7180_adau7002_snd_startup(struct snd_pcm_substream *substream)
                                    SND_SOC_DAIFMT_CBS_CFS |
                                    SND_SOC_DAIFMT_NB_NF |
                                    SND_SOC_DAIFMT_I2S);
+               runtime->hw.formats = SNDRV_PCM_FMTBIT_S32_LE;
+               snd_pcm_hw_constraint_msbits(runtime, 0, 32, 32);
 
                break;
        case MI2S_SECONDARY: