ALSA: snd_ps3: Use guard() for spin locks

Clean up the code using guard() for spin locks.

Merely code refactoring, and no behavior change.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
Takashi Iwai 2025-09-10 13:09:22 +02:00
parent f1998e16b2
commit 97bffca637
1 changed files with 5 additions and 16 deletions

View File

@ -221,7 +221,6 @@ static int snd_ps3_program_dma(struct snd_ps3_card_info *card,
int fill_stages, dma_ch, stage; int fill_stages, dma_ch, stage;
enum snd_ps3_ch ch; enum snd_ps3_ch ch;
uint32_t ch0_kick_event = 0; /* initialize to mute gcc */ uint32_t ch0_kick_event = 0; /* initialize to mute gcc */
unsigned long irqsave;
int silent = 0; int silent = 0;
switch (filltype) { switch (filltype) {
@ -242,7 +241,7 @@ static int snd_ps3_program_dma(struct snd_ps3_card_info *card,
snd_ps3_verify_dma_stop(card, 700, 0); snd_ps3_verify_dma_stop(card, 700, 0);
fill_stages = 4; fill_stages = 4;
spin_lock_irqsave(&card->dma_lock, irqsave); guard(spinlock_irqsave)(&card->dma_lock);
for (ch = 0; ch < 2; ch++) { for (ch = 0; ch < 2; ch++) {
for (stage = 0; stage < fill_stages; stage++) { for (stage = 0; stage < fill_stages; stage++) {
dma_ch = stage * 2 + ch; dma_ch = stage * 2 + ch;
@ -289,7 +288,6 @@ static int snd_ps3_program_dma(struct snd_ps3_card_info *card,
} }
/* ensure the hardware sees the change */ /* ensure the hardware sees the change */
wmb(); wmb();
spin_unlock_irqrestore(&card->dma_lock, irqsave);
return 0; return 0;
} }
@ -561,7 +559,6 @@ static int snd_ps3_pcm_prepare(struct snd_pcm_substream *substream)
{ {
struct snd_pcm_runtime *runtime = substream->runtime; struct snd_pcm_runtime *runtime = substream->runtime;
struct snd_ps3_card_info *card = snd_pcm_substream_chip(substream); struct snd_ps3_card_info *card = snd_pcm_substream_chip(substream);
unsigned long irqsave;
if (!snd_ps3_set_avsetting(substream)) { if (!snd_ps3_set_avsetting(substream)) {
/* some parameter changed */ /* some parameter changed */
@ -578,8 +575,7 @@ static int snd_ps3_pcm_prepare(struct snd_pcm_substream *substream)
} }
/* restart ring buffer pointer */ /* restart ring buffer pointer */
spin_lock_irqsave(&card->dma_lock, irqsave); scoped_guard(spinlock_irqsave, &card->dma_lock) {
{
card->dma_buffer_size = runtime->dma_bytes; card->dma_buffer_size = runtime->dma_bytes;
card->dma_last_transfer_vaddr[SND_PS3_CH_L] = card->dma_last_transfer_vaddr[SND_PS3_CH_L] =
@ -600,7 +596,6 @@ static int snd_ps3_pcm_prepare(struct snd_pcm_substream *substream)
card->dma_start_bus_addr[SND_PS3_CH_L]); card->dma_start_bus_addr[SND_PS3_CH_L]);
} }
spin_unlock_irqrestore(&card->dma_lock, irqsave);
/* ensure the hardware sees the change */ /* ensure the hardware sees the change */
mb(); mb();
@ -618,11 +613,9 @@ static int snd_ps3_pcm_trigger(struct snd_pcm_substream *substream,
/* clear outstanding interrupts */ /* clear outstanding interrupts */
update_reg(PS3_AUDIO_AX_IS, 0); update_reg(PS3_AUDIO_AX_IS, 0);
spin_lock(&card->dma_lock); scoped_guard(spinlock, &card->dma_lock) {
{
card->running = 1; card->running = 1;
} }
spin_unlock(&card->dma_lock);
snd_ps3_program_dma(card, snd_ps3_program_dma(card,
SND_PS3_DMA_FILLTYPE_SILENT_FIRSTFILL); SND_PS3_DMA_FILLTYPE_SILENT_FIRSTFILL);
@ -636,11 +629,9 @@ static int snd_ps3_pcm_trigger(struct snd_pcm_substream *substream,
break; break;
case SNDRV_PCM_TRIGGER_STOP: case SNDRV_PCM_TRIGGER_STOP:
spin_lock(&card->dma_lock); scoped_guard(spinlock, &card->dma_lock) {
{
card->running = 0; card->running = 0;
} }
spin_unlock(&card->dma_lock);
snd_ps3_wait_for_dma_stop(card); snd_ps3_wait_for_dma_stop(card);
break; break;
default: default:
@ -661,12 +652,10 @@ static snd_pcm_uframes_t snd_ps3_pcm_pointer(
size_t bytes; size_t bytes;
snd_pcm_uframes_t ret; snd_pcm_uframes_t ret;
spin_lock(&card->dma_lock); scoped_guard(spinlock, &card->dma_lock) {
{
bytes = (size_t)(card->dma_last_transfer_vaddr[SND_PS3_CH_L] - bytes = (size_t)(card->dma_last_transfer_vaddr[SND_PS3_CH_L] -
card->dma_start_vaddr[SND_PS3_CH_L]); card->dma_start_vaddr[SND_PS3_CH_L]);
} }
spin_unlock(&card->dma_lock);
ret = bytes_to_frames(substream->runtime, bytes * 2); ret = bytes_to_frames(substream->runtime, bytes * 2);