int cmd)
{
struct snd_at73c213 *chip = snd_pcm_substream_chip(substream);
- int retval = 0;
- spin_lock(&chip->lock);
+ guard(spinlock)(&chip->lock);
switch (cmd) {
case SNDRV_PCM_TRIGGER_START:
break;
default:
dev_dbg(&chip->spi->dev, "spurious command %x\n", cmd);
- retval = -EINVAL;
+ return -EINVAL;
break;
}
- spin_unlock(&chip->lock);
-
- return retval;
+ return 0;
}
static snd_pcm_uframes_t
int next_period;
int retval = IRQ_NONE;
- spin_lock(&chip->lock);
+ scoped_guard(spinlock, &chip->lock) {
+ block_size = frames_to_bytes(runtime, runtime->period_size);
+ status = ssc_readl(chip->ssc->regs, IMR);
- block_size = frames_to_bytes(runtime, runtime->period_size);
- status = ssc_readl(chip->ssc->regs, IMR);
-
- if (status & SSC_BIT(IMR_ENDTX)) {
- chip->period++;
- if (chip->period == runtime->periods)
- chip->period = 0;
- next_period = chip->period + 1;
- if (next_period == runtime->periods)
- next_period = 0;
-
- offset = block_size * next_period;
-
- ssc_writel(chip->ssc->regs, PDC_TNPR,
- (long)runtime->dma_addr + offset);
- ssc_writel(chip->ssc->regs, PDC_TNCR,
- runtime->period_size * runtime->channels);
- retval = IRQ_HANDLED;
- }
+ if (status & SSC_BIT(IMR_ENDTX)) {
+ chip->period++;
+ if (chip->period == runtime->periods)
+ chip->period = 0;
+ next_period = chip->period + 1;
+ if (next_period == runtime->periods)
+ next_period = 0;
+
+ offset = block_size * next_period;
- ssc_readl(chip->ssc->regs, IMR);
- spin_unlock(&chip->lock);
+ ssc_writel(chip->ssc->regs, PDC_TNPR,
+ (long)runtime->dma_addr + offset);
+ ssc_writel(chip->ssc->regs, PDC_TNCR,
+ runtime->period_size * runtime->channels);
+ retval = IRQ_HANDLED;
+ }
+
+ ssc_readl(chip->ssc->regs, IMR);
+ }
if (status & SSC_BIT(IMR_ENDTX))
snd_pcm_period_elapsed(chip->substream);