]> www.infradead.org Git - users/hch/misc.git/commitdiff
ALSA: als4000: Use guard() for spin locks
authorTakashi Iwai <tiwai@suse.de>
Fri, 29 Aug 2025 14:42:43 +0000 (16:42 +0200)
committerTakashi Iwai <tiwai@suse.de>
Mon, 1 Sep 2025 11:52:38 +0000 (13:52 +0200)
Clean up the code using guard() for spin locks.

Merely code refactoring, and no behavior change.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Link: https://patch.msgid.link/20250829144342.4290-9-tiwai@suse.de
sound/pci/als4000.c

index eb159497c905a710dac093d1538e673102d62353..33034e07b3d680746524a77bd1cbd2ce02d9bc28 100644 (file)
@@ -369,14 +369,14 @@ static int snd_als4000_capture_prepare(struct snd_pcm_substream *substream)
                count >>= 1;
        count--;
 
-       spin_lock_irq(&chip->reg_lock);
-       snd_als4000_set_rate(chip, runtime->rate);
-       snd_als4000_set_capture_dma(chip, runtime->dma_addr, size);
-       spin_unlock_irq(&chip->reg_lock);
-       spin_lock_irq(&chip->mixer_lock);
-       snd_als4_cr_write(chip, ALS4K_CR1C_FIFO2_BLOCK_LENGTH_LO, count & 0xff);
-       snd_als4_cr_write(chip, ALS4K_CR1D_FIFO2_BLOCK_LENGTH_HI, count >> 8);
-       spin_unlock_irq(&chip->mixer_lock);
+       scoped_guard(spinlock_irq, &chip->reg_lock) {
+               snd_als4000_set_rate(chip, runtime->rate);
+               snd_als4000_set_capture_dma(chip, runtime->dma_addr, size);
+       }
+       scoped_guard(spinlock_irq, &chip->mixer_lock) {
+               snd_als4_cr_write(chip, ALS4K_CR1C_FIFO2_BLOCK_LENGTH_LO, count & 0xff);
+               snd_als4_cr_write(chip, ALS4K_CR1D_FIFO2_BLOCK_LENGTH_HI, count >> 8);
+       }
        return 0;
 }
 
@@ -402,7 +402,7 @@ static int snd_als4000_playback_prepare(struct snd_pcm_substream *substream)
         * reordering, ...). Something seems to get enabled on playback
         * that I haven't found out how to disable again, which then causes
         * the switching pops to reach the speakers the next time here. */
-       spin_lock_irq(&chip->reg_lock);
+       guard(spinlock_irq)(&chip->reg_lock);
        snd_als4000_set_rate(chip, runtime->rate);
        snd_als4000_set_playback_dma(chip, runtime->dma_addr, size);
        
@@ -413,7 +413,6 @@ static int snd_als4000_playback_prepare(struct snd_pcm_substream *substream)
        snd_sbdsp_command(chip, count & 0xff);
        snd_sbdsp_command(chip, count >> 8);
        snd_sbdsp_command(chip, playback_cmd(chip).dma_off);    
-       spin_unlock_irq(&chip->reg_lock);
        
        return 0;
 }
