mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
ASoC: samsung: pcm: Use guard() for spin locks
Clean up the code using guard() for spin locks. Merely code refactoring, and no behavior change. Signed-off-by: bui duc phuc <phucduc.bui@gmail.com> Link: https://patch.msgid.link/20260423125646.156599-5-phucduc.bui@gmail.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
1d4dfb2755
commit
02f43a0d0d
|
|
@ -218,7 +218,6 @@ static int s3c_pcm_trigger(struct snd_pcm_substream *substream, int cmd,
|
|||
{
|
||||
struct snd_soc_pcm_runtime *rtd = snd_soc_substream_to_rtd(substream);
|
||||
struct s3c_pcm_info *pcm = snd_soc_dai_get_drvdata(snd_soc_rtd_to_cpu(rtd, 0));
|
||||
unsigned long flags;
|
||||
|
||||
dev_dbg(pcm->dev, "Entered %s\n", __func__);
|
||||
|
||||
|
|
@ -226,27 +225,23 @@ static int s3c_pcm_trigger(struct snd_pcm_substream *substream, int cmd,
|
|||
case SNDRV_PCM_TRIGGER_START:
|
||||
case SNDRV_PCM_TRIGGER_RESUME:
|
||||
case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
|
||||
spin_lock_irqsave(&pcm->lock, flags);
|
||||
|
||||
if (substream->stream == SNDRV_PCM_STREAM_CAPTURE)
|
||||
s3c_pcm_snd_rxctrl(pcm, 1);
|
||||
else
|
||||
s3c_pcm_snd_txctrl(pcm, 1);
|
||||
|
||||
spin_unlock_irqrestore(&pcm->lock, flags);
|
||||
scoped_guard(spinlock_irqsave, &pcm->lock) {
|
||||
if (substream->stream == SNDRV_PCM_STREAM_CAPTURE)
|
||||
s3c_pcm_snd_rxctrl(pcm, 1);
|
||||
else
|
||||
s3c_pcm_snd_txctrl(pcm, 1);
|
||||
}
|
||||
break;
|
||||
|
||||
case SNDRV_PCM_TRIGGER_STOP:
|
||||
case SNDRV_PCM_TRIGGER_SUSPEND:
|
||||
case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
|
||||
spin_lock_irqsave(&pcm->lock, flags);
|
||||
|
||||
if (substream->stream == SNDRV_PCM_STREAM_CAPTURE)
|
||||
s3c_pcm_snd_rxctrl(pcm, 0);
|
||||
else
|
||||
s3c_pcm_snd_txctrl(pcm, 0);
|
||||
|
||||
spin_unlock_irqrestore(&pcm->lock, flags);
|
||||
scoped_guard(spinlock_irqsave, &pcm->lock) {
|
||||
if (substream->stream == SNDRV_PCM_STREAM_CAPTURE)
|
||||
s3c_pcm_snd_rxctrl(pcm, 0);
|
||||
else
|
||||
s3c_pcm_snd_txctrl(pcm, 0);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
|
|
@ -265,7 +260,6 @@ static int s3c_pcm_hw_params(struct snd_pcm_substream *substream,
|
|||
void __iomem *regs = pcm->regs;
|
||||
struct clk *clk;
|
||||
int sclk_div, sync_div;
|
||||
unsigned long flags;
|
||||
u32 clkctl;
|
||||
|
||||
dev_dbg(pcm->dev, "Entered %s\n", __func__);
|
||||
|
|
@ -278,36 +272,33 @@ static int s3c_pcm_hw_params(struct snd_pcm_substream *substream,
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
spin_lock_irqsave(&pcm->lock, flags);
|
||||
scoped_guard(spinlock_irqsave, &pcm->lock) {
|
||||
/* Get hold of the PCMSOURCE_CLK */
|
||||
clkctl = readl(regs + S3C_PCM_CLKCTL);
|
||||
if (clkctl & S3C_PCM_CLKCTL_SERCLKSEL_PCLK)
|
||||
clk = pcm->pclk;
|
||||
else
|
||||
clk = pcm->cclk;
|
||||
|
||||
/* Get hold of the PCMSOURCE_CLK */
|
||||
clkctl = readl(regs + S3C_PCM_CLKCTL);
|
||||
if (clkctl & S3C_PCM_CLKCTL_SERCLKSEL_PCLK)
|
||||
clk = pcm->pclk;
|
||||
else
|
||||
clk = pcm->cclk;
|
||||
/* Set the SCLK divider */
|
||||
sclk_div = clk_get_rate(clk) / pcm->sclk_per_fs /
|
||||
params_rate(params) / 2 - 1;
|
||||
|
||||
/* Set the SCLK divider */
|
||||
sclk_div = clk_get_rate(clk) / pcm->sclk_per_fs /
|
||||
params_rate(params) / 2 - 1;
|
||||
clkctl &= ~(S3C_PCM_CLKCTL_SCLKDIV_MASK
|
||||
<< S3C_PCM_CLKCTL_SCLKDIV_SHIFT);
|
||||
clkctl |= ((sclk_div & S3C_PCM_CLKCTL_SCLKDIV_MASK)
|
||||
<< S3C_PCM_CLKCTL_SCLKDIV_SHIFT);
|
||||
|
||||
clkctl &= ~(S3C_PCM_CLKCTL_SCLKDIV_MASK
|
||||
<< S3C_PCM_CLKCTL_SCLKDIV_SHIFT);
|
||||
clkctl |= ((sclk_div & S3C_PCM_CLKCTL_SCLKDIV_MASK)
|
||||
<< S3C_PCM_CLKCTL_SCLKDIV_SHIFT);
|
||||
/* Set the SYNC divider */
|
||||
sync_div = pcm->sclk_per_fs - 1;
|
||||
|
||||
/* Set the SYNC divider */
|
||||
sync_div = pcm->sclk_per_fs - 1;
|
||||
|
||||
clkctl &= ~(S3C_PCM_CLKCTL_SYNCDIV_MASK
|
||||
<< S3C_PCM_CLKCTL_SYNCDIV_SHIFT);
|
||||
clkctl |= ((sync_div & S3C_PCM_CLKCTL_SYNCDIV_MASK)
|
||||
<< S3C_PCM_CLKCTL_SYNCDIV_SHIFT);
|
||||
|
||||
writel(clkctl, regs + S3C_PCM_CLKCTL);
|
||||
|
||||
spin_unlock_irqrestore(&pcm->lock, flags);
|
||||
clkctl &= ~(S3C_PCM_CLKCTL_SYNCDIV_MASK
|
||||
<< S3C_PCM_CLKCTL_SYNCDIV_SHIFT);
|
||||
clkctl |= ((sync_div & S3C_PCM_CLKCTL_SYNCDIV_MASK)
|
||||
<< S3C_PCM_CLKCTL_SYNCDIV_SHIFT);
|
||||
|
||||
writel(clkctl, regs + S3C_PCM_CLKCTL);
|
||||
}
|
||||
dev_dbg(pcm->dev, "PCMSOURCE_CLK-%lu SCLK=%ufs SCLK_DIV=%d SYNC_DIV=%d\n",
|
||||
clk_get_rate(clk), pcm->sclk_per_fs,
|
||||
sclk_div, sync_div);
|
||||
|
|
@ -320,13 +311,11 @@ static int s3c_pcm_set_fmt(struct snd_soc_dai *cpu_dai,
|
|||
{
|
||||
struct s3c_pcm_info *pcm = snd_soc_dai_get_drvdata(cpu_dai);
|
||||
void __iomem *regs = pcm->regs;
|
||||
unsigned long flags;
|
||||
int ret = 0;
|
||||
u32 ctl;
|
||||
|
||||
dev_dbg(pcm->dev, "Entered %s\n", __func__);
|
||||
|
||||
spin_lock_irqsave(&pcm->lock, flags);
|
||||
guard(spinlock_irqsave)(&pcm->lock);
|
||||
|
||||
ctl = readl(regs + S3C_PCM_CTL);
|
||||
|
||||
|
|
@ -336,8 +325,7 @@ static int s3c_pcm_set_fmt(struct snd_soc_dai *cpu_dai,
|
|||
break;
|
||||
default:
|
||||
dev_err(pcm->dev, "Unsupported clock inversion!\n");
|
||||
ret = -EINVAL;
|
||||
goto exit;
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
switch (fmt & SND_SOC_DAIFMT_CLOCK_PROVIDER_MASK) {
|
||||
|
|
@ -346,8 +334,7 @@ static int s3c_pcm_set_fmt(struct snd_soc_dai *cpu_dai,
|
|||
break;
|
||||
default:
|
||||
dev_err(pcm->dev, "Unsupported master/slave format!\n");
|
||||
ret = -EINVAL;
|
||||
goto exit;
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
switch (fmt & SND_SOC_DAIFMT_CLOCK_MASK) {
|
||||
|
|
@ -359,8 +346,7 @@ static int s3c_pcm_set_fmt(struct snd_soc_dai *cpu_dai,
|
|||
break;
|
||||
default:
|
||||
dev_err(pcm->dev, "Invalid Clock gating request!\n");
|
||||
ret = -EINVAL;
|
||||
goto exit;
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
|
||||
|
|
@ -374,16 +360,11 @@ static int s3c_pcm_set_fmt(struct snd_soc_dai *cpu_dai,
|
|||
break;
|
||||
default:
|
||||
dev_err(pcm->dev, "Unsupported data format!\n");
|
||||
ret = -EINVAL;
|
||||
goto exit;
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
writel(ctl, regs + S3C_PCM_CTL);
|
||||
|
||||
exit:
|
||||
spin_unlock_irqrestore(&pcm->lock, flags);
|
||||
|
||||
return ret;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int s3c_pcm_set_clkdiv(struct snd_soc_dai *cpu_dai,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user