aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/samsung/speyside_wm8962.c
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2011-09-23 16:05:00 +0100
committerMark Brown <broonie@opensource.wolfsonmicro.com>2011-09-23 16:59:37 +0100
commitef473fee67f88c0032eb5e55d940b81b08c0ee89 (patch)
tree790b69e9bdf016ef3610fde324d3a6256566e52c /sound/soc/samsung/speyside_wm8962.c
parentASoC: Add missed free_irq in wm5100_remove and wm5100_probe error path (diff)
downloadlinux-dev-ef473fee67f88c0032eb5e55d940b81b08c0ee89.tar.xz
linux-dev-ef473fee67f88c0032eb5e55d940b81b08c0ee89.zip
ASoC: Support a wider range of sample rates on Speyside WM8962
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>
Diffstat (limited to 'sound/soc/samsung/speyside_wm8962.c')
-rw-r--r--sound/soc/samsung/speyside_wm8962.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/sound/soc/samsung/speyside_wm8962.c b/sound/soc/samsung/speyside_wm8962.c
index 3820a6b057dc..98b28eac4120 100644
--- a/sound/soc/samsung/speyside_wm8962.c
+++ b/sound/soc/samsung/speyside_wm8962.c
@@ -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)
@@ -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);
@@ -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;
}