@@ -429,7 +428,7 @@ static int snd_als4000_capture_trigger(struct snd_pcm_substream *substream, int
           Probably need to take reg_lock as outer (or inner??) lock, too.
           (or serialize both lock operations? probably not, though... - racy?)
        */
-       spin_lock(&chip->mixer_lock);
+       guard(spinlock)(&chip->mixer_lock);
        switch (cmd) {
        case SNDRV_PCM_TRIGGER_START:
        case SNDRV_PCM_TRIGGER_RESUME:
@@ -447,7 +446,6 @@ static int snd_als4000_capture_trigger(struct snd_pcm_substream *substream, int
                result = -EINVAL;
                break;
        }
-       spin_unlock(&chip->mixer_lock);
        return result;
 }
 
@@ -456,7 +454,7 @@ static int snd_als4000_playback_trigger(struct snd_pcm_substream *substream, int
        struct snd_sb *chip = snd_pcm_substream_chip(substream);
        int result = 0;
 
-       spin_lock(&chip->reg_lock);
+       guard(spinlock)(&chip->reg_lock);
        switch (cmd) {
        case SNDRV_PCM_TRIGGER_START:
        case SNDRV_PCM_TRIGGER_RESUME:
@@ -472,7 +470,6 @@ static int snd_als4000_playback_trigger(struct snd_pcm_substream *substream, int
                result = -EINVAL;
                break;
        }
-       spin_unlock(&chip->reg_lock);
        return result;
 }
 
@@ -481,9 +478,9 @@ static snd_pcm_uframes_t snd_als4000_capture_pointer(struct snd_pcm_substream *s
        struct snd_sb *chip = snd_pcm_substream_chip(substream);
        unsigned int result;
 
-       spin_lock(&chip->reg_lock);     
-       result = snd_als4k_gcr_read(chip, ALS4K_GCRA4_FIFO2_CURRENT_ADDR);
-       spin_unlock(&chip->reg_lock);
+       scoped_guard(spinlock, &chip->reg_lock) {
+               result = snd_als4k_gcr_read(chip, ALS4K_GCRA4_FIFO2_CURRENT_ADDR);
+       }
        result &= 0xffff;
        return bytes_to_frames( substream->runtime, result );
 }
@@ -493,9 +490,9 @@ static snd_pcm_uframes_t snd_als4000_playback_pointer(struct snd_pcm_substream *
        struct snd_sb *chip = snd_pcm_substream_chip(substream);
        unsigned result;
 
-       spin_lock(&chip->reg_lock);     
-       result = snd_als4k_gcr_read(chip, ALS4K_GCRA0_FIFO1_CURRENT_ADDR);
-       spin_unlock(&chip->reg_lock);
+       scoped_guard(spinlock, &chip->reg_lock) {
+               result = snd_als4k_gcr_read(chip, ALS4K_GCRA0_FIFO1_CURRENT_ADDR);
+       }
        result &= 0xffff;
        return bytes_to_frames( substream->runtime, result );
 }
@@ -536,10 +533,10 @@ static irqreturn_t snd_als4000_interrupt(int irq, void *dev_id)
        snd_als4k_iobase_writeb(chip->alt_port,
                         ALS4K_IOB_0E_IRQTYPE_SB_CR1E_MPU, pci_irqstatus);
        
-       spin_lock(&chip->mixer_lock);
-       /* SPECS_PAGE: 20 */
-       sb_irqstatus = snd_sbmixer_read(chip, SB_DSP4_IRQSTATUS);
-       spin_unlock(&chip->mixer_lock);
+       scoped_guard(spinlock, &chip->mixer_lock) {
+               /* SPECS_PAGE: 20 */
+               sb_irqstatus = snd_sbmixer_read(chip, SB_DSP4_IRQSTATUS);
+       }
        
        if (sb_irqstatus & SB_IRQTYPE_8BIT)
                snd_sb_ack_8bit(chip);
@@ -709,18 +706,18 @@ static void snd_als4000_configure(struct snd_sb *chip)
        int i;
 
        /* do some more configuration */
-       spin_lock_irq(&chip->mixer_lock);
-       tmp = snd_als4_cr_read(chip, ALS4K_CR0_SB_CONFIG);
-       snd_als4_cr_write(chip, ALS4K_CR0_SB_CONFIG,
-                               tmp|ALS4K_CR0_MX80_81_REG_WRITE_ENABLE);
-       /* always select DMA channel 0, since we do not actually use DMA
-        * SPECS_PAGE: 19/20 */
-       snd_sbmixer_write(chip, SB_DSP4_DMASETUP, SB_DMASETUP_DMA0);
-       snd_als4_cr_write(chip, ALS4K_CR0_SB_CONFIG,
-                                tmp & ~ALS4K_CR0_MX80_81_REG_WRITE_ENABLE);
-       spin_unlock_irq(&chip->mixer_lock);
+       scoped_guard(spinlock_irq, &chip->mixer_lock) {
+               tmp = snd_als4_cr_read(chip, ALS4K_CR0_SB_CONFIG);
+               snd_als4_cr_write(chip, ALS4K_CR0_SB_CONFIG,
+                                 tmp|ALS4K_CR0_MX80_81_REG_WRITE_ENABLE);
+               /* always select DMA channel 0, since we do not actually use DMA
+                * SPECS_PAGE: 19/20 */
+               snd_sbmixer_write(chip, SB_DSP4_DMASETUP, SB_DMASETUP_DMA0);
+               snd_als4_cr_write(chip, ALS4K_CR0_SB_CONFIG,
+                                 tmp & ~ALS4K_CR0_MX80_81_REG_WRITE_ENABLE);
+       }
        
-       spin_lock_irq(&chip->reg_lock);
+       guard(spinlock_irq)(&chip->reg_lock);
        /* enable interrupts */
        snd_als4k_gcr_write(chip, ALS4K_GCR8C_MISC_CTRL,
                                        ALS4K_GCR8C_IRQ_MASK_CTRL_ENABLE);
@@ -731,7 +728,6 @@ static void snd_als4000_configure(struct snd_sb *chip)
        /* enable burst mode to prevent dropouts during high PCI bus usage */
        snd_als4k_gcr_write(chip, ALS4K_GCR99_DMA_EMULATION_CTRL,
                (snd_als4k_gcr_read(chip, ALS4K_GCR99_DMA_EMULATION_CTRL) & ~0x07) | 0x04);
-       spin_unlock_irq(&chip->reg_lock);
 }
 
 #ifdef SUPPORT_JOYSTICK