mirror of
https://github.com/torvalds/linux.git
synced 2026-10-13 13:51:03 +02:00
ASoC: codecs: tlv320dac33: Use guard() for mutex & spin locks
Clean up the code using guard() for mutex & spin locks. Merely code refactoring, and no behavior change. Signed-off-by: bui duc phuc <phucduc.bui@gmail.com> Reviewed-by: Cezary Rojewski <cezary.rojewski@intel.com> Link: https://patch.msgid.link/20260731030648.8706-8-phucduc.bui@gmail.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
58a8bdbfe5
commit
dfee22ec48
|
|
@ -7,6 +7,7 @@
|
|||
* Copyright: (C) 2009 Nokia Corporation
|
||||
*/
|
||||
|
||||
#include <linux/cleanup.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/moduleparam.h>
|
||||
#include <linux/init.h>
|
||||
|
|
@ -236,13 +237,10 @@ static int dac33_write_locked(struct snd_soc_component *component, unsigned int
|
|||
unsigned int value)
|
||||
{
|
||||
struct tlv320dac33_priv *dac33 = snd_soc_component_get_drvdata(component);
|
||||
int ret;
|
||||
|
||||
mutex_lock(&dac33->mutex);
|
||||
ret = dac33_write(component, reg, value);
|
||||
mutex_unlock(&dac33->mutex);
|
||||
guard(mutex)(&dac33->mutex);
|
||||
|
||||
return ret;
|
||||
return dac33_write(component, reg, value);
|
||||
}
|
||||
|
||||
#define DAC33_I2C_ADDR_AUTOINC 0x80
|
||||
|
|
@ -365,13 +363,13 @@ static int dac33_hard_power(struct snd_soc_component *component, int power)
|
|||
struct tlv320dac33_priv *dac33 = snd_soc_component_get_drvdata(component);
|
||||
int ret = 0;
|
||||
|
||||
mutex_lock(&dac33->mutex);
|
||||
guard(mutex)(&dac33->mutex);
|
||||
|
||||
/* Safety check */
|
||||
if (unlikely(power == dac33->chip_power)) {
|
||||
dev_dbg(component->dev, "Trying to set the same power state: %s\n",
|
||||
power ? "ON" : "OFF");
|
||||
goto exit;
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (power) {
|
||||
|
|
@ -380,7 +378,7 @@ static int dac33_hard_power(struct snd_soc_component *component, int power)
|
|||
if (ret != 0) {
|
||||
dev_err(component->dev,
|
||||
"Failed to enable supplies: %d\n", ret);
|
||||
goto exit;
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (dac33->reset_gpiod) {
|
||||
|
|
@ -388,7 +386,7 @@ static int dac33_hard_power(struct snd_soc_component *component, int power)
|
|||
if (ret < 0) {
|
||||
dev_err(&dac33->i2c->dev,
|
||||
"Failed to set reset GPIO: %d\n", ret);
|
||||
goto exit;
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -400,7 +398,7 @@ static int dac33_hard_power(struct snd_soc_component *component, int power)
|
|||
if (ret < 0) {
|
||||
dev_err(&dac33->i2c->dev,
|
||||
"Failed to set reset GPIO: %d\n", ret);
|
||||
goto exit;
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -409,14 +407,12 @@ static int dac33_hard_power(struct snd_soc_component *component, int power)
|
|||
if (ret != 0) {
|
||||
dev_err(component->dev,
|
||||
"Failed to disable supplies: %d\n", ret);
|
||||
goto exit;
|
||||
return ret;
|
||||
}
|
||||
|
||||
dac33->chip_power = 0;
|
||||
}
|
||||
|
||||
exit:
|
||||
mutex_unlock(&dac33->mutex);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -659,7 +655,6 @@ static inline void dac33_prefill_handler(struct tlv320dac33_priv *dac33)
|
|||
{
|
||||
struct snd_soc_component *component = dac33->component;
|
||||
unsigned int delay;
|
||||
unsigned long flags;
|
||||
|
||||
switch (dac33->fifo_mode) {
|
||||
case DAC33_FIFO_MODE1:
|
||||
|
|
@ -667,10 +662,10 @@ static inline void dac33_prefill_handler(struct tlv320dac33_priv *dac33)
|
|||
DAC33_THRREG(dac33->nsample));
|
||||
|
||||
/* Take the timestamps */
|
||||
spin_lock_irqsave(&dac33->lock, flags);
|
||||
dac33->t_stamp2 = ktime_to_us(ktime_get());
|
||||
dac33->t_stamp1 = dac33->t_stamp2;
|
||||
spin_unlock_irqrestore(&dac33->lock, flags);
|
||||
scoped_guard(spinlock_irqsave, &dac33->lock) {
|
||||
dac33->t_stamp2 = ktime_to_us(ktime_get());
|
||||
dac33->t_stamp1 = dac33->t_stamp2;
|
||||
}
|
||||
|
||||
dac33_write16(component, DAC33_PREFILL_MSB,
|
||||
DAC33_THRREG(dac33->alarm_threshold));
|
||||
|
|
@ -682,11 +677,11 @@ static inline void dac33_prefill_handler(struct tlv320dac33_priv *dac33)
|
|||
break;
|
||||
case DAC33_FIFO_MODE7:
|
||||
/* Take the timestamp */
|
||||
spin_lock_irqsave(&dac33->lock, flags);
|
||||
dac33->t_stamp1 = ktime_to_us(ktime_get());
|
||||
/* Move back the timestamp with drain time */
|
||||
dac33->t_stamp1 -= dac33->mode7_us_to_lthr;
|
||||
spin_unlock_irqrestore(&dac33->lock, flags);
|
||||
scoped_guard(spinlock_irqsave, &dac33->lock) {
|
||||
dac33->t_stamp1 = ktime_to_us(ktime_get());
|
||||
/* Move back the timestamp with drain time */
|
||||
dac33->t_stamp1 -= dac33->mode7_us_to_lthr;
|
||||
}
|
||||
|
||||
dac33_write16(component, DAC33_PREFILL_MSB,
|
||||
DAC33_THRREG(DAC33_MODE7_MARGIN));
|
||||
|
|
@ -704,14 +699,12 @@ static inline void dac33_prefill_handler(struct tlv320dac33_priv *dac33)
|
|||
static inline void dac33_playback_handler(struct tlv320dac33_priv *dac33)
|
||||
{
|
||||
struct snd_soc_component *component = dac33->component;
|
||||
unsigned long flags;
|
||||
|
||||
switch (dac33->fifo_mode) {
|
||||
case DAC33_FIFO_MODE1:
|
||||
/* Take the timestamp */
|
||||
spin_lock_irqsave(&dac33->lock, flags);
|
||||
dac33->t_stamp2 = ktime_to_us(ktime_get());
|
||||
spin_unlock_irqrestore(&dac33->lock, flags);
|
||||
scoped_guard(spinlock_irqsave, &dac33->lock)
|
||||
dac33->t_stamp2 = ktime_to_us(ktime_get());
|
||||
|
||||
dac33_write16(component, DAC33_NSAMPLE_MSB,
|
||||
DAC33_THRREG(dac33->nsample));
|
||||
|
|
@ -735,7 +728,7 @@ static void dac33_work(struct work_struct *work)
|
|||
dac33 = container_of(work, struct tlv320dac33_priv, work);
|
||||
component = dac33->component;
|
||||
|
||||
mutex_lock(&dac33->mutex);
|
||||
guard(mutex)(&dac33->mutex);
|
||||
switch (dac33->state) {
|
||||
case DAC33_PREFILL:
|
||||
dac33->state = DAC33_PLAYBACK;
|
||||
|
|
@ -757,18 +750,15 @@ static void dac33_work(struct work_struct *work)
|
|||
dac33_write(component, DAC33_FIFO_CTRL_A, reg);
|
||||
break;
|
||||
}
|
||||
mutex_unlock(&dac33->mutex);
|
||||
}
|
||||
|
||||
static irqreturn_t dac33_interrupt_handler(int irq, void *dev)
|
||||
{
|
||||
struct snd_soc_component *component = dev;
|
||||
struct tlv320dac33_priv *dac33 = snd_soc_component_get_drvdata(component);
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&dac33->lock, flags);
|
||||
dac33->t_stamp1 = ktime_to_us(ktime_get());
|
||||
spin_unlock_irqrestore(&dac33->lock, flags);
|
||||
scoped_guard(spinlock_irqsave, &dac33->lock)
|
||||
dac33->t_stamp1 = ktime_to_us(ktime_get());
|
||||
|
||||
/* Do not schedule the workqueue in Mode7 */
|
||||
if (dac33->fifo_mode != DAC33_FIFO_MODE7)
|
||||
|
|
@ -902,14 +892,13 @@ static int dac33_prepare_chip(struct snd_pcm_substream *substream,
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
mutex_lock(&dac33->mutex);
|
||||
guard(mutex)(&dac33->mutex);
|
||||
|
||||
if (!dac33->chip_power) {
|
||||
/*
|
||||
* Chip is not powered yet.
|
||||
* Do the init in the dac33_set_bias_level later.
|
||||
*/
|
||||
mutex_unlock(&dac33->mutex);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -1053,8 +1042,6 @@ static int dac33_prepare_chip(struct snd_pcm_substream *substream,
|
|||
break;
|
||||
}
|
||||
|
||||
mutex_unlock(&dac33->mutex);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -1156,21 +1143,20 @@ static snd_pcm_sframes_t dac33_dai_delay(
|
|||
unsigned int time_delta, uthr;
|
||||
int samples_out, samples_in, samples;
|
||||
snd_pcm_sframes_t delay = 0;
|
||||
unsigned long flags;
|
||||
|
||||
switch (dac33->fifo_mode) {
|
||||
case DAC33_FIFO_BYPASS:
|
||||
break;
|
||||
case DAC33_FIFO_MODE1:
|
||||
spin_lock_irqsave(&dac33->lock, flags);
|
||||
t0 = dac33->t_stamp1;
|
||||
t1 = dac33->t_stamp2;
|
||||
spin_unlock_irqrestore(&dac33->lock, flags);
|
||||
scoped_guard(spinlock_irqsave, &dac33->lock) {
|
||||
t0 = dac33->t_stamp1;
|
||||
t1 = dac33->t_stamp2;
|
||||
}
|
||||
t_now = ktime_to_us(ktime_get());
|
||||
|
||||
/* We have not started to fill the FIFO yet, delay is 0 */
|
||||
if (!t1)
|
||||
goto out;
|
||||
return 0;
|
||||
|
||||
if (t0 > t1) {
|
||||
/*
|
||||
|
|
@ -1230,23 +1216,22 @@ static snd_pcm_sframes_t dac33_dai_delay(
|
|||
}
|
||||
break;
|
||||
case DAC33_FIFO_MODE7:
|
||||
spin_lock_irqsave(&dac33->lock, flags);
|
||||
t0 = dac33->t_stamp1;
|
||||
uthr = dac33->uthr;
|
||||
spin_unlock_irqrestore(&dac33->lock, flags);
|
||||
scoped_guard(spinlock_irqsave, &dac33->lock) {
|
||||
t0 = dac33->t_stamp1;
|
||||
uthr = dac33->uthr;
|
||||
}
|
||||
t_now = ktime_to_us(ktime_get());
|
||||
|
||||
/* We have not started to fill the FIFO yet, delay is 0 */
|
||||
if (!t0)
|
||||
goto out;
|
||||
return 0;
|
||||
|
||||
if (t_now <= t0) {
|
||||
/*
|
||||
* Either the timestamps are messed or equal. Report
|
||||
* maximum delay
|
||||
*/
|
||||
delay = uthr;
|
||||
goto out;
|
||||
return uthr;
|
||||
}
|
||||
|
||||
time_delta = t_now - t0;
|
||||
|
|
@ -1287,7 +1272,7 @@ static snd_pcm_sframes_t dac33_dai_delay(
|
|||
dac33->fifo_mode);
|
||||
break;
|
||||
}
|
||||
out:
|
||||
|
||||
return delay;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user