From: Erik Bussing <[email protected]>

Remove code duplication in byt_rt5640_codec_fixup

Signed-off-by: Erik Bussing <[email protected]>
Signed-off-by: Nariman Etemadi <[email protected]>
---
 sound/soc/intel/boards/bytcr_rt5640.c | 64 ++++++++++-----------------
 1 file changed, 23 insertions(+), 41 deletions(-)

diff --git a/sound/soc/intel/boards/bytcr_rt5640.c 
b/sound/soc/intel/boards/bytcr_rt5640.c
index a22366ce33c4..679be55418bf 100644
--- a/sound/soc/intel/boards/bytcr_rt5640.c
+++ b/sound/soc/intel/boards/bytcr_rt5640.c
@@ -939,6 +939,7 @@ static int byt_rt5640_codec_fixup(struct 
snd_soc_pcm_runtime *rtd,
        struct snd_interval *channels = hw_param_interval(params,
                                                SNDRV_PCM_HW_PARAM_CHANNELS);
        int ret;
+       int bits;
 
        /* The DSP will covert the FE rate to 48k, stereo */
        rate->min = rate->max = 48000;
@@ -949,53 +950,34 @@ static int byt_rt5640_codec_fixup(struct 
snd_soc_pcm_runtime *rtd,
 
                /* 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;
-               }
 
-               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;
-               }
+       /*
+        * 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;
+       }
+
+       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;
 }
-- 
2.20.1

Reply via email to