[PATCH 1/3] ALSA: hda/cs35l41: Use scoped_guard() for fw_mutex in cs35l41_hda_bind()

From: wangdich9700

Date: Wed Jul 01 2026 - 02:51:57 EST


From: wangdicheng <wangdicheng@xxxxxxxxxx>

The rest of the driver already uses guard()/scoped_guard() for
fw_mutex. Replace the manual mutex_lock/mutex_unlock pair in
cs35l41_hda_bind() with scoped_guard() for consistency.

No functional changes.

Signed-off-by: wangdicheng <wangdicheng@xxxxxxxxxx>
---
sound/hda/codecs/side-codecs/cs35l41_hda.c | 57 +++++++++++-----------
1 file changed, 28 insertions(+), 29 deletions(-)

diff --git a/sound/hda/codecs/side-codecs/cs35l41_hda.c b/sound/hda/codecs/side-codecs/cs35l41_hda.c
index 64a5bd895fd1..818ea8e3f8d6 100644
--- a/sound/hda/codecs/side-codecs/cs35l41_hda.c
+++ b/sound/hda/codecs/side-codecs/cs35l41_hda.c
@@ -1482,42 +1482,41 @@ static int cs35l41_hda_bind(struct device *dev, struct device *master, void *mas

guard(pm_runtime_active_auto)(dev);

- mutex_lock(&cs35l41->fw_mutex);
-
- comp->dev = dev;
- cs35l41->codec = parent->codec;
- if (!cs35l41->acpi_subsystem_id)
- cs35l41->acpi_subsystem_id = kasprintf(GFP_KERNEL, "%.8x",
- cs35l41->codec->core.subsystem_id);
-
- strscpy(comp->name, dev_name(dev), sizeof(comp->name));
+ scoped_guard(mutex, &cs35l41->fw_mutex) {
+ comp->dev = dev;
+ cs35l41->codec = parent->codec;
+ if (!cs35l41->acpi_subsystem_id)
+ cs35l41->acpi_subsystem_id = kasprintf(GFP_KERNEL, "%.8x",
+ cs35l41->codec->core.subsystem_id);

- cs35l41->firmware_type = CS35L41_HDA_FW_SPK_PROT;
+ strscpy(comp->name, dev_name(dev), sizeof(comp->name));

- if (firmware_autostart) {
- dev_dbg(cs35l41->dev, "Firmware Autostart.\n");
- cs35l41->request_fw_load = true;
- if (cs35l41_smart_amp(cs35l41) < 0)
- dev_warn(cs35l41->dev, "Cannot Run Firmware, reverting to dsp bypass...\n");
- } else {
- dev_dbg(cs35l41->dev, "Firmware Autostart is disabled.\n");
- }
+ cs35l41->firmware_type = CS35L41_HDA_FW_SPK_PROT;

- ret = cs35l41_create_controls(cs35l41);
+ if (firmware_autostart) {
+ dev_dbg(cs35l41->dev, "Firmware Autostart.\n");
+ cs35l41->request_fw_load = true;
+ if (cs35l41_smart_amp(cs35l41) < 0)
+ dev_warn(cs35l41->dev, "Cannot Run Firmware, reverting to dsp bypass...\n");
+ } else {
+ dev_dbg(cs35l41->dev, "Firmware Autostart is disabled.\n");
+ }

- comp->playback_hook = cs35l41_hda_playback_hook;
- comp->pre_playback_hook = cs35l41_hda_pre_playback_hook;
- comp->post_playback_hook = cs35l41_hda_post_playback_hook;
- comp->acpi_notify = cs35l41_acpi_device_notify;
- comp->adev = cs35l41->dacpi;
+ ret = cs35l41_create_controls(cs35l41);

- comp->acpi_notifications_supported = cs35l41_dsm_supported(acpi_device_handle(comp->adev),
- CS35L41_DSM_GET_MUTE);
+ comp->playback_hook = cs35l41_hda_playback_hook;
+ comp->pre_playback_hook = cs35l41_hda_pre_playback_hook;
+ comp->post_playback_hook = cs35l41_hda_post_playback_hook;
+ comp->acpi_notify = cs35l41_acpi_device_notify;
+ comp->adev = cs35l41->dacpi;

- cs35l41->mute_override = cs35l41_get_acpi_mute_state(cs35l41,
- acpi_device_handle(cs35l41->dacpi)) > 0;
+ comp->acpi_notifications_supported =
+ cs35l41_dsm_supported(acpi_device_handle(comp->adev),
+ CS35L41_DSM_GET_MUTE);

- mutex_unlock(&cs35l41->fw_mutex);
+ cs35l41->mute_override = cs35l41_get_acpi_mute_state(cs35l41,
+ acpi_device_handle(cs35l41->dacpi)) > 0;
+ }

sleep_flags = lock_system_sleep();
if (!device_link_add(&cs35l41->codec->core.dev, cs35l41->dev, DL_FLAG_STATELESS))
--
2.25.1