mirror of
https://github.com/torvalds/linux.git
synced 2026-10-09 03:56:03 +02:00
ASoC: codecs: idt821034: 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-10-phucduc.bui@gmail.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
9c61998c9c
commit
e199ec211b
|
|
@ -7,6 +7,7 @@
|
|||
// Author: Herve Codina <herve.codina@bootlin.com>
|
||||
|
||||
#include <linux/bitrev.h>
|
||||
#include <linux/cleanup.h>
|
||||
#include <linux/gpio/driver.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/slab.h>
|
||||
|
|
@ -413,12 +414,12 @@ static int idt821034_kctrl_gain_get(struct snd_kcontrol *kcontrol,
|
|||
|
||||
ch = IDT821034_ID_GET_CHAN(mc->reg);
|
||||
|
||||
mutex_lock(&idt821034->mutex);
|
||||
if (IDT821034_ID_IS_OUT(mc->reg))
|
||||
val = idt821034->amps.ch[ch].amp_out.gain;
|
||||
else
|
||||
val = idt821034->amps.ch[ch].amp_in.gain;
|
||||
mutex_unlock(&idt821034->mutex);
|
||||
scoped_guard(mutex, &idt821034->mutex) {
|
||||
if (IDT821034_ID_IS_OUT(mc->reg))
|
||||
val = idt821034->amps.ch[ch].amp_out.gain;
|
||||
else
|
||||
val = idt821034->amps.ch[ch].amp_in.gain;
|
||||
}
|
||||
|
||||
ucontrol->value.integer.value[0] = val & mask;
|
||||
if (invert)
|
||||
|
|
@ -456,7 +457,7 @@ static int idt821034_kctrl_gain_put(struct snd_kcontrol *kcontrol,
|
|||
|
||||
ch = IDT821034_ID_GET_CHAN(mc->reg);
|
||||
|
||||
mutex_lock(&idt821034->mutex);
|
||||
guard(mutex)(&idt821034->mutex);
|
||||
|
||||
if (IDT821034_ID_IS_OUT(mc->reg)) {
|
||||
amp = &idt821034->amps.ch[ch].amp_out;
|
||||
|
|
@ -466,22 +467,18 @@ static int idt821034_kctrl_gain_put(struct snd_kcontrol *kcontrol,
|
|||
gain_type = IDT821034_GAIN_TX;
|
||||
}
|
||||
|
||||
if (amp->gain == val) {
|
||||
ret = 0;
|
||||
goto end;
|
||||
}
|
||||
if (amp->gain == val)
|
||||
return 0;
|
||||
|
||||
if (!amp->is_muted) {
|
||||
ret = idt821034_set_gain_channel(idt821034, ch, gain_type, val);
|
||||
if (ret)
|
||||
goto end;
|
||||
return ret;
|
||||
}
|
||||
|
||||
amp->gain = val;
|
||||
ret = 1; /* The value changed */
|
||||
end:
|
||||
mutex_unlock(&idt821034->mutex);
|
||||
return ret;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int idt821034_kctrl_mute_get(struct snd_kcontrol *kcontrol,
|
||||
|
|
@ -495,11 +492,11 @@ static int idt821034_kctrl_mute_get(struct snd_kcontrol *kcontrol,
|
|||
|
||||
ch = IDT821034_ID_GET_CHAN(id);
|
||||
|
||||
mutex_lock(&idt821034->mutex);
|
||||
is_muted = IDT821034_ID_IS_OUT(id) ?
|
||||
idt821034->amps.ch[ch].amp_out.is_muted :
|
||||
idt821034->amps.ch[ch].amp_in.is_muted;
|
||||
mutex_unlock(&idt821034->mutex);
|
||||
scoped_guard(mutex, &idt821034->mutex) {
|
||||
is_muted = IDT821034_ID_IS_OUT(id) ?
|
||||
idt821034->amps.ch[ch].amp_out.is_muted :
|
||||
idt821034->amps.ch[ch].amp_in.is_muted;
|
||||
}
|
||||
|
||||
ucontrol->value.integer.value[0] = !is_muted;
|
||||
|
||||
|
|
@ -521,7 +518,7 @@ static int idt821034_kctrl_mute_put(struct snd_kcontrol *kcontrol,
|
|||
ch = IDT821034_ID_GET_CHAN(id);
|
||||
is_mute = !ucontrol->value.integer.value[0];
|
||||
|
||||
mutex_lock(&idt821034->mutex);
|
||||
guard(mutex)(&idt821034->mutex);
|
||||
|
||||
if (IDT821034_ID_IS_OUT(id)) {
|
||||
amp = &idt821034->amps.ch[ch].amp_out;
|
||||
|
|
@ -531,21 +528,17 @@ static int idt821034_kctrl_mute_put(struct snd_kcontrol *kcontrol,
|
|||
gain_type = IDT821034_GAIN_TX;
|
||||
}
|
||||
|
||||
if (amp->is_muted == is_mute) {
|
||||
ret = 0;
|
||||
goto end;
|
||||
}
|
||||
if (amp->is_muted == is_mute)
|
||||
return 0;
|
||||
|
||||
ret = idt821034_set_gain_channel(idt821034, ch, gain_type,
|
||||
is_mute ? 0 : amp->gain);
|
||||
if (ret)
|
||||
goto end;
|
||||
return ret;
|
||||
|
||||
amp->is_muted = is_mute;
|
||||
ret = 1; /* The value changed */
|
||||
end:
|
||||
mutex_unlock(&idt821034->mutex);
|
||||
return ret;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static const DECLARE_TLV_DB_LINEAR(idt821034_gain_in, -300, 1300);
|
||||
|
|
@ -623,24 +616,20 @@ static int idt821034_power_event(struct snd_soc_dapm_widget *w,
|
|||
struct idt821034 *idt821034 = snd_soc_component_get_drvdata(component);
|
||||
unsigned int id = w->shift;
|
||||
u8 power, mask;
|
||||
int ret;
|
||||
u8 ch;
|
||||
|
||||
ch = IDT821034_ID_GET_CHAN(id);
|
||||
mask = IDT821034_ID_IS_OUT(id) ? IDT821034_CONF_PWRUP_RX : IDT821034_CONF_PWRUP_TX;
|
||||
|
||||
mutex_lock(&idt821034->mutex);
|
||||
guard(mutex)(&idt821034->mutex);
|
||||
|
||||
power = idt821034_get_channel_power(idt821034, ch);
|
||||
if (SND_SOC_DAPM_EVENT_ON(event))
|
||||
power |= mask;
|
||||
else
|
||||
power &= ~mask;
|
||||
ret = idt821034_set_channel_power(idt821034, ch, power);
|
||||
|
||||
mutex_unlock(&idt821034->mutex);
|
||||
|
||||
return ret;
|
||||
return idt821034_set_channel_power(idt821034, ch, power);
|
||||
}
|
||||
|
||||
static const struct snd_soc_dapm_widget idt821034_dapm_widgets[] = {
|
||||
|
|
@ -717,9 +706,9 @@ static int idt821034_dai_set_tdm_slot(struct snd_soc_dai *dai,
|
|||
ch = 0;
|
||||
while (mask && ch < IDT821034_NB_CHANNEL) {
|
||||
if (mask & 0x1) {
|
||||
mutex_lock(&idt821034->mutex);
|
||||
ret = idt821034_set_channel_ts(idt821034, ch, IDT821034_CH_RX, slot);
|
||||
mutex_unlock(&idt821034->mutex);
|
||||
scoped_guard(mutex, &idt821034->mutex)
|
||||
ret = idt821034_set_channel_ts(idt821034, ch,
|
||||
IDT821034_CH_RX, slot);
|
||||
if (ret) {
|
||||
dev_err(dai->dev, "ch%u set tx tdm slot failed (%d)\n",
|
||||
ch, ret);
|
||||
|
|
@ -742,9 +731,9 @@ static int idt821034_dai_set_tdm_slot(struct snd_soc_dai *dai,
|
|||
ch = 0;
|
||||
while (mask && ch < IDT821034_NB_CHANNEL) {
|
||||
if (mask & 0x1) {
|
||||
mutex_lock(&idt821034->mutex);
|
||||
ret = idt821034_set_channel_ts(idt821034, ch, IDT821034_CH_TX, slot);
|
||||
mutex_unlock(&idt821034->mutex);
|
||||
scoped_guard(mutex, &idt821034->mutex)
|
||||
ret = idt821034_set_channel_ts(idt821034, ch,
|
||||
IDT821034_CH_TX, slot);
|
||||
if (ret) {
|
||||
dev_err(dai->dev, "ch%u set rx tdm slot failed (%d)\n",
|
||||
ch, ret);
|
||||
|
|
@ -769,9 +758,8 @@ static int idt821034_dai_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
|
|||
{
|
||||
struct idt821034 *idt821034 = snd_soc_component_get_drvdata(dai->component);
|
||||
u8 conf;
|
||||
int ret;
|
||||
|
||||
mutex_lock(&idt821034->mutex);
|
||||
guard(mutex)(&idt821034->mutex);
|
||||
|
||||
conf = idt821034_get_codec_conf(idt821034);
|
||||
|
||||
|
|
@ -785,13 +773,10 @@ static int idt821034_dai_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
|
|||
default:
|
||||
dev_err(dai->dev, "Unsupported DAI format 0x%x\n",
|
||||
fmt & SND_SOC_DAIFMT_FORMAT_MASK);
|
||||
ret = -EINVAL;
|
||||
goto end;
|
||||
return -EINVAL;
|
||||
}
|
||||
ret = idt821034_set_codec_conf(idt821034, conf);
|
||||
end:
|
||||
mutex_unlock(&idt821034->mutex);
|
||||
return ret;
|
||||
|
||||
return idt821034_set_codec_conf(idt821034, conf);
|
||||
}
|
||||
|
||||
static int idt821034_dai_hw_params(struct snd_pcm_substream *substream,
|
||||
|
|
@ -800,9 +785,8 @@ static int idt821034_dai_hw_params(struct snd_pcm_substream *substream,
|
|||
{
|
||||
struct idt821034 *idt821034 = snd_soc_component_get_drvdata(dai->component);
|
||||
u8 conf;
|
||||
int ret;
|
||||
|
||||
mutex_lock(&idt821034->mutex);
|
||||
guard(mutex)(&idt821034->mutex);
|
||||
|
||||
conf = idt821034_get_codec_conf(idt821034);
|
||||
|
||||
|
|
@ -816,13 +800,10 @@ static int idt821034_dai_hw_params(struct snd_pcm_substream *substream,
|
|||
default:
|
||||
dev_err(dai->dev, "Unsupported PCM format 0x%x\n",
|
||||
params_format(params));
|
||||
ret = -EINVAL;
|
||||
goto end;
|
||||
return -EINVAL;
|
||||
}
|
||||
ret = idt821034_set_codec_conf(idt821034, conf);
|
||||
end:
|
||||
mutex_unlock(&idt821034->mutex);
|
||||
return ret;
|
||||
|
||||
return idt821034_set_codec_conf(idt821034, conf);
|
||||
}
|
||||
|
||||
static const unsigned int idt821034_sample_bits[] = {8};
|
||||
|
|
@ -897,11 +878,11 @@ static int idt821034_reset_audio(struct idt821034 *idt821034)
|
|||
int ret;
|
||||
u8 i;
|
||||
|
||||
mutex_lock(&idt821034->mutex);
|
||||
guard(mutex)(&idt821034->mutex);
|
||||
|
||||
ret = idt821034_set_codec_conf(idt821034, 0);
|
||||
if (ret)
|
||||
goto end;
|
||||
return ret;
|
||||
|
||||
for (i = 0; i < IDT821034_NB_CHANNEL; i++) {
|
||||
idt821034->amps.ch[i].amp_out.gain = IDT821034_GAIN_OUT_INIT_RAW;
|
||||
|
|
@ -909,24 +890,21 @@ static int idt821034_reset_audio(struct idt821034 *idt821034)
|
|||
ret = idt821034_set_gain_channel(idt821034, i, IDT821034_GAIN_RX,
|
||||
idt821034->amps.ch[i].amp_out.gain);
|
||||
if (ret)
|
||||
goto end;
|
||||
return ret;
|
||||
|
||||
idt821034->amps.ch[i].amp_in.gain = IDT821034_GAIN_IN_INIT_RAW;
|
||||
idt821034->amps.ch[i].amp_in.is_muted = false;
|
||||
ret = idt821034_set_gain_channel(idt821034, i, IDT821034_GAIN_TX,
|
||||
idt821034->amps.ch[i].amp_in.gain);
|
||||
if (ret)
|
||||
goto end;
|
||||
return ret;
|
||||
|
||||
ret = idt821034_set_channel_power(idt821034, i, 0);
|
||||
if (ret)
|
||||
goto end;
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = 0;
|
||||
end:
|
||||
mutex_unlock(&idt821034->mutex);
|
||||
return ret;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int idt821034_component_probe(struct snd_soc_component *component)
|
||||
|
|
@ -965,7 +943,7 @@ static int idt821034_chip_gpio_set(struct gpio_chip *c, unsigned int offset,
|
|||
u8 slic_raw;
|
||||
int ret;
|
||||
|
||||
mutex_lock(&idt821034->mutex);
|
||||
guard(mutex)(&idt821034->mutex);
|
||||
|
||||
slic_raw = idt821034_get_written_slic_raw(idt821034, ch);
|
||||
if (val)
|
||||
|
|
@ -974,8 +952,6 @@ static int idt821034_chip_gpio_set(struct gpio_chip *c, unsigned int offset,
|
|||
slic_raw &= ~mask;
|
||||
ret = idt821034_write_slic_raw(idt821034, ch, slic_raw);
|
||||
|
||||
mutex_unlock(&idt821034->mutex);
|
||||
|
||||
if (ret)
|
||||
dev_err(&idt821034->spi->dev, "set gpio %d (%u, 0x%x) failed (%d)\n",
|
||||
offset, ch, mask, ret);
|
||||
|
|
@ -991,9 +967,8 @@ static int idt821034_chip_gpio_get(struct gpio_chip *c, unsigned int offset)
|
|||
u8 slic_raw;
|
||||
int ret;
|
||||
|
||||
mutex_lock(&idt821034->mutex);
|
||||
ret = idt821034_read_slic_raw(idt821034, ch, &slic_raw);
|
||||
mutex_unlock(&idt821034->mutex);
|
||||
scoped_guard(mutex, &idt821034->mutex)
|
||||
ret = idt821034_read_slic_raw(idt821034, ch, &slic_raw);
|
||||
if (ret) {
|
||||
dev_err(&idt821034->spi->dev, "get gpio %d (%u, 0x%x) failed (%d)\n",
|
||||
offset, ch, mask, ret);
|
||||
|
|
@ -1015,9 +990,8 @@ static int idt821034_chip_get_direction(struct gpio_chip *c, unsigned int offset
|
|||
struct idt821034 *idt821034 = gpiochip_get_data(c);
|
||||
u8 slic_dir;
|
||||
|
||||
mutex_lock(&idt821034->mutex);
|
||||
guard(mutex)(&idt821034->mutex);
|
||||
slic_dir = idt821034_get_slic_conf(idt821034, ch);
|
||||
mutex_unlock(&idt821034->mutex);
|
||||
|
||||
return slic_dir & mask ? GPIO_LINE_DIRECTION_IN : GPIO_LINE_DIRECTION_OUT;
|
||||
}
|
||||
|
|
@ -1034,7 +1008,7 @@ static int idt821034_chip_direction_input(struct gpio_chip *c, unsigned int offs
|
|||
if (mask & ~(IDT821034_SLIC_IO1_IN | IDT821034_SLIC_IO0_IN))
|
||||
return -EPERM;
|
||||
|
||||
mutex_lock(&idt821034->mutex);
|
||||
guard(mutex)(&idt821034->mutex);
|
||||
|
||||
slic_conf = idt821034_get_slic_conf(idt821034, ch) | mask;
|
||||
|
||||
|
|
@ -1044,7 +1018,6 @@ static int idt821034_chip_direction_input(struct gpio_chip *c, unsigned int offs
|
|||
offset, ch, mask, ret);
|
||||
}
|
||||
|
||||
mutex_unlock(&idt821034->mutex);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -1060,7 +1033,7 @@ static int idt821034_chip_direction_output(struct gpio_chip *c, unsigned int off
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
mutex_lock(&idt821034->mutex);
|
||||
guard(mutex)(&idt821034->mutex);
|
||||
|
||||
slic_conf = idt821034_get_slic_conf(idt821034, ch) & ~mask;
|
||||
|
||||
|
|
@ -1070,7 +1043,6 @@ static int idt821034_chip_direction_output(struct gpio_chip *c, unsigned int off
|
|||
offset, ch, mask, ret);
|
||||
}
|
||||
|
||||
mutex_unlock(&idt821034->mutex);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -1079,24 +1051,22 @@ static int idt821034_reset_gpio(struct idt821034 *idt821034)
|
|||
int ret;
|
||||
u8 i;
|
||||
|
||||
mutex_lock(&idt821034->mutex);
|
||||
guard(mutex)(&idt821034->mutex);
|
||||
|
||||
/* IO0 and IO1 as input for all channels and output IO set to 0 */
|
||||
for (i = 0; i < IDT821034_NB_CHANNEL; i++) {
|
||||
ret = idt821034_set_slic_conf(idt821034, i,
|
||||
IDT821034_SLIC_IO1_IN | IDT821034_SLIC_IO0_IN);
|
||||
if (ret)
|
||||
goto end;
|
||||
return ret;
|
||||
|
||||
ret = idt821034_write_slic_raw(idt821034, i, 0);
|
||||
if (ret)
|
||||
goto end;
|
||||
return ret;
|
||||
|
||||
}
|
||||
ret = 0;
|
||||
end:
|
||||
mutex_unlock(&idt821034->mutex);
|
||||
return ret;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int idt821034_gpio_init(struct idt821034 *idt821034)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user