From 4a196d24191e2717431583559e83889e38d4bfa1 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Mon, 11 Apr 2011 23:32:03 -0700 Subject: [PATCH] --- yaml --- r: 248279 b: refs/heads/master c: ea0a591a28b9249ea585f2cf8045e43f57f48fbb h: refs/heads/master i: 248277: 4ea3a2c5b8d620a2c44ee30afb886376f6c19d74 248275: 6cbd759fa07d2ea0ca9b2d6e659a0cbef0b8a19e 248271: f835492fe97e226d14eab2e00c30a9bc5f59fe06 v: v3 --- [refs] | 2 +- trunk/sound/soc/samsung/speyside.c | 37 ++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 77084f1cb82a..6a42b7335059 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ecfb1adf5f037eaff0b678918d84a8febd9f1c3e +refs/heads/master: ea0a591a28b9249ea585f2cf8045e43f57f48fbb diff --git a/trunk/sound/soc/samsung/speyside.c b/trunk/sound/soc/samsung/speyside.c index 6ec44a354a6d..1e51750fd3a2 100644 --- a/trunk/sound/soc/samsung/speyside.c +++ b/trunk/sound/soc/samsung/speyside.c @@ -14,6 +14,33 @@ #include "../codecs/wm8915.h" +static int speyside_set_bias_level(struct snd_soc_card *card, + enum snd_soc_bias_level level) +{ + struct snd_soc_dai *codec_dai = card->rtd[0].codec_dai; + int ret; + + switch (level) { + case SND_SOC_BIAS_STANDBY: + ret = snd_soc_dai_set_sysclk(codec_dai, WM8915_SYSCLK_MCLK1, + 32768, SND_SOC_CLOCK_IN); + if (ret < 0) + return ret; + + ret = snd_soc_dai_set_pll(codec_dai, WM8915_FLL_MCLK1, + 0, 0, 0); + if (ret < 0) { + pr_err("Failed to stop FLL\n"); + return ret; + } + + default: + break; + } + + return 0; +} + static int speyside_hw_params(struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params) { @@ -51,6 +78,13 @@ static struct snd_soc_ops speyside_ops = { .hw_params = speyside_hw_params, }; +static int speyside_wm8915_init(struct snd_soc_pcm_runtime *rtd) +{ + struct snd_soc_dai *dai = rtd->codec_dai; + + return snd_soc_dai_set_sysclk(dai, WM8915_SYSCLK_MCLK1, 32768, 0); +} + static struct snd_soc_dai_link speyside_dai[] = { { .name = "CPU", @@ -59,6 +93,7 @@ static struct snd_soc_dai_link speyside_dai[] = { .codec_dai_name = "wm8915-aif1", .platform_name = "samsung-audio", .codec_name = "wm8915.1-001a", + .init = speyside_wm8915_init, .ops = &speyside_ops, }, }; @@ -91,6 +126,8 @@ static struct snd_soc_card speyside = { .dai_link = speyside_dai, .num_links = ARRAY_SIZE(speyside_dai), + .set_bias_level = speyside_set_bias_level, + .dapm_widgets = widgets, .num_dapm_widgets = ARRAY_SIZE(widgets), .dapm_routes = audio_paths,