ASoC: max98090: Make sure we configure BCLK in one place
authorLiam Girdwood <liam.r.girdwood@linux.intel.com>
Fri, 16 May 2014 13:55:23 +0000 (16:55 +0300)
committerMark Brown <broonie@linaro.org>
Fri, 16 May 2014 18:59:25 +0000 (19:59 +0100)
BCL is being configured in two places producing a warning message.
Make sure we only configure BCLK once and when we are master.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
sound/soc/codecs/max98090.c
sound/soc/codecs/max98090.h

index aba6ed24c82e2f220ce017b4d31c71452618ca39..d36cd154db5561e4916a82136a16344ddeb32f9d 100644 (file)
@@ -1674,6 +1674,7 @@ static int max98090_dai_set_fmt(struct snd_soc_dai *codec_dai,
                                M98090_REG_CLOCK_RATIO_NI_LSB, 0x00);
                        snd_soc_update_bits(codec, M98090_REG_CLOCK_MODE,
                                M98090_USE_M1_MASK, 0);
+                       max98090->master = false;
                        break;
                case SND_SOC_DAIFMT_CBM_CFM:
                        /* Set to master mode */
@@ -1690,6 +1691,7 @@ static int max98090_dai_set_fmt(struct snd_soc_dai *codec_dai,
                                regval |= M98090_MAS_MASK |
                                        M98090_BSEL_32;
                        }
+                       max98090->master = true;
                        break;
                case SND_SOC_DAIFMT_CBS_CFM:
                case SND_SOC_DAIFMT_CBM_CFS:
@@ -1873,7 +1875,8 @@ static int max98090_dai_hw_params(struct snd_pcm_substream *substream,
                return -EINVAL;
        }
 
-       max98090_configure_bclk(codec);
+       if (max98090->master)
+               max98090_configure_bclk(codec);
 
        cdata->rate = max98090->lrclk;
 
@@ -1952,8 +1955,6 @@ static int max98090_dai_set_sysclk(struct snd_soc_dai *dai,
 
        max98090->sysclk = freq;
 
-       max98090_configure_bclk(codec);
-
        return 0;
 }
 
@@ -2225,6 +2226,7 @@ static int max98090_probe(struct snd_soc_codec *codec)
        /* Initialize private data */
 
        max98090->sysclk = (unsigned)-1;
+       max98090->master = false;
 
        cdata = &max98090->dai[0];
        cdata->rate = (unsigned)-1;
index 1a4e2334a7b21d6f581a5cf371ffe6964563f6f2..5a3c8d0613cb4e6156f952f99d10e80ffb1d57ae 100644 (file)
@@ -1540,6 +1540,7 @@ struct max98090_priv {
        unsigned int pa2en;
        unsigned int extmic_mux;
        unsigned int sidetone;
+       bool master;
 };
 
 int max98090_mic_detect(struct snd_soc_codec *codec,