aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2011-08-22 09:00:08 -0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2011-08-22 09:00:08 -0400
commitfef24d92a649ba1415c0a834259048153a2ab30a (patch)
tree6530bae4e72ce16de600fee8e9f602fa96f9be2b
parentfbf04076ef9b704ab27dbd1b2f97569227775bb4 (diff)
parenta41619455c0e28b6973471e87f1702c6129d3439 (diff)
Merge branch 'for-3.1' into for-3.2
-rw-r--r--sound/soc/codecs/wm8962.c4
-rw-r--r--sound/soc/codecs/wm8996.c26
-rw-r--r--sound/soc/samsung/speyside_wm8962.c6
3 files changed, 27 insertions, 9 deletions
diff --git a/sound/soc/codecs/wm8962.c b/sound/soc/codecs/wm8962.c
index 382c8779e605..8e397b286aa3 100644
--- a/sound/soc/codecs/wm8962.c
+++ b/sound/soc/codecs/wm8962.c
@@ -2354,6 +2354,8 @@ static int sysclk_event(struct snd_soc_dapm_widget *w,
2354 switch (event) { 2354 switch (event) {
2355 case SND_SOC_DAPM_PRE_PMU: 2355 case SND_SOC_DAPM_PRE_PMU:
2356 if (fll) { 2356 if (fll) {
2357 try_wait_for_completion(&wm8962->fll_lock);
2358
2357 snd_soc_update_bits(codec, WM8962_FLL_CONTROL_1, 2359 snd_soc_update_bits(codec, WM8962_FLL_CONTROL_1,
2358 WM8962_FLL_ENA, WM8962_FLL_ENA); 2360 WM8962_FLL_ENA, WM8962_FLL_ENA);
2359 if (wm8962->irq) { 2361 if (wm8962->irq) {
@@ -3449,6 +3451,8 @@ static int wm8962_set_fll(struct snd_soc_codec *codec, int fll_id, int source,
3449 snd_soc_write(codec, WM8962_FLL_CONTROL_7, fll_div.lambda); 3451 snd_soc_write(codec, WM8962_FLL_CONTROL_7, fll_div.lambda);
3450 snd_soc_write(codec, WM8962_FLL_CONTROL_8, fll_div.n); 3452 snd_soc_write(codec, WM8962_FLL_CONTROL_8, fll_div.n);
3451 3453
3454 try_wait_for_completion(&wm8962->fll_lock);
3455
3452 snd_soc_update_bits(codec, WM8962_FLL_CONTROL_1, 3456 snd_soc_update_bits(codec, WM8962_FLL_CONTROL_1,
3453 WM8962_FLL_FRAC | WM8962_FLL_REFCLK_SRC_MASK | 3457 WM8962_FLL_FRAC | WM8962_FLL_REFCLK_SRC_MASK |
3454 WM8962_FLL_ENA, fll1); 3458 WM8962_FLL_ENA, fll1);
diff --git a/sound/soc/codecs/wm8996.c b/sound/soc/codecs/wm8996.c
index acbad5be69bc..73a15888263b 100644
--- a/sound/soc/codecs/wm8996.c
+++ b/sound/soc/codecs/wm8996.c
@@ -990,15 +990,10 @@ SND_SOC_DAPM_MICBIAS("MICB1", WM8996_POWER_MANAGEMENT_1, 8, 0),
990SND_SOC_DAPM_PGA("IN1L PGA", WM8996_POWER_MANAGEMENT_2, 5, 0, NULL, 0), 990SND_SOC_DAPM_PGA("IN1L PGA", WM8996_POWER_MANAGEMENT_2, 5, 0, NULL, 0),
991SND_SOC_DAPM_PGA("IN1R PGA", WM8996_POWER_MANAGEMENT_2, 4, 0, NULL, 0), 991SND_SOC_DAPM_PGA("IN1R PGA", WM8996_POWER_MANAGEMENT_2, 4, 0, NULL, 0),
992 992
993SND_SOC_DAPM_MUX("IN1L Mux", SND_SOC_NOPM, 0, 0, &in1_mux), 993SND_SOC_DAPM_MUX("IN1L Mux", WM8996_POWER_MANAGEMENT_7, 2, 0, &in1_mux),
994SND_SOC_DAPM_MUX("IN1R Mux", SND_SOC_NOPM, 0, 0, &in1_mux), 994SND_SOC_DAPM_MUX("IN1R Mux", WM8996_POWER_MANAGEMENT_7, 3, 0, &in1_mux),
995SND_SOC_DAPM_MUX("IN2L Mux", SND_SOC_NOPM, 0, 0, &in2_mux), 995SND_SOC_DAPM_MUX("IN2L Mux", WM8996_POWER_MANAGEMENT_7, 6, 0, &in2_mux),
996SND_SOC_DAPM_MUX("IN2R Mux", SND_SOC_NOPM, 0, 0, &in2_mux), 996SND_SOC_DAPM_MUX("IN2R Mux", WM8996_POWER_MANAGEMENT_7, 7, 0, &in2_mux),
997
998SND_SOC_DAPM_PGA("IN1L", WM8996_POWER_MANAGEMENT_7, 2, 0, NULL, 0),
999SND_SOC_DAPM_PGA("IN1R", WM8996_POWER_MANAGEMENT_7, 3, 0, NULL, 0),
1000SND_SOC_DAPM_PGA("IN2L", WM8996_POWER_MANAGEMENT_7, 6, 0, NULL, 0),
1001SND_SOC_DAPM_PGA("IN2R", WM8996_POWER_MANAGEMENT_7, 7, 0, NULL, 0),
1002 997
1003SND_SOC_DAPM_SUPPLY("DMIC2", WM8996_POWER_MANAGEMENT_7, 9, 0, NULL, 0), 998SND_SOC_DAPM_SUPPLY("DMIC2", WM8996_POWER_MANAGEMENT_7, 9, 0, NULL, 0),
1004SND_SOC_DAPM_SUPPLY("DMIC1", WM8996_POWER_MANAGEMENT_7, 8, 0, NULL, 0), 999SND_SOC_DAPM_SUPPLY("DMIC1", WM8996_POWER_MANAGEMENT_7, 8, 0, NULL, 0),
@@ -1217,6 +1212,16 @@ static const struct snd_soc_dapm_route wm8996_dapm_routes[] = {
1217 { "AIF2RX0", NULL, "AIFCLK" }, 1212 { "AIF2RX0", NULL, "AIFCLK" },
1218 { "AIF2RX1", NULL, "AIFCLK" }, 1213 { "AIF2RX1", NULL, "AIFCLK" },
1219 1214
1215 { "AIF1TX0", NULL, "AIFCLK" },
1216 { "AIF1TX1", NULL, "AIFCLK" },
1217 { "AIF1TX2", NULL, "AIFCLK" },
1218 { "AIF1TX3", NULL, "AIFCLK" },
1219 { "AIF1TX4", NULL, "AIFCLK" },
1220 { "AIF1TX5", NULL, "AIFCLK" },
1221
1222 { "AIF2TX0", NULL, "AIFCLK" },
1223 { "AIF2TX1", NULL, "AIFCLK" },
1224
1220 { "DSP1RXL", NULL, "SYSDSPCLK" }, 1225 { "DSP1RXL", NULL, "SYSDSPCLK" },
1221 { "DSP1RXR", NULL, "SYSDSPCLK" }, 1226 { "DSP1RXR", NULL, "SYSDSPCLK" },
1222 { "DSP2RXL", NULL, "SYSDSPCLK" }, 1227 { "DSP2RXL", NULL, "SYSDSPCLK" },
@@ -2110,6 +2115,9 @@ static int wm8996_set_fll(struct snd_soc_codec *codec, int fll_id, int source,
2110 2115
2111 snd_soc_write(codec, WM8996_FLL_EFS_1, fll_div.lambda); 2116 snd_soc_write(codec, WM8996_FLL_EFS_1, fll_div.lambda);
2112 2117
2118 /* Clear any pending completions (eg, from failed startups) */
2119 try_wait_for_completion(&wm8996->fll_lock);
2120
2113 snd_soc_update_bits(codec, WM8996_FLL_CONTROL_1, 2121 snd_soc_update_bits(codec, WM8996_FLL_CONTROL_1,
2114 WM8996_FLL_ENA, WM8996_FLL_ENA); 2122 WM8996_FLL_ENA, WM8996_FLL_ENA);
2115 2123
diff --git a/sound/soc/samsung/speyside_wm8962.c b/sound/soc/samsung/speyside_wm8962.c
index 753e1c2702b0..3820a6b057dc 100644
--- a/sound/soc/samsung/speyside_wm8962.c
+++ b/sound/soc/samsung/speyside_wm8962.c
@@ -23,6 +23,9 @@ static int speyside_wm8962_set_bias_level(struct snd_soc_card *card,
23 struct snd_soc_dai *codec_dai = card->rtd[0].codec_dai; 23 struct snd_soc_dai *codec_dai = card->rtd[0].codec_dai;
24 int ret; 24 int ret;
25 25
26 if (dapm->dev != codec_dai->dev)
27 return 0;
28
26 switch (level) { 29 switch (level) {
27 case SND_SOC_BIAS_PREPARE: 30 case SND_SOC_BIAS_PREPARE:
28 if (dapm->bias_level == SND_SOC_BIAS_STANDBY) { 31 if (dapm->bias_level == SND_SOC_BIAS_STANDBY) {
@@ -57,6 +60,9 @@ static int speyside_wm8962_set_bias_level_post(struct snd_soc_card *card,
57 struct snd_soc_dai *codec_dai = card->rtd[0].codec_dai; 60 struct snd_soc_dai *codec_dai = card->rtd[0].codec_dai;
58 int ret; 61 int ret;
59 62
63 if (dapm->dev != codec_dai->dev)
64 return 0;
65
60 switch (level) { 66 switch (level) {
61 case SND_SOC_BIAS_STANDBY: 67 case SND_SOC_BIAS_STANDBY:
62 ret = snd_soc_dai_set_sysclk(codec_dai, WM8962_SYSCLK_MCLK, 68 ret = snd_soc_dai_set_sysclk(codec_dai, WM8962_SYSCLK_MCLK,