ASoC: Tegra: Don't return mclk_changed from utils_set_rate
authorStephen Warren <swarren@nvidia.com>
Tue, 19 Apr 2011 21:25:09 +0000 (15:25 -0600)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Wed, 20 Apr 2011 12:49:55 +0000 (13:49 +0100)
Only the clock programming code needs to know whether the clocks changed,
and that is encapsulated within tegra_asoc_utils_set_rate(). The machine
driver's call to snd_soc_dai_set_sysclk(codec_dai, ...) is safe
irrespective of whether the clocks changed.

(Applying Mark's TrimSlice review comments to the existing driver)

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
sound/soc/tegra/tegra_asoc_utils.c
sound/soc/tegra/tegra_asoc_utils.h
sound/soc/tegra/tegra_wm8903.c

index 52f0a3f..dfa85cb 100644 (file)
 #include "tegra_asoc_utils.h"
 
 int tegra_asoc_utils_set_rate(struct tegra_asoc_utils_data *data, int srate,
-                             int mclk, int *mclk_change)
+                             int mclk)
 {
        int new_baseclock;
+       bool clk_change;
        int err;
 
        switch (srate) {
@@ -52,10 +53,10 @@ int tegra_asoc_utils_set_rate(struct tegra_asoc_utils_data *data, int srate,
                return -EINVAL;
        }
 
-       *mclk_change = ((new_baseclock != data->set_baseclock) ||
+       clk_change = ((new_baseclock != data->set_baseclock) ||
                        (mclk != data->set_mclk));
-       if (!*mclk_change)
-           return 0;
+       if (!clk_change)
+               return 0;
 
        data->set_baseclock = 0;
        data->set_mclk = 0;
index bbba7af..4818195 100644 (file)
@@ -36,7 +36,7 @@ struct tegra_asoc_utils_data {
 };
 
 int tegra_asoc_utils_set_rate(struct tegra_asoc_utils_data *data, int srate,
-                             int mclk, int *mclk_change);
+                             int mclk);
 int tegra_asoc_utils_init(struct tegra_asoc_utils_data *data,
                          struct device *dev);
 void tegra_asoc_utils_fini(struct tegra_asoc_utils_data *data);
index b12b1fd..988ff50 100644 (file)
@@ -72,7 +72,7 @@ static int tegra_wm8903_hw_params(struct snd_pcm_substream *substream,
        struct snd_soc_codec *codec = rtd->codec;
        struct snd_soc_card *card = codec->card;
        struct tegra_wm8903 *machine = snd_soc_card_get_drvdata(card);
-       int srate, mclk, mclk_change;
+       int srate, mclk;
        int err;
 
        srate = params_rate(params);
@@ -90,8 +90,7 @@ static int tegra_wm8903_hw_params(struct snd_pcm_substream *substream,
        while (mclk < 6000000)
                mclk *= 2;
 
-       err = tegra_asoc_utils_set_rate(&machine->util_data, srate, mclk,
-                                       &mclk_change);
+       err = tegra_asoc_utils_set_rate(&machine->util_data, srate, mclk);
        if (err < 0) {
                dev_err(card->dev, "Can't configure clocks\n");
                return err;
@@ -115,13 +114,11 @@ static int tegra_wm8903_hw_params(struct snd_pcm_substream *substream,
                return err;
        }
 
-       if (mclk_change) {
-               err = snd_soc_dai_set_sysclk(codec_dai, 0, mclk,
-                                            SND_SOC_CLOCK_IN);
-               if (err < 0) {
-                       dev_err(card->dev, "codec_dai clock not set\n");
-                       return err;
-               }
+       err = snd_soc_dai_set_sysclk(codec_dai, 0, mclk,
+                                       SND_SOC_CLOCK_IN);
+       if (err < 0) {
+               dev_err(card->dev, "codec_dai clock not set\n");
+               return err;
        }
 
        return 0;