ASoC: da7219: Improve error checking of mclk enable/disable
authorAdam Thomson <Adam.Thomson.Opensource@diasemi.com>
Wed, 7 Oct 2015 10:57:14 +0000 (11:57 +0100)
committerMark Brown <broonie@kernel.org>
Wed, 7 Oct 2015 11:15:22 +0000 (12:15 +0100)
Should only try to enable/disable the provided mclk, during bias
level changes, if it's not NULL. Also return value of
clk_prepare_enable() should be checked and dealt with accordingly.

Signed-off-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/da7219.c

index adcc079ef801cebfd737aaac7379f8b649517370..abba4b36caa056d98ec92887c9322783dd5c19b2 100644 (file)
@@ -1494,6 +1494,7 @@ static int da7219_set_bias_level(struct snd_soc_codec *codec,
                                 enum snd_soc_bias_level level)
 {
        struct da7219_priv *da7219 = snd_soc_codec_get_drvdata(codec);
+       int ret;
 
        switch (level) {
        case SND_SOC_BIAS_ON:
@@ -1502,7 +1503,14 @@ static int da7219_set_bias_level(struct snd_soc_codec *codec,
        case SND_SOC_BIAS_STANDBY:
                if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
                        /* MCLK */
-                       clk_prepare_enable(da7219->mclk);
+                       if (da7219->mclk) {
+                               ret = clk_prepare_enable(da7219->mclk);
+                               if (ret) {
+                                       dev_err(codec->dev,
+                                               "Failed to enable mclk\n");
+                                       return ret;
+                               }
+                       }
 
                        /* Master bias */
                        snd_soc_update_bits(codec, DA7219_REFERENCES,
@@ -1528,7 +1536,8 @@ static int da7219_set_bias_level(struct snd_soc_codec *codec,
                }
 
                /* MCLK */
-               clk_disable_unprepare(da7219->mclk);
+               if (da7219->mclk)
+                       clk_disable_unprepare(da7219->mclk);
                break;
        }