Skip to content

Commit

Permalink
ASoC: Support a wider range of sample rates on Speyside WM8962
Browse files Browse the repository at this point in the history
As we've only got one audio interface and it is symmetric we can just set
SYSCLK based on the sample rate requested by the application layer. Provide
a default so bypass paths work before audio playback.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
  • Loading branch information
Mark Brown committed Sep 23, 2011
1 parent 0a74268 commit ef473fe
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions sound/soc/samsung/speyside_wm8962.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@

#include "../codecs/wm8962.h"

static int sample_rate = 44100;

static int speyside_wm8962_set_bias_level(struct snd_soc_card *card,
struct snd_soc_dapm_context *dapm,
enum snd_soc_bias_level level)
Expand All @@ -31,13 +33,13 @@ static int speyside_wm8962_set_bias_level(struct snd_soc_card *card,
if (dapm->bias_level == SND_SOC_BIAS_STANDBY) {
ret = snd_soc_dai_set_pll(codec_dai, WM8962_FLL,
WM8962_FLL_MCLK, 32768,
44100 * 512);
sample_rate * 512);
if (ret < 0)
pr_err("Failed to start FLL: %d\n", ret);

ret = snd_soc_dai_set_sysclk(codec_dai,
WM8962_SYSCLK_FLL,
44100 * 512,
sample_rate * 512,
SND_SOC_CLOCK_IN);
if (ret < 0) {
pr_err("Failed to set SYSCLK: %d\n", ret);
Expand Down Expand Up @@ -109,6 +111,8 @@ static int speyside_wm8962_hw_params(struct snd_pcm_substream *substream,
if (ret < 0)
return ret;

sample_rate = params_rate(params);

return 0;
}

Expand Down

0 comments on commit ef473fe

Please sign in to comment.