ASoC: Tegra: Don't return mclk_changed from utils_set_rate
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>
This commit is contained in:
parent
acb8303f15
commit
075413966a
@ -28,9 +28,10 @@
|
||||
#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;
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user