]> www.infradead.org Git - users/hch/misc.git/commitdiff
ALSA: hda/common: Use guard() for spinlocks
authorTakashi Iwai <tiwai@suse.de>
Wed, 27 Aug 2025 07:29:04 +0000 (09:29 +0200)
committerTakashi Iwai <tiwai@suse.de>
Fri, 29 Aug 2025 09:52:15 +0000 (11:52 +0200)
Replace the manual spin lock/unlock pairs with guard() for code
simplification.

Only code refactoring, and no behavior change.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Link: https://patch.msgid.link/20250827072916.31933-25-tiwai@suse.de
sound/hda/common/codec.c
sound/hda/common/controller.c

index f6c9230f04ccd51ffe8158026faea715a8f45b0d..c6d44168c7f9dec23e2d07d2d6d3387f8d6ba94d 100644 (file)
@@ -1748,9 +1748,9 @@ int snd_hda_lock_devices(struct hda_bus *bus)
        struct snd_card *card = bus->card;
        struct hda_codec *codec;
 
-       spin_lock(&card->files_lock);
+       guard(spinlock)(&card->files_lock);
        if (card->shutdown)
-               goto err_unlock;
+               return -EINVAL;
        card->shutdown = 1;
        if (!list_empty(&card->ctl_files))
                goto err_clear;
@@ -1765,13 +1765,10 @@ int snd_hda_lock_devices(struct hda_bus *bus)
                                goto err_clear;
                }
        }
-       spin_unlock(&card->files_lock);
        return 0;
 
  err_clear:
        card->shutdown = 0;
- err_unlock:
-       spin_unlock(&card->files_lock);
        return -EINVAL;
 }
 EXPORT_SYMBOL_GPL(snd_hda_lock_devices);
@@ -1784,9 +1781,8 @@ void snd_hda_unlock_devices(struct hda_bus *bus)
 {
        struct snd_card *card = bus->card;
 
-       spin_lock(&card->files_lock);
+       guard(spinlock)(&card->files_lock);
        card->shutdown = 0;
-       spin_unlock(&card->files_lock);
 }
 EXPORT_SYMBOL_GPL(snd_hda_unlock_devices);
 
index a5693c9ca400c30af2360bbafbcaa9c7548c88ec..b1cfd9bd4dcb78750a4fc6d5a2eefac9df74b932 100644 (file)
@@ -245,31 +245,29 @@ static int azx_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
                snd_pcm_trigger_done(s, substream);
        }
 
-       spin_lock(&bus->reg_lock);
+       scoped_guard(spinlock, &bus->reg_lock) {
+               /* first, set SYNC bits of corresponding streams */
+               snd_hdac_stream_sync_trigger(hstr, true, sbits, sync_reg);
 
-       /* first, set SYNC bits of corresponding streams */
-       snd_hdac_stream_sync_trigger(hstr, true, sbits, sync_reg);
-
-       snd_pcm_group_for_each_entry(s, substream) {
-               if (s->pcm->card != substream->pcm->card)
-                       continue;
-               azx_dev = get_azx_dev(s);
-               if (start) {
-                       azx_dev->insufficient = 1;
-                       snd_hdac_stream_start(azx_stream(azx_dev));
-               } else {
-                       snd_hdac_stream_stop(azx_stream(azx_dev));
+               snd_pcm_group_for_each_entry(s, substream) {
+                       if (s->pcm->card != substream->pcm->card)
+                               continue;
+                       azx_dev = get_azx_dev(s);
+                       if (start) {
+                               azx_dev->insufficient = 1;
+                               snd_hdac_stream_start(azx_stream(azx_dev));
+                       } else {
+                               snd_hdac_stream_stop(azx_stream(azx_dev));
+                       }
                }
        }
-       spin_unlock(&bus->reg_lock);
 
        snd_hdac_stream_sync(hstr, start, sbits);
 
-       spin_lock(&bus->reg_lock);
+       guard(spinlock)(&bus->reg_lock);
        /* reset SYNC bits */
        snd_hdac_stream_sync_trigger(hstr, false, sbits, sync_reg);
        snd_hdac_stream_timecounter_init(hstr, sbits, start);
-       spin_unlock(&bus->reg_lock);
        return 0;
 }
 
@@ -964,19 +962,18 @@ int snd_hda_codec_load_dsp_prepare(struct hda_codec *codec, unsigned int format,
 
        azx_dev = azx_get_dsp_loader_dev(chip);
        hstr = azx_stream(azx_dev);
-       spin_lock_irq(&bus->reg_lock);
-       if (hstr->opened) {
-               chip->saved_azx_dev = *azx_dev;
-               saved = true;
+       scoped_guard(spinlock_irq, &bus->reg_lock) {
+               if (hstr->opened) {
+                       chip->saved_azx_dev = *azx_dev;
+                       saved = true;
+               }
        }
-       spin_unlock_irq(&bus->reg_lock);
 
        err = snd_hdac_dsp_prepare(hstr, format, byte_size, bufp);
        if (err < 0) {
-               spin_lock_irq(&bus->reg_lock);
+               guard(spinlock_irq)(&bus->reg_lock);
                if (saved)
                        *azx_dev = chip->saved_azx_dev;
-               spin_unlock_irq(&bus->reg_lock);
                return err;
        }
 
@@ -1007,11 +1004,10 @@ void snd_hda_codec_load_dsp_cleanup(struct hda_codec *codec,
                return;
 
        snd_hdac_dsp_cleanup(hstr, dmab);
-       spin_lock_irq(&bus->reg_lock);
+       guard(spinlock_irq)(&bus->reg_lock);
        if (hstr->opened)
                *azx_dev = chip->saved_azx_dev;
        hstr->locked = false;
-       spin_unlock_irq(&bus->reg_lock);
 }
 EXPORT_SYMBOL_GPL(snd_hda_codec_load_dsp_cleanup);
 #endif /* CONFIG_SND_HDA_DSP_LOADER */
@@ -1072,10 +1068,10 @@ irqreturn_t azx_interrupt(int irq, void *dev_id)
                if (!pm_runtime_active(chip->card->dev))
                        return IRQ_NONE;
 
-       spin_lock(&bus->reg_lock);
+       guard(spinlock)(&bus->reg_lock);
 
        if (chip->disabled)
-               goto unlock;
+               return IRQ_NONE;
 
        do {
                status = azx_readl(chip, INTSTS);
@@ -1107,9 +1103,6 @@ irqreturn_t azx_interrupt(int irq, void *dev_id)
                }
        } while (active && ++repeat < 10);
 
- unlock:
-       spin_unlock(&bus->reg_lock);
-
        return IRQ_RETVAL(handled);
 }
 EXPORT_SYMBOL_GPL(azx_interrupt);