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>
This commit is contained in:
parent
6424dca23e
commit
71a295602e
5 changed files with 24 additions and 0 deletions
|
@ -100,8 +100,13 @@ static int corgi_startup(struct snd_pcm_substream *substream)
|
||||||
struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||||
struct snd_soc_codec *codec = rtd->codec;
|
struct snd_soc_codec *codec = rtd->codec;
|
||||||
|
|
||||||
|
mutex_lock(&codec->mutex);
|
||||||
|
|
||||||
/* check the jack status at stream startup */
|
/* check the jack status at stream startup */
|
||||||
corgi_ext_control(codec);
|
corgi_ext_control(codec);
|
||||||
|
|
||||||
|
mutex_unlock(&codec->mutex);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -72,9 +72,13 @@ static int magician_startup(struct snd_pcm_substream *substream)
|
||||||
struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||||
struct snd_soc_codec *codec = rtd->codec;
|
struct snd_soc_codec *codec = rtd->codec;
|
||||||
|
|
||||||
|
mutex_lock(&codec->mutex);
|
||||||
|
|
||||||
/* check the jack status at stream startup */
|
/* check the jack status at stream startup */
|
||||||
magician_ext_control(codec);
|
magician_ext_control(codec);
|
||||||
|
|
||||||
|
mutex_unlock(&codec->mutex);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -77,8 +77,13 @@ static int poodle_startup(struct snd_pcm_substream *substream)
|
||||||
struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||||
struct snd_soc_codec *codec = rtd->codec;
|
struct snd_soc_codec *codec = rtd->codec;
|
||||||
|
|
||||||
|
mutex_lock(&codec->mutex);
|
||||||
|
|
||||||
/* check the jack status at stream startup */
|
/* check the jack status at stream startup */
|
||||||
poodle_ext_control(codec);
|
poodle_ext_control(codec);
|
||||||
|
|
||||||
|
mutex_unlock(&codec->mutex);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -108,8 +108,13 @@ static int spitz_startup(struct snd_pcm_substream *substream)
|
||||||
struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||||
struct snd_soc_codec *codec = rtd->codec;
|
struct snd_soc_codec *codec = rtd->codec;
|
||||||
|
|
||||||
|
mutex_lock(&codec->mutex);
|
||||||
|
|
||||||
/* check the jack status at stream startup */
|
/* check the jack status at stream startup */
|
||||||
spitz_ext_control(codec);
|
spitz_ext_control(codec);
|
||||||
|
|
||||||
|
mutex_unlock(&codec->mutex);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -81,8 +81,13 @@ static int tosa_startup(struct snd_pcm_substream *substream)
|
||||||
struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||||
struct snd_soc_codec *codec = rtd->codec;
|
struct snd_soc_codec *codec = rtd->codec;
|
||||||
|
|
||||||
|
mutex_lock(&codec->mutex);
|
||||||
|
|
||||||
/* check the jack status at stream startup */
|
/* check the jack status at stream startup */
|
||||||
tosa_ext_control(codec);
|
tosa_ext_control(codec);
|
||||||
|
|
||||||
|
mutex_unlock(&codec->mutex);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue