From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
Signed-off-by: bui duc phuc <[email protected]>
---
sound/soc/codecs/rt5677-spi.c | 35 +++++++---------
sound/soc/codecs/rt5677.c | 77 ++++++++++++++++-------------------
2 files changed, 48 insertions(+), 64 deletions(-)
diff --git a/sound/soc/codecs/rt5677-spi.c b/sound/soc/codecs/rt5677-spi.c
index 1bcafd5f4468..f559f7b15bae 100644
--- a/sound/soc/codecs/rt5677-spi.c
+++ b/sound/soc/codecs/rt5677-spi.c
@@ -133,9 +133,8 @@ static int rt5677_spi_hw_params(
struct rt5677_dsp *rt5677_dsp =
snd_soc_component_get_drvdata(component);
- mutex_lock(&rt5677_dsp->dma_lock);
+ guard(mutex)(&rt5677_dsp->dma_lock);
rt5677_dsp->substream = substream;
- mutex_unlock(&rt5677_dsp->dma_lock);
return 0;
}
@@ -147,9 +146,8 @@ static int rt5677_spi_hw_free(
struct rt5677_dsp *rt5677_dsp =
snd_soc_component_get_drvdata(component);
- mutex_lock(&rt5677_dsp->dma_lock);
+ guard(mutex)(&rt5677_dsp->dma_lock);
rt5677_dsp->substream = NULL;
- mutex_unlock(&rt5677_dsp->dma_lock);
return 0;
}
@@ -311,17 +309,17 @@ static void rt5677_spi_copy_work(struct work_struct *work)
int ret = 0;
/* Ensure runtime->dma_area buffer does not go away while copying. */
- mutex_lock(&rt5677_dsp->dma_lock);
+ guard(mutex)(&rt5677_dsp->dma_lock);
if (!rt5677_dsp->substream) {
dev_err(rt5677_dsp->dev, "No pcm substream\n");
- goto done;
+ return;
}
runtime = rt5677_dsp->substream->runtime;
if (rt5677_spi_mic_write_offset(&mic_write_offset)) {
dev_err(rt5677_dsp->dev, "No mic_write_offset\n");
- goto done;
+ return;
}
/* If this is the first time that we've asked for streaming data after
@@ -355,7 +353,7 @@ static void rt5677_spi_copy_work(struct work_struct *work)
ret = rt5677_spi_copy(rt5677_dsp, copy_bytes);
if (ret) {
dev_err(rt5677_dsp->dev, "Copy failed %d\n", ret);
- goto done;
+ return;
}
rt5677_dsp->avail_bytes += copy_bytes;
if (rt5677_dsp->avail_bytes >= period_bytes) {
@@ -367,8 +365,6 @@ static void rt5677_spi_copy_work(struct work_struct *work)
delay = bytes_to_frames(runtime, period_bytes) / runtime->rate;
schedule_delayed_work(&rt5677_dsp->copy_work, secs_to_jiffies(delay));
-done:
- mutex_unlock(&rt5677_dsp->dma_lock);
}
static int rt5677_spi_pcm_new(struct snd_soc_component *component,
@@ -507,10 +503,8 @@ int rt5677_spi_read(u32 addr, void *rxbuf, size_t len)
header[3] = ((addr + offset) & 0x0000ff00) >> 8;
header[4] = ((addr + offset) & 0x000000ff) >> 0;
- mutex_lock(&spi_mutex);
- status |= spi_sync(g_spi, &m);
- mutex_unlock(&spi_mutex);
-
+ scoped_guard(mutex, &spi_mutex)
+ status |= spi_sync(g_spi, &m);
/* Copy data back to caller buffer */
rt5677_spi_reverse(cb + offset, len - offset, body, t[1].len);
@@ -564,9 +558,8 @@ int rt5677_spi_write(u32 addr, const void *txbuf, size_t len)
offset += t.len;
t.len += RT5677_SPI_HEADER + 1;
- mutex_lock(&spi_mutex);
- status |= spi_sync(g_spi, &m);
- mutex_unlock(&spi_mutex);
+ scoped_guard(mutex, &spi_mutex)
+ status |= spi_sync(g_spi, &m);
}
return status;
}
@@ -591,10 +584,10 @@ void rt5677_spi_hotword_detected(void)
return;
}
- mutex_lock(&rt5677_dsp->dma_lock);
- dev_info(rt5677_dsp->dev, "Hotword detected\n");
- rt5677_dsp->new_hotword = true;
- mutex_unlock(&rt5677_dsp->dma_lock);
+ scoped_guard(mutex, &rt5677_dsp->dma_lock) {
+ dev_info(rt5677_dsp->dev, "Hotword detected\n");
+ rt5677_dsp->new_hotword = true;
+ }
schedule_delayed_work(&rt5677_dsp->copy_work, 0);
}
diff --git a/sound/soc/codecs/rt5677.c b/sound/soc/codecs/rt5677.c
index ac084ca008f3..fd060227655e 100644
--- a/sound/soc/codecs/rt5677.c
+++ b/sound/soc/codecs/rt5677.c
@@ -563,46 +563,43 @@ static int rt5677_dsp_mode_i2c_write_addr(struct rt5677_priv *rt5677,
struct snd_soc_component *component = rt5677->component;
int ret;
- mutex_lock(&rt5677->dsp_cmd_lock);
+ guard(mutex)(&rt5677->dsp_cmd_lock);
ret = regmap_write(rt5677->regmap_physical, RT5677_DSP_I2C_ADDR_MSB,
addr >> 16);
if (ret < 0) {
dev_err(component->dev, "Failed to set addr msb value: %d\n", ret);
- goto err;
+ return ret;
}
ret = regmap_write(rt5677->regmap_physical, RT5677_DSP_I2C_ADDR_LSB,
addr & 0xffff);
if (ret < 0) {
dev_err(component->dev, "Failed to set addr lsb value: %d\n", ret);
- goto err;
+ return ret;
}
ret = regmap_write(rt5677->regmap_physical, RT5677_DSP_I2C_DATA_MSB,
value >> 16);
if (ret < 0) {
dev_err(component->dev, "Failed to set data msb value: %d\n", ret);
- goto err;
+ return ret;
}
ret = regmap_write(rt5677->regmap_physical, RT5677_DSP_I2C_DATA_LSB,
value & 0xffff);
if (ret < 0) {
dev_err(component->dev, "Failed to set data lsb value: %d\n", ret);
- goto err;
+ return ret;
}
ret = regmap_write(rt5677->regmap_physical, RT5677_DSP_I2C_OP_CODE,
opcode);
if (ret < 0) {
dev_err(component->dev, "Failed to set op code value: %d\n", ret);
- goto err;
+ return ret;
}
-err:
- mutex_unlock(&rt5677->dsp_cmd_lock);
-
return ret;
}
@@ -622,36 +619,33 @@ static int rt5677_dsp_mode_i2c_read_addr(
int ret;
unsigned int msb, lsb;
- mutex_lock(&rt5677->dsp_cmd_lock);
+ guard(mutex)(&rt5677->dsp_cmd_lock);
ret = regmap_write(rt5677->regmap_physical, RT5677_DSP_I2C_ADDR_MSB,
addr >> 16);
if (ret < 0) {
dev_err(component->dev, "Failed to set addr msb value: %d\n", ret);
- goto err;
+ return ret;
}
ret = regmap_write(rt5677->regmap_physical, RT5677_DSP_I2C_ADDR_LSB,
addr & 0xffff);
if (ret < 0) {
dev_err(component->dev, "Failed to set addr lsb value: %d\n", ret);
- goto err;
+ return ret;
}
ret = regmap_write(rt5677->regmap_physical, RT5677_DSP_I2C_OP_CODE,
0x0002);
if (ret < 0) {
dev_err(component->dev, "Failed to set op code value: %d\n", ret);
- goto err;
+ return ret;
}
regmap_read(rt5677->regmap_physical, RT5677_DSP_I2C_DATA_MSB, &msb);
regmap_read(rt5677->regmap_physical, RT5677_DSP_I2C_DATA_LSB, &lsb);
*value = (msb << 16) | lsb;
-err:
- mutex_unlock(&rt5677->dsp_cmd_lock);
-
return ret;
}
@@ -940,21 +934,20 @@ static void rt5677_dsp_work(struct work_struct *work)
activity = false;
/* Don't turn off the DSP while handling irqs */
- mutex_lock(&rt5677->irq_lock);
- /* Set DSP CPU to Stop */
- regmap_update_bits(rt5677->regmap, RT5677_PWR_DSP1,
- RT5677_PWR_DSP_CPU, RT5677_PWR_DSP_CPU);
-
- rt5677_set_dsp_mode(rt5677, false);
+ scoped_guard(mutex, &rt5677->irq_lock) {
+ /* Set DSP CPU to Stop */
+ regmap_update_bits(rt5677->regmap, RT5677_PWR_DSP1,
+ RT5677_PWR_DSP_CPU, RT5677_PWR_DSP_CPU);
- /* Disable and clear VAD interrupt */
- regmap_write(rt5677->regmap, RT5677_VAD_CTRL1, 0x2184);
+ rt5677_set_dsp_mode(rt5677, false);
- /* Set GPIO1 pin back to be IRQ output for jack detect */
- regmap_update_bits(rt5677->regmap, RT5677_GPIO_CTRL1,
- RT5677_GPIO1_PIN_MASK, RT5677_GPIO1_PIN_IRQ);
+ /* Disable and clear VAD interrupt */
+ regmap_write(rt5677->regmap, RT5677_VAD_CTRL1, 0x2184);
- mutex_unlock(&rt5677->irq_lock);
+ /* Set GPIO1 pin back to be IRQ output for jack detect */
+ regmap_update_bits(rt5677->regmap, RT5677_GPIO_CTRL1,
+ RT5677_GPIO1_PIN_MASK, RT5677_GPIO1_PIN_IRQ);
+ }
}
}
@@ -4980,11 +4973,11 @@ static int rt5677_read(void *context, unsigned int reg, unsigned int *val)
if (rt5677->is_dsp_mode) {
if (reg > 0xff) {
- mutex_lock(&rt5677->dsp_pri_lock);
- rt5677_dsp_mode_i2c_write(rt5677, RT5677_PRIV_INDEX,
- reg & 0xff);
- rt5677_dsp_mode_i2c_read(rt5677, RT5677_PRIV_DATA, val);
- mutex_unlock(&rt5677->dsp_pri_lock);
+ scoped_guard(mutex, &rt5677->dsp_pri_lock) {
+ rt5677_dsp_mode_i2c_write(rt5677, RT5677_PRIV_INDEX,
+ reg & 0xff);
+ rt5677_dsp_mode_i2c_read(rt5677, RT5677_PRIV_DATA, val);
+ }
} else {
rt5677_dsp_mode_i2c_read(rt5677, reg, val);
}
@@ -5002,12 +4995,12 @@ static int rt5677_write(void *context, unsigned int reg, unsigned int val)
if (rt5677->is_dsp_mode) {
if (reg > 0xff) {
- mutex_lock(&rt5677->dsp_pri_lock);
- rt5677_dsp_mode_i2c_write(rt5677, RT5677_PRIV_INDEX,
- reg & 0xff);
- rt5677_dsp_mode_i2c_write(rt5677, RT5677_PRIV_DATA,
- val);
- mutex_unlock(&rt5677->dsp_pri_lock);
+ scoped_guard(mutex, &rt5677->dsp_pri_lock) {
+ rt5677_dsp_mode_i2c_write(rt5677, RT5677_PRIV_INDEX,
+ reg & 0xff);
+ rt5677_dsp_mode_i2c_write(rt5677, RT5677_PRIV_DATA,
+ val);
+ }
} else {
rt5677_dsp_mode_i2c_write(rt5677, reg, val);
}
@@ -5313,7 +5306,7 @@ static irqreturn_t rt5677_irq(int unused, void *data)
int ret, loop, i, reg_irq, virq;
bool irq_fired = false;
- mutex_lock(&rt5677->irq_lock);
+ guard(mutex)(&rt5677->irq_lock);
/*
* Loop to handle interrupts until the last i2c read shows no pending
@@ -5370,7 +5363,6 @@ static irqreturn_t rt5677_irq(int unused, void *data)
}
exit:
WARN_ON_ONCE(loop == 20);
- mutex_unlock(&rt5677->irq_lock);
if (irq_fired)
return IRQ_HANDLED;
else
@@ -5399,7 +5391,7 @@ static void rt5677_resume_irq_check(struct work_struct *work)
* Without this explicit check, unplug the headset right after suspend
* starts, then after resume the headset is still shown as plugged in.
*/
- mutex_lock(&rt5677->irq_lock);
+ guard(mutex)(&rt5677->irq_lock);
for (i = 0; i < RT5677_IRQ_NUM; i++) {
if (rt5677->irq_en & rt5677_irq_descs[i].enable_mask) {
virq = irq_find_mapping(rt5677->domain, i);
@@ -5407,7 +5399,6 @@ static void rt5677_resume_irq_check(struct work_struct *work)
handle_nested_irq(virq);
}
}
- mutex_unlock(&rt5677->irq_lock);
}
static void rt5677_irq_bus_lock(struct irq_data *data)
--
2.43.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.