]>
Commit | Line | Data |
---|---|---|
ea78042b SL |
1 | From 4b19b25e033276fc8cce2ae32a0ff6f160e52580 Mon Sep 17 00:00:00 2001 |
2 | From: Sasha Levin <sashal@kernel.org> | |
3 | Date: Mon, 25 Mar 2024 17:18:15 -0500 | |
4 | Subject: ASoC: rt712-sdca-sdw: fix locking sequence | |
5 | ||
6 | From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> | |
7 | ||
8 | [ Upstream commit c8b2e5c1b959d100990e4f0cbad38e7d047bb97c ] | |
9 | ||
10 | The disable_irq_lock protects the 'disable_irq' value, we need to lock | |
11 | before testing it. | |
12 | ||
13 | Fixes: 7a8735c1551e ("ASoC: rt712-sdca: fix for JD event handling in ClockStop Mode0") | |
14 | Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> | |
15 | Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com> | |
16 | Reviewed-by: Chao Song <chao.song@linux.intel.com> | |
17 | Link: https://msgid.link/r/20240325221817.206465-5-pierre-louis.bossart@linux.intel.com | |
18 | Signed-off-by: Mark Brown <broonie@kernel.org> | |
19 | Signed-off-by: Sasha Levin <sashal@kernel.org> | |
20 | --- | |
21 | sound/soc/codecs/rt712-sdca-sdw.c | 5 +++-- | |
22 | 1 file changed, 3 insertions(+), 2 deletions(-) | |
23 | ||
24 | diff --git a/sound/soc/codecs/rt712-sdca-sdw.c b/sound/soc/codecs/rt712-sdca-sdw.c | |
25 | index 6b644a89c5890..ba877432cea61 100644 | |
26 | --- a/sound/soc/codecs/rt712-sdca-sdw.c | |
27 | +++ b/sound/soc/codecs/rt712-sdca-sdw.c | |
28 | @@ -438,13 +438,14 @@ static int __maybe_unused rt712_sdca_dev_resume(struct device *dev) | |
29 | return 0; | |
30 | ||
31 | if (!slave->unattach_request) { | |
32 | + mutex_lock(&rt712->disable_irq_lock); | |
33 | if (rt712->disable_irq == true) { | |
34 | - mutex_lock(&rt712->disable_irq_lock); | |
35 | + | |
36 | sdw_write_no_pm(slave, SDW_SCP_SDCA_INTMASK1, SDW_SCP_SDCA_INTMASK_SDCA_0); | |
37 | sdw_write_no_pm(slave, SDW_SCP_SDCA_INTMASK2, SDW_SCP_SDCA_INTMASK_SDCA_8); | |
38 | rt712->disable_irq = false; | |
39 | - mutex_unlock(&rt712->disable_irq_lock); | |
40 | } | |
41 | + mutex_unlock(&rt712->disable_irq_lock); | |
42 | goto regmap_sync; | |
43 | } | |
44 | ||
45 | -- | |
46 | 2.43.0 | |
47 |