mirror of
https://github.com/torvalds/linux.git
synced 2026-10-10 12:28:02 +02:00
ASoC: codecs: aw88395: Use guard() for mutex locks
Clean up the code using guard() for mutex locks. Merely code refactoring, and no behavior change. Reviewed-by: Cezary Rojewski <cezary.rojewski@intel.com> Signed-off-by: bui duc phuc <phucduc.bui@gmail.com> Link: https://patch.msgid.link/20260708125002.202515-10-phucduc.bui@gmail.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
9d8e98091f
commit
6699b73f00
|
|
@ -8,6 +8,7 @@
|
|||
// Author: Weidong Wang <wangweidong.a@awinic.com>
|
||||
//
|
||||
|
||||
#include <linux/cleanup.h>
|
||||
#include <linux/gpio/consumer.h>
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/firmware.h>
|
||||
|
|
@ -51,9 +52,8 @@ static void aw88395_startup_work(struct work_struct *work)
|
|||
struct aw88395 *aw88395 =
|
||||
container_of(work, struct aw88395, start_work.work);
|
||||
|
||||
mutex_lock(&aw88395->lock);
|
||||
guard(mutex)(&aw88395->lock);
|
||||
aw88395_start_pa(aw88395);
|
||||
mutex_unlock(&aw88395->lock);
|
||||
}
|
||||
|
||||
static void aw88395_start(struct aw88395 *aw88395, bool sync_start)
|
||||
|
|
@ -224,11 +224,10 @@ static int aw88395_profile_set(struct snd_kcontrol *kcontrol,
|
|||
int ret;
|
||||
|
||||
/* pa stop or stopping just set profile */
|
||||
mutex_lock(&aw88395->lock);
|
||||
guard(mutex)(&aw88395->lock);
|
||||
ret = aw88395_dev_set_profile_index(aw88395->aw_pa, ucontrol->value.integer.value[0]);
|
||||
if (ret < 0) {
|
||||
dev_dbg(codec->dev, "profile index does not change");
|
||||
mutex_unlock(&aw88395->lock);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -237,8 +236,6 @@ static int aw88395_profile_set(struct snd_kcontrol *kcontrol,
|
|||
aw88395_start(aw88395, AW88395_SYNC_START);
|
||||
}
|
||||
|
||||
mutex_unlock(&aw88395->lock);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
@ -366,7 +363,7 @@ static int aw88395_playback_event(struct snd_soc_dapm_widget *w,
|
|||
struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm);
|
||||
struct aw88395 *aw88395 = snd_soc_component_get_drvdata(component);
|
||||
|
||||
mutex_lock(&aw88395->lock);
|
||||
guard(mutex)(&aw88395->lock);
|
||||
switch (event) {
|
||||
case SND_SOC_DAPM_PRE_PMU:
|
||||
aw88395_start(aw88395, AW88395_ASYNC_START);
|
||||
|
|
@ -377,7 +374,6 @@ static int aw88395_playback_event(struct snd_soc_dapm_widget *w,
|
|||
default:
|
||||
break;
|
||||
}
|
||||
mutex_unlock(&aw88395->lock);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -495,12 +491,12 @@ static int aw88395_request_firmware_file(struct aw88395 *aw88395)
|
|||
|
||||
dev_dbg(aw88395->aw_pa->dev, "%s : bin load success\n", __func__);
|
||||
|
||||
mutex_lock(&aw88395->lock);
|
||||
/* aw device init */
|
||||
ret = aw88395_dev_init(aw88395->aw_pa, aw88395->aw_cfg);
|
||||
if (ret < 0)
|
||||
dev_err(aw88395->aw_pa->dev, "dev init failed");
|
||||
mutex_unlock(&aw88395->lock);
|
||||
scoped_guard(mutex, &aw88395->lock) {
|
||||
/* aw device init */
|
||||
ret = aw88395_dev_init(aw88395->aw_pa, aw88395->aw_cfg);
|
||||
if (ret < 0)
|
||||
dev_err(aw88395->aw_pa->dev, "dev init failed");
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@
|
|||
// Author: Ben Yi <yijiangtao@awinic.com>
|
||||
//
|
||||
|
||||
#include <linux/cleanup.h>
|
||||
#include <linux/crc32.h>
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/minmax.h>
|
||||
|
|
@ -70,7 +71,7 @@ int aw_dev_dsp_write(struct aw_device *aw_dev,
|
|||
u32 reg_value;
|
||||
int ret;
|
||||
|
||||
mutex_lock(&aw_dev->dsp_lock);
|
||||
guard(mutex)(&aw_dev->dsp_lock);
|
||||
switch (data_type) {
|
||||
case AW_DSP_16_DATA:
|
||||
ret = aw_dev_dsp_write_16bit(aw_dev, dsp_addr, dsp_data);
|
||||
|
|
@ -93,7 +94,6 @@ int aw_dev_dsp_write(struct aw_device *aw_dev,
|
|||
/* clear dsp chip select state*/
|
||||
if (regmap_read(aw_dev->regmap, AW88395_ID_REG, ®_value))
|
||||
dev_err(aw_dev->dev, "%s fail to clear chip state. Err=%d\n", __func__, ret);
|
||||
mutex_unlock(&aw_dev->dsp_lock);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -156,7 +156,7 @@ int aw_dev_dsp_read(struct aw_device *aw_dev,
|
|||
u32 reg_value;
|
||||
int ret;
|
||||
|
||||
mutex_lock(&aw_dev->dsp_lock);
|
||||
guard(mutex)(&aw_dev->dsp_lock);
|
||||
switch (data_type) {
|
||||
case AW_DSP_16_DATA:
|
||||
ret = aw_dev_dsp_read_16bit(aw_dev, dsp_addr, dsp_data);
|
||||
|
|
@ -179,7 +179,6 @@ int aw_dev_dsp_read(struct aw_device *aw_dev,
|
|||
/* clear dsp chip select state*/
|
||||
if (regmap_read(aw_dev->regmap, AW88395_ID_REG, ®_value))
|
||||
dev_err(aw_dev->dev, "%s fail to clear chip state. Err=%d\n", __func__, ret);
|
||||
mutex_unlock(&aw_dev->dsp_lock);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -1110,42 +1109,36 @@ static int aw_dev_dsp_update_container(struct aw_device *aw_dev,
|
|||
#ifdef AW88395_DSP_I2C_WRITES
|
||||
u32 tmp_len;
|
||||
|
||||
mutex_lock(&aw_dev->dsp_lock);
|
||||
guard(mutex)(&aw_dev->dsp_lock);
|
||||
ret = regmap_write(aw_dev->regmap, AW88395_DSPMADD_REG, base);
|
||||
if (ret)
|
||||
goto error_operation;
|
||||
return ret;
|
||||
|
||||
for (i = 0; i < len; i += AW88395_MAX_RAM_WRITE_BYTE_SIZE) {
|
||||
tmp_len = min(len - i, AW88395_MAX_RAM_WRITE_BYTE_SIZE);
|
||||
ret = regmap_raw_write(aw_dev->regmap, AW88395_DSPMDAT_REG,
|
||||
&data[i], tmp_len);
|
||||
if (ret)
|
||||
goto error_operation;
|
||||
return ret;
|
||||
}
|
||||
mutex_unlock(&aw_dev->dsp_lock);
|
||||
#else
|
||||
__be16 reg_val;
|
||||
|
||||
mutex_lock(&aw_dev->dsp_lock);
|
||||
guard(mutex)(&aw_dev->dsp_lock);
|
||||
/* i2c write */
|
||||
ret = regmap_write(aw_dev->regmap, AW88395_DSPMADD_REG, base);
|
||||
if (ret)
|
||||
goto error_operation;
|
||||
return ret;
|
||||
for (i = 0; i < len; i += 2) {
|
||||
reg_val = cpu_to_be16p((u16 *)(data + i));
|
||||
ret = regmap_write(aw_dev->regmap, AW88395_DSPMDAT_REG,
|
||||
(u16)reg_val);
|
||||
if (ret)
|
||||
goto error_operation;
|
||||
return ret;
|
||||
}
|
||||
mutex_unlock(&aw_dev->dsp_lock);
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
|
||||
error_operation:
|
||||
mutex_unlock(&aw_dev->dsp_lock);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int aw_dev_dsp_update_fw(struct aw_device *aw_dev,
|
||||
|
|
@ -1231,14 +1224,14 @@ static int aw_dev_check_sram(struct aw_device *aw_dev)
|
|||
{
|
||||
unsigned int reg_val;
|
||||
|
||||
mutex_lock(&aw_dev->dsp_lock);
|
||||
guard(mutex)(&aw_dev->dsp_lock);
|
||||
/* check the odd bits of reg 0x40 */
|
||||
regmap_write(aw_dev->regmap, AW88395_DSPMADD_REG, AW88395_DSP_ODD_NUM_BIT_TEST);
|
||||
regmap_read(aw_dev->regmap, AW88395_DSPMADD_REG, ®_val);
|
||||
if (reg_val != AW88395_DSP_ODD_NUM_BIT_TEST) {
|
||||
dev_err(aw_dev->dev, "check reg 0x40 odd bit failed, read[0x%x] != write[0x%x]",
|
||||
reg_val, AW88395_DSP_ODD_NUM_BIT_TEST);
|
||||
goto error;
|
||||
return -EPERM;
|
||||
}
|
||||
|
||||
/* check the even bits of reg 0x40 */
|
||||
|
|
@ -1247,7 +1240,7 @@ static int aw_dev_check_sram(struct aw_device *aw_dev)
|
|||
if (reg_val != AW88395_DSP_EVEN_NUM_BIT_TEST) {
|
||||
dev_err(aw_dev->dev, "check reg 0x40 even bit failed, read[0x%x] != write[0x%x]",
|
||||
reg_val, AW88395_DSP_EVEN_NUM_BIT_TEST);
|
||||
goto error;
|
||||
return -EPERM;
|
||||
}
|
||||
|
||||
/* check dsp_fw_base_addr */
|
||||
|
|
@ -1256,7 +1249,7 @@ static int aw_dev_check_sram(struct aw_device *aw_dev)
|
|||
if (reg_val != AW88395_DSP_EVEN_NUM_BIT_TEST) {
|
||||
dev_err(aw_dev->dev, "check dsp fw addr failed, read[0x%x] != write[0x%x]",
|
||||
reg_val, AW88395_DSP_EVEN_NUM_BIT_TEST);
|
||||
goto error;
|
||||
return -EPERM;
|
||||
}
|
||||
|
||||
/* check dsp_cfg_base_addr */
|
||||
|
|
@ -1265,15 +1258,10 @@ static int aw_dev_check_sram(struct aw_device *aw_dev)
|
|||
if (reg_val != AW88395_DSP_ODD_NUM_BIT_TEST) {
|
||||
dev_err(aw_dev->dev, "check dsp cfg failed, read[0x%x] != write[0x%x]",
|
||||
reg_val, AW88395_DSP_ODD_NUM_BIT_TEST);
|
||||
goto error;
|
||||
return -EPERM;
|
||||
}
|
||||
mutex_unlock(&aw_dev->dsp_lock);
|
||||
|
||||
return 0;
|
||||
|
||||
error:
|
||||
mutex_unlock(&aw_dev->dsp_lock);
|
||||
return -EPERM;
|
||||
}
|
||||
|
||||
int aw88395_dev_fw_update(struct aw_device *aw_dev, bool up_dsp_fw_en, bool force_up_en)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user