ASoC: Ux500: Fixup use of clocks
authorUlf Hansson <ulf.hansson@linaro.org>
Mon, 22 Oct 2012 12:32:04 +0000 (14:32 +0200)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Mon, 22 Oct 2012 13:28:17 +0000 (14:28 +0100)
Make sure clocks are being prepared and unprepared as well
as enabled and disabled.

Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
sound/soc/ux500/ux500_msp_dai.c

index be94bf9bf94f51b31b4ba5d1aaeeeabcc58ea043..e11187fb433fa7b889b6198d61cbc07e5fe23e65 100644 (file)
@@ -398,11 +398,13 @@ static int ux500_msp_dai_startup(struct snd_pcm_substream *substream,
                return ret;
        }
 
-       /* Enable clock */
+       /* Prepare and enable clock */
        dev_dbg(dai->dev, "%s: Enabling MSP-clock.\n", __func__);
-       clk_enable(drvdata->clk);
+       ret = clk_prepare_enable(drvdata->clk);
+       if (ret)
+               regulator_disable(drvdata->reg_vape);
 
-       return 0;
+       return ret;
 }
 
 static void ux500_msp_dai_shutdown(struct snd_pcm_substream *substream,
@@ -428,8 +430,8 @@ static void ux500_msp_dai_shutdown(struct snd_pcm_substream *substream,
                        __func__, dai->id, snd_pcm_stream_str(substream));
        }
 
-       /* Disable clock */
-       clk_disable(drvdata->clk);
+       /* Disable and unprepare clock */
+       clk_disable_unprepare(drvdata->clk);
 
        /* Disable regulator */
        ret = regulator_disable(drvdata->reg_vape);