mirror of
https://github.com/torvalds/linux.git
synced 2026-10-10 12:28:02 +02:00
ASoC: codecs: hdac_hdmi: Use guard() for mutex locks
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> Link: https://patch.msgid.link/20260721102600.523199-8-phucduc.bui@gmail.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
db044108a5
commit
51aac9ed7c
|
|
@ -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) {
|
||||
port->eld.eld_valid = true;
|
||||
port->eld.eld_size = size;
|
||||
} else {
|
||||
port->eld.eld_valid = false;
|
||||
port->eld.eld_size = 0;
|
||||
}
|
||||
|
||||
eld_changed = (eld_valid != port->eld.eld_valid);
|
||||
|
||||
pcm = hdac_hdmi_get_pcm(hdev, port);
|
||||
|
||||
if (!port->eld.monitor_present || !port->eld.eld_valid) {
|
||||
|
||||
dev_dbg(&hdev->dev, "%s: disconnect for pin:port %d:%d\n",
|
||||
__func__, pin->nid, port->id);
|
||||
|
||||
/*
|
||||
* 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 (size > 0) {
|
||||
size = min(size, ELD_MAX_SIZE);
|
||||
if (hdac_hdmi_parse_eld(hdev, port) < 0)
|
||||
size = -EINVAL;
|
||||
}
|
||||
|
||||
mutex_unlock(&hdmi->pin_mutex);
|
||||
return;
|
||||
}
|
||||
eld_valid = port->eld.eld_valid;
|
||||
|
||||
if (port->eld.monitor_present && port->eld.eld_valid) {
|
||||
if (pcm) {
|
||||
hdac_hdmi_jack_report(pcm, port, true);
|
||||
schedule_work(&port->dapm_work);
|
||||
if (size > 0) {
|
||||
port->eld.eld_valid = true;
|
||||
port->eld.eld_size = size;
|
||||
} else {
|
||||
port->eld.eld_valid = false;
|
||||
port->eld.eld_size = 0;
|
||||
}
|
||||
|
||||
print_hex_dump_debug("ELD: ", DUMP_PREFIX_OFFSET, 16, 1,
|
||||
port->eld.eld_buffer, port->eld.eld_size, false);
|
||||
eld_changed = (eld_valid != port->eld.eld_valid);
|
||||
|
||||
pcm = hdac_hdmi_get_pcm(hdev, port);
|
||||
|
||||
if (!port->eld.monitor_present || !port->eld.eld_valid) {
|
||||
|
||||
dev_dbg(&hdev->dev, "%s: disconnect for pin:port %d:%d\n",
|
||||
__func__, pin->nid, port->id);
|
||||
|
||||
/*
|
||||
* 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);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user