diff options
| author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2010-11-05 13:50:48 -0400 |
|---|---|---|
| committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2010-11-06 11:11:24 -0400 |
| commit | 71a295602ed967fa22d96d57a2e38bb86de24db7 (patch) | |
| tree | 7cafff050fbb140174590dcdab359653845365ca | |
| parent | 6424dca23e6b5a2f7a19a69cf7c0990b11717b00 (diff) | |
ASoC: Lock the CODEC in PXA external jack controls
When doing anything with the system, especially DAPM, we need to hold the
CODEC mutex.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
| -rw-r--r-- | sound/soc/pxa/corgi.c | 5 | ||||
| -rw-r--r-- | sound/soc/pxa/magician.c | 4 | ||||
| -rw-r--r-- | sound/soc/pxa/poodle.c | 5 | ||||
| -rw-r--r-- | sound/soc/pxa/spitz.c | 5 | ||||
| -rw-r--r-- | sound/soc/pxa/tosa.c | 5 |
5 files changed, 24 insertions, 0 deletions
diff --git a/sound/soc/pxa/corgi.c b/sound/soc/pxa/corgi.c index 97e9423615c..f451acd4935 100644 --- a/sound/soc/pxa/corgi.c +++ b/sound/soc/pxa/corgi.c | |||
| @@ -100,8 +100,13 @@ static int corgi_startup(struct snd_pcm_substream *substream) | |||
| 100 | struct snd_soc_pcm_runtime *rtd = substream->private_data; | 100 | struct snd_soc_pcm_runtime *rtd = substream->private_data; |
| 101 | struct snd_soc_codec *codec = rtd->codec; | 101 | struct snd_soc_codec *codec = rtd->codec; |
| 102 | 102 | ||
| 103 | mutex_lock(&codec->mutex); | ||
| 104 | |||
| 103 | /* check the jack status at stream startup */ | 105 | /* check the jack status at stream startup */ |
| 104 | corgi_ext_control(codec); | 106 | corgi_ext_control(codec); |
| 107 | |||
| 108 | mutex_unlock(&codec->mutex); | ||
| 109 | |||
| 105 | return 0; | 110 | return 0; |
| 106 | } | 111 | } |
| 107 | 112 | ||
diff --git a/sound/soc/pxa/magician.c b/sound/soc/pxa/magician.c index b8207ced407..5ef0526924b 100644 --- a/sound/soc/pxa/magician.c +++ b/sound/soc/pxa/magician.c | |||
| @@ -72,9 +72,13 @@ static int magician_startup(struct snd_pcm_substream *substream) | |||
| 72 | struct snd_soc_pcm_runtime *rtd = substream->private_data; | 72 | struct snd_soc_pcm_runtime *rtd = substream->private_data; |
| 73 | struct snd_soc_codec *codec = rtd->codec; | 73 | struct snd_soc_codec *codec = rtd->codec; |
| 74 | 74 | ||
| 75 | mutex_lock(&codec->mutex); | ||
| 76 | |||
| 75 | /* check the jack status at stream startup */ | 77 | /* check the jack status at stream startup */ |
| 76 | magician_ext_control(codec); | 78 | magician_ext_control(codec); |
| 77 | 79 | ||
| 80 | mutex_unlock(&codec->mutex); | ||
| 81 | |||
| 78 | return 0; | 82 | return 0; |
| 79 | } | 83 | } |
| 80 | 84 | ||
diff --git a/sound/soc/pxa/poodle.c b/sound/soc/pxa/poodle.c index af84ee9c5e1..84edd0385a2 100644 --- a/sound/soc/pxa/poodle.c +++ b/sound/soc/pxa/poodle.c | |||
| @@ -77,8 +77,13 @@ static int poodle_startup(struct snd_pcm_substream *substream) | |||
| 77 | struct snd_soc_pcm_runtime *rtd = substream->private_data; | 77 | struct snd_soc_pcm_runtime *rtd = substream->private_data; |
| 78 | struct snd_soc_codec *codec = rtd->codec; | 78 | struct snd_soc_codec *codec = rtd->codec; |
| 79 | 79 | ||
| 80 | mutex_lock(&codec->mutex); | ||
| 81 | |||
| 80 | /* check the jack status at stream startup */ | 82 | /* check the jack status at stream startup */ |
| 81 | poodle_ext_control(codec); | 83 | poodle_ext_control(codec); |
| 84 | |||
| 85 | mutex_unlock(&codec->mutex); | ||
| 86 | |||
| 82 | return 0; | 87 | return 0; |
| 83 | } | 88 | } |
| 84 | 89 | ||
diff --git a/sound/soc/pxa/spitz.c b/sound/soc/pxa/spitz.c index f470f360f4d..0b30d7de24e 100644 --- a/sound/soc/pxa/spitz.c +++ b/sound/soc/pxa/spitz.c | |||
| @@ -108,8 +108,13 @@ static int spitz_startup(struct snd_pcm_substream *substream) | |||
| 108 | struct snd_soc_pcm_runtime *rtd = substream->private_data; | 108 | struct snd_soc_pcm_runtime *rtd = substream->private_data; |
| 109 | struct snd_soc_codec *codec = rtd->codec; | 109 | struct snd_soc_codec *codec = rtd->codec; |
| 110 | 110 | ||
| 111 | mutex_lock(&codec->mutex); | ||
| 112 | |||
| 111 | /* check the jack status at stream startup */ | 113 | /* check the jack status at stream startup */ |
| 112 | spitz_ext_control(codec); | 114 | spitz_ext_control(codec); |
| 115 | |||
| 116 | mutex_unlock(&codec->mutex); | ||
| 117 | |||
| 113 | return 0; | 118 | return 0; |
| 114 | } | 119 | } |
| 115 | 120 | ||
diff --git a/sound/soc/pxa/tosa.c b/sound/soc/pxa/tosa.c index 73d0edd8ded..7b983f93545 100644 --- a/sound/soc/pxa/tosa.c +++ b/sound/soc/pxa/tosa.c | |||
| @@ -81,8 +81,13 @@ static int tosa_startup(struct snd_pcm_substream *substream) | |||
| 81 | struct snd_soc_pcm_runtime *rtd = substream->private_data; | 81 | struct snd_soc_pcm_runtime *rtd = substream->private_data; |
| 82 | struct snd_soc_codec *codec = rtd->codec; | 82 | struct snd_soc_codec *codec = rtd->codec; |
| 83 | 83 | ||
| 84 | mutex_lock(&codec->mutex); | ||
| 85 | |||
| 84 | /* check the jack status at stream startup */ | 86 | /* check the jack status at stream startup */ |
| 85 | tosa_ext_control(codec); | 87 | tosa_ext_control(codec); |
| 88 | |||
| 89 | mutex_unlock(&codec->mutex); | ||
| 90 | |||
| 86 | return 0; | 91 | return 0; |
| 87 | } | 92 | } |
| 88 | 93 | ||
