From: phucduc.bui@gmail.com
To: Mark Brown <broonie@kernel.org>, Takashi Iwai <tiwai@suse.com>,
Nick Li <nick.li@foursemi.com>,
Herve Codina <herve.codina@bootlin.com>
Cc: Support Opensource <support.opensource@diasemi.com>,
Liam Girdwood <lgirdwood@gmail.com>,
Jaroslav Kysela <perex@perex.cz>,
Srinivas Kandagatla <srini@kernel.org>,
Charles Keepax <ckeepax@opensource.cirrus.com>,
Richard Fitzgerald <rf@opensource.cirrus.com>,
Matthias Brugger <matthias.bgg@gmail.com>,
AngeloGioacchino Del Regno
<angelogioacchino.delregno@collabora.com>,
Shenghao Ding <shenghao-ding@ti.com>, Kevin Lu <kevin-lu@ti.com>,
Baojun Xu <baojun.xu@ti.com>, Sen Wang <sen@ti.com>,
Oder Chiou <oder_chiou@realtek.com>,
Linus Walleij <linusw@kernel.org>,
Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>,
u.kleine-koenig@baylibre.com, Zhang Yi <zhangyi@everest-semi.com>,
Marco Crivellari <marco.crivellari@suse.com>,
Kees Cook <kees@kernel.org>, HyeongJun An <sammiee5311@gmail.com>,
Arnd Bergmann <arnd@arndb.de>,
Qianfeng Rong <rongqianfeng@vivo.com>,
linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org,
patches@opensource.cirrus.com,
linux-mediatek@lists.infradead.org,
linux-arm-msm@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
bui duc phuc <phucduc.bui@gmail.com>
Subject: [PATCH 07/27] ASoC: codecs: hdac_hdmi: Use guard() for mutex locks
Date: Tue, 30 Jun 2026 13:34:29 +0700 [thread overview]
Message-ID: <20260630063449.503996-8-phucduc.bui@gmail.com> (raw)
In-Reply-To: <20260630063449.503996-1-phucduc.bui@gmail.com>
From: bui duc phuc <phucduc.bui@gmail.com>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
Signed-off-by: bui duc phuc <phucduc.bui@gmail.com>
---
sound/soc/codecs/hdac_hdmi.c | 117 +++++++++++++++++------------------
1 file changed, 57 insertions(+), 60 deletions(-)
diff --git a/sound/soc/codecs/hdac_hdmi.c b/sound/soc/codecs/hdac_hdmi.c
index 3220f9226e0b..387fa22438a0 100644
--- a/sound/soc/codecs/hdac_hdmi.c
+++ b/sound/soc/codecs/hdac_hdmi.c
@@ -10,6 +10,7 @@
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
+#include <linux/cleanup.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <linux/module.h>
@@ -537,10 +538,11 @@ static struct hdac_hdmi_port *hdac_hdmi_get_port_from_cvt(
continue;
list_for_each_entry(port, &pcm->port_list, head) {
- mutex_lock(&pcm->lock);
- ret = hdac_hdmi_query_port_connlist(hdev,
- port->pin, port);
- mutex_unlock(&pcm->lock);
+ scoped_guard(mutex, &pcm->lock) {
+ ret = hdac_hdmi_query_port_connlist(hdev,
+ port->pin,
+ port);
+ }
if (ret < 0)
continue;
@@ -640,11 +642,11 @@ static void hdac_hdmi_pcm_close(struct snd_pcm_substream *substream,
pcm = hdac_hdmi_get_pcm_from_cvt(hdmi, dai_map->cvt);
if (pcm) {
- mutex_lock(&pcm->lock);
- pcm->chmap_set = false;
- memset(pcm->chmap, 0, sizeof(pcm->chmap));
- pcm->channels = 0;
- mutex_unlock(&pcm->lock);
+ scoped_guard(mutex, &pcm->lock) {
+ pcm->chmap_set = false;
+ memset(pcm->chmap, 0, sizeof(pcm->chmap));
+ pcm->channels = 0;
+ }
}
if (dai_map->port)
@@ -922,7 +924,7 @@ static int hdac_hdmi_set_pin_port_mux(struct snd_kcontrol *kcontrol,
if (port == NULL)
return -EINVAL;
- mutex_lock(&hdmi->pin_mutex);
+ guard(mutex)(&hdmi->pin_mutex);
list_for_each_entry(pcm, &hdmi->pcm_list, head) {
if (list_empty(&pcm->port_list))
continue;
@@ -945,12 +947,10 @@ static int hdac_hdmi_set_pin_port_mux(struct snd_kcontrol *kcontrol,
list_add_tail(&port->head, &pcm->port_list);
if (port->eld.monitor_present && port->eld.eld_valid) {
hdac_hdmi_jack_report_sync(pcm, port, true);
- mutex_unlock(&hdmi->pin_mutex);
return ret;
}
}
}
- mutex_unlock(&hdmi->pin_mutex);
return ret;
}
@@ -1274,67 +1274,65 @@ static void hdac_hdmi_present_sense(struct hdac_hdmi_pin *pin,
* In case of non MST pin, get_eld info API expectes port
* to be -1.
*/
- mutex_lock(&hdmi->pin_mutex);
- port->eld.monitor_present = false;
+ scoped_guard(mutex, &hdmi->pin_mutex) {
+ port->eld.monitor_present = false;
- if (pin->mst_capable)
- port_id = port->id;
+ if (pin->mst_capable)
+ port_id = port->id;
- size = snd_hdac_acomp_get_eld(hdev, pin->nid, port_id,
- &port->eld.monitor_present,
- port->eld.eld_buffer,
- ELD_MAX_SIZE);
+ size = snd_hdac_acomp_get_eld(hdev, pin->nid, port_id,
+ &port->eld.monitor_present,
+ port->eld.eld_buffer,
+ ELD_MAX_SIZE);
- if (size > 0) {
- size = min(size, ELD_MAX_SIZE);
- if (hdac_hdmi_parse_eld(hdev, port) < 0)
- size = -EINVAL;
- }
-
- eld_valid = port->eld.eld_valid;
+ if (size > 0) {
+ size = min(size, ELD_MAX_SIZE);
+ if (hdac_hdmi_parse_eld(hdev, port) < 0)
+ size = -EINVAL;
+ }
- if (size > 0) {
- port->eld.eld_valid = true;
- port->eld.eld_size = size;
- } else {
- port->eld.eld_valid = false;
- port->eld.eld_size = 0;
- }
+ eld_valid = port->eld.eld_valid;
- eld_changed = (eld_valid != port->eld.eld_valid);
+ if (size > 0) {
+ port->eld.eld_valid = true;
+ port->eld.eld_size = size;
+ } else {
+ port->eld.eld_valid = false;
+ port->eld.eld_size = 0;
+ }
- pcm = hdac_hdmi_get_pcm(hdev, port);
+ eld_changed = (eld_valid != port->eld.eld_valid);
- if (!port->eld.monitor_present || !port->eld.eld_valid) {
+ pcm = hdac_hdmi_get_pcm(hdev, port);
- dev_dbg(&hdev->dev, "%s: disconnect for pin:port %d:%d\n",
- __func__, pin->nid, port->id);
+ if (!port->eld.monitor_present || !port->eld.eld_valid) {
- /*
- * PCMs are not registered during device probe, so don't
- * report jack here. It will be done in usermode mux
- * control select.
- */
- if (pcm) {
- hdac_hdmi_jack_report(pcm, port, false);
- schedule_work(&port->dapm_work);
- }
+ dev_dbg(&hdev->dev, "%s: disconnect for pin:port %d:%d\n",
+ __func__, pin->nid, port->id);
- mutex_unlock(&hdmi->pin_mutex);
- return;
- }
+ /*
+ * PCMs are not registered during device probe, so don't
+ * report jack here. It will be done in usermode mux
+ * control select.
+ */
+ if (pcm) {
+ hdac_hdmi_jack_report(pcm, port, false);
+ schedule_work(&port->dapm_work);
+ }
- if (port->eld.monitor_present && port->eld.eld_valid) {
- if (pcm) {
- hdac_hdmi_jack_report(pcm, port, true);
- schedule_work(&port->dapm_work);
+ return;
}
- print_hex_dump_debug("ELD: ", DUMP_PREFIX_OFFSET, 16, 1,
- port->eld.eld_buffer, port->eld.eld_size, false);
+ if (port->eld.monitor_present && port->eld.eld_valid) {
+ if (pcm) {
+ hdac_hdmi_jack_report(pcm, port, true);
+ schedule_work(&port->dapm_work);
+ }
+ print_hex_dump_debug("ELD: ", DUMP_PREFIX_OFFSET, 16, 1,
+ port->eld.eld_buffer, port->eld.eld_size, false);
+ }
}
- mutex_unlock(&hdmi->pin_mutex);
if (eld_changed && pcm)
snd_ctl_notify(hdmi->card,
@@ -1795,13 +1793,12 @@ static void hdac_hdmi_set_chmap(struct hdac_device *hdev, int pcm_idx,
if (list_empty(&pcm->port_list))
return;
- mutex_lock(&pcm->lock);
+ guard(mutex)(&pcm->lock);
pcm->chmap_set = true;
memcpy(pcm->chmap, chmap, ARRAY_SIZE(pcm->chmap));
list_for_each_entry(port, &pcm->port_list, head)
if (prepared)
hdac_hdmi_setup_audio_infoframe(hdev, pcm, port);
- mutex_unlock(&pcm->lock);
}
static bool is_hdac_hdmi_pcm_attached(struct hdac_device *hdev, int pcm_idx)
--
2.43.0
next prev parent reply other threads:[~2026-06-30 6:36 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-30 6:34 [PATCH 00/27] ASoC: codecs: Use guard() for mutex & spin locks phucduc.bui
2026-06-30 6:34 ` [PATCH 01/27] ASoC: codecs: da7213: Use guard() for mutex locks phucduc.bui
2026-06-30 6:34 ` [PATCH 02/27] ASoC: codecs: da7219: " phucduc.bui
2026-06-30 6:34 ` [PATCH 03/27] ASoC: codecs: es8316: " phucduc.bui
2026-06-30 6:34 ` [PATCH 04/27] ASoC: codecs: es8326: " phucduc.bui
2026-06-30 6:34 ` [PATCH 05/27] ASoC: codecs: es9356: " phucduc.bui
2026-06-30 6:34 ` [PATCH 06/27] ASoC: codecs: fs210x: " phucduc.bui
2026-06-30 6:34 ` phucduc.bui [this message]
2026-06-30 6:34 ` [PATCH 08/27] ASoC: codecs: hdmi-codec: " phucduc.bui
2026-06-30 6:34 ` [PATCH 09/27] ASoC: codecs: idt821034: " phucduc.bui
2026-06-30 7:28 ` Herve Codina
2026-06-30 9:14 ` Bui Duc Phuc
2026-06-30 6:34 ` [PATCH 10/27] ASoC: codecs: lpass-macro: " phucduc.bui
2026-06-30 6:34 ` [PATCH 11/27] ASoC: codecs: madera: " phucduc.bui
2026-06-30 6:34 ` [PATCH 12/27] ASoC: codecs: max98095: " phucduc.bui
2026-06-30 6:34 ` [PATCH 13/27] ASoC: codecs: mt6359-accdet: " phucduc.bui
2026-06-30 6:34 ` [PATCH 14/27] ASoC: codecs: pcm512x: " phucduc.bui
2026-06-30 6:34 ` [PATCH 15/27] ASoC: codecs: pcm6240: " phucduc.bui
2026-06-30 6:34 ` [PATCH 16/27] ASoC: codecs: peb2466: " phucduc.bui
2026-06-30 6:54 ` Herve Codina
2026-06-30 6:34 ` [PATCH 17/27] ASoC: codecs: rt5514-spi: " phucduc.bui
2026-06-30 6:34 ` [PATCH 18/27] ASoC: codecs: rt5645: " phucduc.bui
2026-06-30 6:34 ` [PATCH 19/27] ASoC: codecs: rt5665: " phucduc.bui
2026-06-30 6:34 ` [PATCH 20/27] ASoC: codecs: rt5668: " phucduc.bui
2026-06-30 6:34 ` [PATCH 21/27] ASoC: codecs: rt5677: " phucduc.bui
2026-06-30 6:34 ` [PATCH 22/27] ASoC: codecs: rt5682: " phucduc.bui
2026-06-30 6:34 ` [PATCH 23/27] ASoC: codecs: rt700: " phucduc.bui
2026-06-30 6:34 ` [PATCH 24/27] ASoC: codecs: rt711: " phucduc.bui
2026-06-30 6:34 ` [PATCH 25/27] ASoC: codecs: rt712: " phucduc.bui
2026-06-30 6:34 ` [PATCH 26/27] ASoC: codecs: rt721: " phucduc.bui
2026-06-30 6:34 ` [PATCH 27/27] ASoC: codecs: rt722: " phucduc.bui
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260630063449.503996-8-phucduc.bui@gmail.com \
--to=phucduc.bui@gmail.com \
--cc=angelogioacchino.delregno@collabora.com \
--cc=arnd@arndb.de \
--cc=baojun.xu@ti.com \
--cc=broonie@kernel.org \
--cc=ckeepax@opensource.cirrus.com \
--cc=herve.codina@bootlin.com \
--cc=kees@kernel.org \
--cc=kevin-lu@ti.com \
--cc=kuninori.morimoto.gx@renesas.com \
--cc=lgirdwood@gmail.com \
--cc=linusw@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=linux-sound@vger.kernel.org \
--cc=marco.crivellari@suse.com \
--cc=matthias.bgg@gmail.com \
--cc=nick.li@foursemi.com \
--cc=oder_chiou@realtek.com \
--cc=patches@opensource.cirrus.com \
--cc=perex@perex.cz \
--cc=rf@opensource.cirrus.com \
--cc=rongqianfeng@vivo.com \
--cc=sammiee5311@gmail.com \
--cc=sen@ti.com \
--cc=shenghao-ding@ti.com \
--cc=srini@kernel.org \
--cc=support.opensource@diasemi.com \
--cc=tiwai@suse.com \
--cc=u.kleine-koenig@baylibre.com \
--cc=zhangyi@everest-semi.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox