OSDN Git Service

ASoC: Intel: bytcr_rt5640: Remove code duplication in byt_rt5640_codec_fixup
authorErik Bussing <eabbussing@outlook.com>
Wed, 15 Jan 2020 16:46:16 +0000 (17:46 +0100)
committerMark Brown <broonie@kernel.org>
Fri, 17 Jan 2020 15:41:42 +0000 (15:41 +0000)
The 16 and 24 bit paths in byt_rt5640_codec_fixup are mostly identical,
introduce a local bits variable to address the only difference and move
the common bits out of the if ... else ... .

Signed-off-by: Erik Bussing <eabbussing@outlook.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20200115164619.101705-2-hdegoede@redhat.com
Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/intel/boards/bytcr_rt5640.c

index dd6310f..c19ae4f 100644 (file)
@@ -940,65 +940,43 @@ static int byt_rt5640_codec_fixup(struct snd_soc_pcm_runtime *rtd,
                        SNDRV_PCM_HW_PARAM_RATE);
        struct snd_interval *channels = hw_param_interval(params,
                                                SNDRV_PCM_HW_PARAM_CHANNELS);
-       int ret;
+       int ret, bits;
 
        /* The DSP will covert the FE rate to 48k, stereo */
        rate->min = rate->max = 48000;
        channels->min = channels->max = 2;
 
        if ((byt_rt5640_quirk & BYT_RT5640_SSP0_AIF1) ||
-               (byt_rt5640_quirk & BYT_RT5640_SSP0_AIF2)) {
-
+           (byt_rt5640_quirk & BYT_RT5640_SSP0_AIF2)) {
                /* set SSP0 to 16-bit */
                params_set_format(params, SNDRV_PCM_FORMAT_S16_LE);
-
-               /*
-                * Default mode for SSP configuration is TDM 4 slot, override config
-                * with explicit setting to I2S 2ch 16-bit. The word length is set with
-                * dai_set_tdm_slot() since there is no other API exposed
-                */
-               ret = snd_soc_dai_set_fmt(rtd->cpu_dai,
-                                       SND_SOC_DAIFMT_I2S     |
-                                       SND_SOC_DAIFMT_NB_NF   |
-                                       SND_SOC_DAIFMT_CBS_CFS
-                       );
-               if (ret < 0) {
-                       dev_err(rtd->dev, "can't set format to I2S, err %d\n", ret);
-                       return ret;
-               }
-
-               ret = snd_soc_dai_set_tdm_slot(rtd->cpu_dai, 0x3, 0x3, 2, 16);
-               if (ret < 0) {
-                       dev_err(rtd->dev, "can't set I2S config, err %d\n", ret);
-                       return ret;
-               }
-
+               bits = 16;
        } else {
-
                /* set SSP2 to 24-bit */
                params_set_format(params, SNDRV_PCM_FORMAT_S24_LE);
+               bits = 24;
+       }
 
-               /*
-                * Default mode for SSP configuration is TDM 4 slot, override config
-                * with explicit setting to I2S 2ch 24-bit. The word length is set with
-                * dai_set_tdm_slot() since there is no other API exposed
-                */
-               ret = snd_soc_dai_set_fmt(rtd->cpu_dai,
-                                       SND_SOC_DAIFMT_I2S     |
-                                       SND_SOC_DAIFMT_NB_NF   |
-                                       SND_SOC_DAIFMT_CBS_CFS
-                       );
-               if (ret < 0) {
-                       dev_err(rtd->dev, "can't set format to I2S, err %d\n", ret);
-                       return ret;
-               }
+       /*
+        * Default mode for SSP configuration is TDM 4 slot, override config
+        * with explicit setting to I2S 2ch. The word length is set with
+        * dai_set_tdm_slot() since there is no other API exposed
+        */
+       ret = snd_soc_dai_set_fmt(rtd->cpu_dai,
+                                 SND_SOC_DAIFMT_I2S     |
+                                 SND_SOC_DAIFMT_NB_NF   |
+                                 SND_SOC_DAIFMT_CBS_CFS);
+       if (ret < 0) {
+               dev_err(rtd->dev, "can't set format to I2S, err %d\n", ret);
+               return ret;
+       }
 
-               ret = snd_soc_dai_set_tdm_slot(rtd->cpu_dai, 0x3, 0x3, 2, 24);
-               if (ret < 0) {
-                       dev_err(rtd->dev, "can't set I2S config, err %d\n", ret);
-                       return ret;
-               }
+       ret = snd_soc_dai_set_tdm_slot(rtd->cpu_dai, 0x3, 0x3, 2, bits);
+       if (ret < 0) {
+               dev_err(rtd->dev, "can't set I2S config, err %d\n", ret);
+               return ret;
        }
+
        return 0;
 }