[PATCH 23/24] ASoC: codecs: cs48l32: Use guard() for mutex locks
From: phucduc . bui
Date: Fri Jun 26 2026 - 02:17:45 EST
From: bui duc phuc <phucduc.bui@xxxxxxxxx>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
Signed-off-by: bui duc phuc <phucduc.bui@xxxxxxxxx>
---
sound/soc/codecs/cs48l32.c | 29 +++++++++++++----------------
1 file changed, 13 insertions(+), 16 deletions(-)
diff --git a/sound/soc/codecs/cs48l32.c b/sound/soc/codecs/cs48l32.c
index 086ed0f57a85..275528aa48f6 100644
--- a/sound/soc/codecs/cs48l32.c
+++ b/sound/soc/codecs/cs48l32.c
@@ -8,6 +8,7 @@
#include <dt-bindings/sound/cs48l32.h>
#include <linux/array_size.h>
#include <linux/build_bug.h>
+#include <linux/cleanup.h>
#include <linux/clk.h>
#include <linux/container_of.h>
#include <linux/delay.h>
@@ -236,15 +237,13 @@ static int cs48l32_rate_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_v
int ret;
/* Prevent any mixer mux changes while we do this */
- mutex_lock(&cs48l32_codec->rate_lock);
+ guard(mutex)(&cs48l32_codec->rate_lock);
/* The write must be guarded by a number of SYSCLK cycles */
cs48l32_spin_sysclk(cs48l32_codec);
ret = snd_soc_put_enum_double(kcontrol, ucontrol);
cs48l32_spin_sysclk(cs48l32_codec);
- mutex_unlock(&cs48l32_codec->rate_lock);
-
return ret;
}
@@ -2242,7 +2241,6 @@ static int cs48l32_dai_set_sysclk(struct snd_soc_dai *dai,
struct cs48l32_dai_priv *dai_priv = &cs48l32_codec->dai[dai->id - 1];
unsigned int base = dai->driver->base;
unsigned int current_asp_rate, target_asp_rate;
- bool change_rate_domain = false;
int ret;
if (clk_id == dai_priv->clk)
@@ -2284,19 +2282,18 @@ static int cs48l32_dai_set_sysclk(struct snd_soc_dai *dai,
if ((current_asp_rate & CS48L32_ASP_RATE_MASK) !=
(target_asp_rate & CS48L32_ASP_RATE_MASK)) {
- change_rate_domain = true;
-
- mutex_lock(&cs48l32_codec->rate_lock);
/* Guard the rate change with SYSCLK cycles */
- cs48l32_spin_sysclk(cs48l32_codec);
- }
-
- snd_soc_component_update_bits(component, base + CS48L32_ASP_CONTROL1,
- CS48L32_ASP_RATE_MASK, target_asp_rate);
-
- if (change_rate_domain) {
- cs48l32_spin_sysclk(cs48l32_codec);
- mutex_unlock(&cs48l32_codec->rate_lock);
+ scoped_guard(mutex, &cs48l32_codec->rate_lock) {
+ cs48l32_spin_sysclk(cs48l32_codec);
+ snd_soc_component_update_bits(component,
+ base + CS48L32_ASP_CONTROL1,
+ CS48L32_ASP_RATE_MASK,
+ target_asp_rate);
+ cs48l32_spin_sysclk(cs48l32_codec);
+ }
+ } else {
+ snd_soc_component_update_bits(component, base + CS48L32_ASP_CONTROL1,
+ CS48L32_ASP_RATE_MASK, target_asp_rate);
}
}
--
2.43.0