mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-14 04:26:45 +00:00
ASoC: rt5645: Lock mutex in rt5645_enable_push_button_irq
rt5645_enable_push_button_irq uses snd_soc_dapm_*_unlocked functions, so it needs to lock the required dapm mutex. Signed-off-by: Nicolas Boichat <drinkcat@chromium.org> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
345b0f50e7
commit
22f5d9f821
1 changed files with 6 additions and 0 deletions
|
@ -2762,6 +2762,7 @@ static void rt5645_enable_push_button_irq(struct snd_soc_codec *codec,
|
||||||
struct rt5645_priv *rt5645 = snd_soc_codec_get_drvdata(codec);
|
struct rt5645_priv *rt5645 = snd_soc_codec_get_drvdata(codec);
|
||||||
|
|
||||||
if (enable) {
|
if (enable) {
|
||||||
|
snd_soc_dapm_mutex_lock(&codec->dapm);
|
||||||
snd_soc_dapm_force_enable_pin_unlocked(&codec->dapm,
|
snd_soc_dapm_force_enable_pin_unlocked(&codec->dapm,
|
||||||
"ADC L power");
|
"ADC L power");
|
||||||
snd_soc_dapm_force_enable_pin_unlocked(&codec->dapm,
|
snd_soc_dapm_force_enable_pin_unlocked(&codec->dapm,
|
||||||
|
@ -2771,6 +2772,8 @@ static void rt5645_enable_push_button_irq(struct snd_soc_codec *codec,
|
||||||
snd_soc_dapm_force_enable_pin_unlocked(&codec->dapm,
|
snd_soc_dapm_force_enable_pin_unlocked(&codec->dapm,
|
||||||
"Mic Det Power");
|
"Mic Det Power");
|
||||||
snd_soc_dapm_sync_unlocked(&codec->dapm);
|
snd_soc_dapm_sync_unlocked(&codec->dapm);
|
||||||
|
snd_soc_dapm_mutex_unlock(&codec->dapm);
|
||||||
|
|
||||||
snd_soc_update_bits(codec,
|
snd_soc_update_bits(codec,
|
||||||
RT5645_INT_IRQ_ST, 0x8, 0x8);
|
RT5645_INT_IRQ_ST, 0x8, 0x8);
|
||||||
snd_soc_update_bits(codec,
|
snd_soc_update_bits(codec,
|
||||||
|
@ -2781,6 +2784,8 @@ static void rt5645_enable_push_button_irq(struct snd_soc_codec *codec,
|
||||||
} else {
|
} else {
|
||||||
snd_soc_update_bits(codec, RT5650_4BTN_IL_CMD2, 0x8000, 0x0);
|
snd_soc_update_bits(codec, RT5650_4BTN_IL_CMD2, 0x8000, 0x0);
|
||||||
snd_soc_update_bits(codec, RT5645_INT_IRQ_ST, 0x8, 0x0);
|
snd_soc_update_bits(codec, RT5645_INT_IRQ_ST, 0x8, 0x0);
|
||||||
|
|
||||||
|
snd_soc_dapm_mutex_lock(&codec->dapm);
|
||||||
snd_soc_dapm_disable_pin_unlocked(&codec->dapm,
|
snd_soc_dapm_disable_pin_unlocked(&codec->dapm,
|
||||||
"ADC L power");
|
"ADC L power");
|
||||||
snd_soc_dapm_disable_pin_unlocked(&codec->dapm,
|
snd_soc_dapm_disable_pin_unlocked(&codec->dapm,
|
||||||
|
@ -2791,6 +2796,7 @@ static void rt5645_enable_push_button_irq(struct snd_soc_codec *codec,
|
||||||
snd_soc_dapm_disable_pin_unlocked(&codec->dapm,
|
snd_soc_dapm_disable_pin_unlocked(&codec->dapm,
|
||||||
"Mic Det Power");
|
"Mic Det Power");
|
||||||
snd_soc_dapm_sync_unlocked(&codec->dapm);
|
snd_soc_dapm_sync_unlocked(&codec->dapm);
|
||||||
|
snd_soc_dapm_mutex_unlock(&codec->dapm);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue