mirror of
https://github.com/torvalds/linux.git
synced 2026-09-24 06:24:02 +02:00
ASoC: samsung: i2s: Avoid mixing goto with guard()
cleanup.h recommends not mixing goto-based error handling with cleanup
helpers in the same function.
Remove the goto path and rely on guard(pm_runtime) for automatic cleanup
instead.
Fixes: 3d08517b5c ("ASoC: samsung: i2s: Use guard() for spin locks")
Signed-off-by: bui duc phuc <phucduc.bui@gmail.com>
Link: https://patch.msgid.link/20260701041310.230725-2-phucduc.bui@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
bff7fad101
commit
02fd694e60
|
|
@ -8,6 +8,7 @@
|
|||
#include <dt-bindings/sound/samsung-i2s.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/cleanup.h>
|
||||
#include <linux/clk.h>
|
||||
#include <linux/clk-provider.h>
|
||||
#include <linux/io.h>
|
||||
|
|
@ -512,7 +513,7 @@ static int i2s_set_sysclk(struct snd_soc_dai *dai, int clk_id, unsigned int rfs,
|
|||
u32 mod, mask, val = 0;
|
||||
int ret = 0;
|
||||
|
||||
pm_runtime_get_sync(dai->dev);
|
||||
guard(pm_runtime_active)(dai->dev);
|
||||
|
||||
scoped_guard(spinlock_irqsave, &priv->lock)
|
||||
mod = readl(priv->addr + I2SMOD);
|
||||
|
|
@ -537,8 +538,7 @@ static int i2s_set_sysclk(struct snd_soc_dai *dai, int clk_id, unsigned int rfs,
|
|||
&& (mod & cdcon_mask))))) {
|
||||
dev_err(&i2s->pdev->dev,
|
||||
"%s:%d Other DAI busy\n", __func__, __LINE__);
|
||||
ret = -EAGAIN;
|
||||
goto err;
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
if (dir == SND_SOC_CLOCK_IN)
|
||||
|
|
@ -566,7 +566,7 @@ static int i2s_set_sysclk(struct snd_soc_dai *dai, int clk_id, unsigned int rfs,
|
|||
} else {
|
||||
priv->rclk_srcrate =
|
||||
clk_get_rate(priv->op_clk);
|
||||
goto done;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -580,14 +580,14 @@ static int i2s_set_sysclk(struct snd_soc_dai *dai, int clk_id, unsigned int rfs,
|
|||
if (WARN_ON(IS_ERR(priv->op_clk))) {
|
||||
ret = PTR_ERR(priv->op_clk);
|
||||
priv->op_clk = NULL;
|
||||
goto err;
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = clk_prepare_enable(priv->op_clk);
|
||||
if (ret) {
|
||||
clk_put(priv->op_clk);
|
||||
priv->op_clk = NULL;
|
||||
goto err;
|
||||
return ret;
|
||||
}
|
||||
priv->rclk_srcrate = clk_get_rate(priv->op_clk);
|
||||
|
||||
|
|
@ -595,11 +595,10 @@ static int i2s_set_sysclk(struct snd_soc_dai *dai, int clk_id, unsigned int rfs,
|
|||
|| (clk_id && !(mod & rsrc_mask))) {
|
||||
dev_err(&i2s->pdev->dev,
|
||||
"%s:%d Other DAI busy\n", __func__, __LINE__);
|
||||
ret = -EAGAIN;
|
||||
goto err;
|
||||
return -EAGAIN;
|
||||
} else {
|
||||
/* Call can't be on the active DAI */
|
||||
goto done;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (clk_id == 1)
|
||||
|
|
@ -607,8 +606,7 @@ static int i2s_set_sysclk(struct snd_soc_dai *dai, int clk_id, unsigned int rfs,
|
|||
break;
|
||||
default:
|
||||
dev_err(&i2s->pdev->dev, "We don't serve that!\n");
|
||||
ret = -EINVAL;
|
||||
goto err;
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
scoped_guard(spinlock_irqsave, &priv->lock) {
|
||||
|
|
@ -616,13 +614,8 @@ static int i2s_set_sysclk(struct snd_soc_dai *dai, int clk_id, unsigned int rfs,
|
|||
mod = (mod & ~mask) | val;
|
||||
writel(mod, priv->addr + I2SMOD);
|
||||
}
|
||||
done:
|
||||
pm_runtime_put(dai->dev);
|
||||
|
||||
return 0;
|
||||
err:
|
||||
pm_runtime_put(dai->dev);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int i2s_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user