summaryrefslogtreecommitdiff
path: root/sound/soc/soc-dapm.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-03-02 15:20:41 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2012-03-02 15:20:41 -0800
commit5e8063d758725a5a6f38ac34a37d13509ccea0da (patch)
tree61a56d860787d7f82348006addb359f6e38f9355 /sound/soc/soc-dapm.c
parent200e9ef7ab51f3dce4f35f90ea458cf43ea83bb8 (diff)
parente49a3434f1bc64dc49ff3a56e416bb5894868dde (diff)
downloadlwn-5e8063d758725a5a6f38ac34a37d13509ccea0da.tar.gz
lwn-5e8063d758725a5a6f38ac34a37d13509ccea0da.zip
Merge tag 'sound-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
sound fixes for 3.3-rc6 from Takashi Iwai This contains again regression fixes for various HD-audio and ASoC regarding SSI and dapm shutdown path. In addition, a minor azt3328 fix and the correction of the new jack-notification strings in HD-audio. * tag 'sound-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: ALSA: hda - Kill hyphenated names ALSA: hda - Add a fake mute feature ALSA: hda - Always set HP pin in unsol handler for STAC/IDT codecs ALSA: azt3328 - Fix NULL ptr dereference on cards without OPL3 ALSA: hda/realtek - Fix resume of multiple input sources ASoC: i.MX SSI: Fix DSP_A format. ASoC: dapm: Check for bias level when powering down
Diffstat (limited to 'sound/soc/soc-dapm.c')
-rw-r--r--sound/soc/soc-dapm.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
index 1f55ded4047f..1315663c1c09 100644
--- a/sound/soc/soc-dapm.c
+++ b/sound/soc/soc-dapm.c
@@ -3068,9 +3068,13 @@ static void soc_dapm_shutdown_codec(struct snd_soc_dapm_context *dapm)
* standby.
*/
if (powerdown) {
- snd_soc_dapm_set_bias_level(dapm, SND_SOC_BIAS_PREPARE);
+ if (dapm->bias_level == SND_SOC_BIAS_ON)
+ snd_soc_dapm_set_bias_level(dapm,
+ SND_SOC_BIAS_PREPARE);
dapm_seq_run(dapm, &down_list, 0, false);
- snd_soc_dapm_set_bias_level(dapm, SND_SOC_BIAS_STANDBY);
+ if (dapm->bias_level == SND_SOC_BIAS_PREPARE)
+ snd_soc_dapm_set_bias_level(dapm,
+ SND_SOC_BIAS_STANDBY);
}
}
@@ -3083,7 +3087,9 @@ void snd_soc_dapm_shutdown(struct snd_soc_card *card)
list_for_each_entry(codec, &card->codec_dev_list, list) {
soc_dapm_shutdown_codec(&codec->dapm);
- snd_soc_dapm_set_bias_level(&codec->dapm, SND_SOC_BIAS_OFF);
+ if (codec->dapm.bias_level == SND_SOC_BIAS_STANDBY)
+ snd_soc_dapm_set_bias_level(&codec->dapm,
+ SND_SOC_BIAS_OFF);
}
}