diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2011-08-22 09:00:08 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2011-08-22 09:00:08 -0400 |
commit | fef24d92a649ba1415c0a834259048153a2ab30a (patch) | |
tree | 6530bae4e72ce16de600fee8e9f602fa96f9be2b | |
parent | fbf04076ef9b704ab27dbd1b2f97569227775bb4 (diff) | |
parent | a41619455c0e28b6973471e87f1702c6129d3439 (diff) |
Merge branch 'for-3.1' into for-3.2
-rw-r--r-- | sound/soc/codecs/wm8962.c | 4 | ||||
-rw-r--r-- | sound/soc/codecs/wm8996.c | 26 | ||||
-rw-r--r-- | sound/soc/samsung/speyside_wm8962.c | 6 |
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), | |||
990 | SND_SOC_DAPM_PGA("IN1L PGA", WM8996_POWER_MANAGEMENT_2, 5, 0, NULL, 0), | 990 | SND_SOC_DAPM_PGA("IN1L PGA", WM8996_POWER_MANAGEMENT_2, 5, 0, NULL, 0), |
991 | SND_SOC_DAPM_PGA("IN1R PGA", WM8996_POWER_MANAGEMENT_2, 4, 0, NULL, 0), | 991 | SND_SOC_DAPM_PGA("IN1R PGA", WM8996_POWER_MANAGEMENT_2, 4, 0, NULL, 0), |
992 | 992 | ||
993 | SND_SOC_DAPM_MUX("IN1L Mux", SND_SOC_NOPM, 0, 0, &in1_mux), | 993 | SND_SOC_DAPM_MUX("IN1L Mux", WM8996_POWER_MANAGEMENT_7, 2, 0, &in1_mux), |
994 | SND_SOC_DAPM_MUX("IN1R Mux", SND_SOC_NOPM, 0, 0, &in1_mux), | 994 | SND_SOC_DAPM_MUX("IN1R Mux", WM8996_POWER_MANAGEMENT_7, 3, 0, &in1_mux), |
995 | SND_SOC_DAPM_MUX("IN2L Mux", SND_SOC_NOPM, 0, 0, &in2_mux), | 995 | SND_SOC_DAPM_MUX("IN2L Mux", WM8996_POWER_MANAGEMENT_7, 6, 0, &in2_mux), |
996 | SND_SOC_DAPM_MUX("IN2R Mux", SND_SOC_NOPM, 0, 0, &in2_mux), | 996 | SND_SOC_DAPM_MUX("IN2R Mux", WM8996_POWER_MANAGEMENT_7, 7, 0, &in2_mux), |
997 | |||
998 | SND_SOC_DAPM_PGA("IN1L", WM8996_POWER_MANAGEMENT_7, 2, 0, NULL, 0), | ||
999 | SND_SOC_DAPM_PGA("IN1R", WM8996_POWER_MANAGEMENT_7, 3, 0, NULL, 0), | ||
1000 | SND_SOC_DAPM_PGA("IN2L", WM8996_POWER_MANAGEMENT_7, 6, 0, NULL, 0), | ||
1001 | SND_SOC_DAPM_PGA("IN2R", WM8996_POWER_MANAGEMENT_7, 7, 0, NULL, 0), | ||
1002 | 997 | ||
1003 | SND_SOC_DAPM_SUPPLY("DMIC2", WM8996_POWER_MANAGEMENT_7, 9, 0, NULL, 0), | 998 | SND_SOC_DAPM_SUPPLY("DMIC2", WM8996_POWER_MANAGEMENT_7, 9, 0, NULL, 0), |
1004 | SND_SOC_DAPM_SUPPLY("DMIC1", WM8996_POWER_MANAGEMENT_7, 8, 0, NULL, 0), | 999 | SND_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, |