]> www.infradead.org Git - users/hch/misc.git/commitdiff
ALSA: ppc: Use guard() for spin locks
authorTakashi Iwai <tiwai@suse.de>
Wed, 10 Sep 2025 11:09:23 +0000 (13:09 +0200)
committerTakashi Iwai <tiwai@suse.de>
Wed, 10 Sep 2025 11:20:01 +0000 (13:20 +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>
sound/ppc/awacs.c
sound/ppc/beep.c
sound/ppc/burgundy.c
sound/ppc/pmac.c

index 13a6f3af13ef89a660062fd8252d88da6de62826..c231a9d6d1dec77c81aae2e605a5154b46a141ee 100644 (file)
@@ -137,13 +137,11 @@ static int snd_pmac_awacs_get_volume(struct snd_kcontrol *kcontrol,
        int reg = kcontrol->private_value & 0xff;
        int lshift = (kcontrol->private_value >> 8) & 0xff;
        int inverted = (kcontrol->private_value >> 16) & 1;
-       unsigned long flags;
        int vol[2];
 
-       spin_lock_irqsave(&chip->reg_lock, flags);
+       guard(spinlock_irqsave)(&chip->reg_lock);
        vol[0] = (chip->awacs_reg[reg] >> lshift) & 0xf;
        vol[1] = chip->awacs_reg[reg] & 0xf;
-       spin_unlock_irqrestore(&chip->reg_lock, flags);
        if (inverted) {
                vol[0] = 0x0f - vol[0];
                vol[1] = 0x0f - vol[1];
@@ -161,7 +159,6 @@ static int snd_pmac_awacs_put_volume(struct snd_kcontrol *kcontrol,
        int lshift = (kcontrol->private_value >> 8) & 0xff;
        int inverted = (kcontrol->private_value >> 16) & 1;
        int val, oldval;
-       unsigned long flags;
        unsigned int vol[2];
 
        vol[0] = ucontrol->value.integer.value[0];
@@ -174,14 +171,13 @@ static int snd_pmac_awacs_put_volume(struct snd_kcontrol *kcontrol,
        }
        vol[0] &= 0x0f;
        vol[1] &= 0x0f;
-       spin_lock_irqsave(&chip->reg_lock, flags);
+       guard(spinlock_irqsave)(&chip->reg_lock);
        oldval = chip->awacs_reg[reg];
        val = oldval & ~(0xf | (0xf << lshift));
        val |= vol[0] << lshift;
        val |= vol[1];
        if (oldval != val)
                snd_pmac_awacs_write_reg(chip, reg, val);
-       spin_unlock_irqrestore(&chip->reg_lock, flags);
        return oldval != reg;
 }
 
@@ -204,11 +200,9 @@ static int snd_pmac_awacs_get_switch(struct snd_kcontrol *kcontrol,
        int shift = (kcontrol->private_value >> 8) & 0xff;
        int invert = (kcontrol->private_value >> 16) & 1;
        int val;
-       unsigned long flags;
 
-       spin_lock_irqsave(&chip->reg_lock, flags);
+       guard(spinlock_irqsave)(&chip->reg_lock);
        val = (chip->awacs_reg[reg] >> shift) & 1;
-       spin_unlock_irqrestore(&chip->reg_lock, flags);
        if (invert)
                val = 1 - val;
        ucontrol->value.integer.value[0] = val;
@@ -224,16 +218,14 @@ static int snd_pmac_awacs_put_switch(struct snd_kcontrol *kcontrol,
        int invert = (kcontrol->private_value >> 16) & 1;
        int mask = 1 << shift;
        int val, changed;
-       unsigned long flags;
 
-       spin_lock_irqsave(&chip->reg_lock, flags);
+       guard(spinlock_irqsave)(&chip->reg_lock);
        val = chip->awacs_reg[reg] & ~mask;
        if (ucontrol->value.integer.value[0] != invert)
                val |= mask;
        changed = chip->awacs_reg[reg] != val;
        if (changed)
                snd_pmac_awacs_write_reg(chip, reg, val);
-       spin_unlock_irqrestore(&chip->reg_lock, flags);
        return changed;
 }
 
@@ -541,14 +533,12 @@ static int snd_pmac_screamer_mic_boost_get(struct snd_kcontrol *kcontrol,
 {
        struct snd_pmac *chip = snd_kcontrol_chip(kcontrol);
        int val = 0;
-       unsigned long flags;
 
-       spin_lock_irqsave(&chip->reg_lock, flags);
+       guard(spinlock_irqsave)(&chip->reg_lock);
        if (chip->awacs_reg[6] & MASK_MIC_BOOST)
                val |= 2;
        if (chip->awacs_reg[0] & MASK_GAINLINE)
                val |= 1;
-       spin_unlock_irqrestore(&chip->reg_lock, flags);
        ucontrol->value.integer.value[0] = val;
        return 0;
 }
@@ -559,9 +549,8 @@ static int snd_pmac_screamer_mic_boost_put(struct snd_kcontrol *kcontrol,
        struct snd_pmac *chip = snd_kcontrol_chip(kcontrol);
        int changed = 0;
        int val0, val6;
-       unsigned long flags;
 
-       spin_lock_irqsave(&chip->reg_lock, flags);
+       guard(spinlock_irqsave)(&chip->reg_lock);
        val0 = chip->awacs_reg[0] & ~MASK_GAINLINE;
        val6 = chip->awacs_reg[6] & ~MASK_MIC_BOOST;
        if (ucontrol->value.integer.value[0] & 1)
@@ -576,7 +565,6 @@ static int snd_pmac_screamer_mic_boost_put(struct snd_kcontrol *kcontrol,
                snd_pmac_awacs_write_reg(chip, 6, val6);
                changed = 1;
        }
-       spin_unlock_irqrestore(&chip->reg_lock, flags);
        return changed;
 }
 
index bf289783eafd225a9503a7189256cadefd2c77ad..ab2468790b0c6d45d8f0c79248d7703eac2d0ddf 100644 (file)
@@ -88,7 +88,6 @@ static int snd_pmac_beep_event(struct input_dev *dev, unsigned int type,
 {
        struct snd_pmac *chip;
        struct pmac_beep *beep;
-       unsigned long flags;
        int beep_speed = 0;
        int srate;
        int period, ncycles, nsamples;
@@ -112,10 +111,9 @@ static int snd_pmac_beep_event(struct input_dev *dev, unsigned int type,
                return -1;
 
        if (! hz) {
-               spin_lock_irqsave(&chip->reg_lock, flags);
+               guard(spinlock_irqsave)(&chip->reg_lock);
                if (beep->running)
                        snd_pmac_beep_stop(chip);
-               spin_unlock_irqrestore(&chip->reg_lock, flags);
                return 0;
        }
 
@@ -125,13 +123,11 @@ static int snd_pmac_beep_event(struct input_dev *dev, unsigned int type,
        if (hz <= srate / BEEP_BUFLEN || hz > srate / 2)
                hz = 1000;
 
-       spin_lock_irqsave(&chip->reg_lock, flags);
-       if (chip->playback.running || chip->capture.running || beep->running) {
-               spin_unlock_irqrestore(&chip->reg_lock, flags);
-               return 0;
+       scoped_guard(spinlock_irqsave, &chip->reg_lock) {
+               if (chip->playback.running || chip->capture.running || beep->running)
+                       return 0;
+               beep->running = 1;
        }
-       beep->running = 1;
-       spin_unlock_irqrestore(&chip->reg_lock, flags);
 
        if (hz == beep->hz && beep->volume == beep->volume_play) {
                nsamples = beep->nsamples;
@@ -151,9 +147,8 @@ static int snd_pmac_beep_event(struct input_dev *dev, unsigned int type,
                beep->nsamples = nsamples;
        }
 
-       spin_lock_irqsave(&chip->reg_lock, flags);
+       guard(spinlock_irqsave)(&chip->reg_lock);
        snd_pmac_beep_dma_start(chip, beep->nsamples * 4, beep->addr, beep_speed);
-       spin_unlock_irqrestore(&chip->reg_lock, flags);
        return 0;
 }
 
index ba15bc34c9eca5af940bde89dcc05f874053144e..5d6accce3a72f4585ef5566f67e36fd35edbaaf3 100644 (file)
@@ -59,9 +59,8 @@ static unsigned
 snd_pmac_burgundy_rcw(struct snd_pmac *chip, unsigned addr)
 {
        unsigned val = 0;
-       unsigned long flags;
 
-       spin_lock_irqsave(&chip->reg_lock, flags);
+       guard(spinlock_irqsave)(&chip->reg_lock);
 
        out_le32(&chip->awacs->codec_ctrl, addr + 0x100000);
        snd_pmac_burgundy_busy_wait(chip);
@@ -83,8 +82,6 @@ snd_pmac_burgundy_rcw(struct snd_pmac *chip, unsigned addr)
        snd_pmac_burgundy_extend_wait(chip);
        val += ((in_le32(&chip->awacs->codec_stat)>>4) & 0xff) <<24;
 
-       spin_unlock_irqrestore(&chip->reg_lock, flags);
-
        return val;
 }
 
@@ -100,17 +97,14 @@ static unsigned
 snd_pmac_burgundy_rcb(struct snd_pmac *chip, unsigned int addr)
 {
        unsigned val = 0;
-       unsigned long flags;
 
-       spin_lock_irqsave(&chip->reg_lock, flags);
+       guard(spinlock_irqsave)(&chip->reg_lock);
 
        out_le32(&chip->awacs->codec_ctrl, addr + 0x100000);
        snd_pmac_burgundy_busy_wait(chip);
        snd_pmac_burgundy_extend_wait(chip);
        val += (in_le32(&chip->awacs->codec_stat) >> 4) & 0xff;
 
-       spin_unlock_irqrestore(&chip->reg_lock, flags);
-
        return val;
 }
 
index a3d346f1cc05853dedd61554b33a30b21496ec44..6d7dab26ddf27d1a7070eca5029efbe13f7a61a2 100644 (file)
@@ -206,32 +206,32 @@ static int snd_pmac_pcm_prepare(struct snd_pmac *chip, struct pmac_stream *rec,
         * common to many PowerBook G3 systems and random noise otherwise
         * captured on iBook2's about every third time. -ReneR
         */
-       spin_lock_irq(&chip->reg_lock);
-       snd_pmac_dma_stop(rec);
-       chip->extra_dma.cmds->command = cpu_to_le16(DBDMA_STOP);
-       snd_pmac_dma_set_command(rec, &chip->extra_dma);
-       snd_pmac_dma_run(rec, RUN);
-       spin_unlock_irq(&chip->reg_lock);
-       mdelay(5);
-       spin_lock_irq(&chip->reg_lock);
-       /* continuous DMA memory type doesn't provide the physical address,
-        * so we need to resolve the address here...
-        */
-       offset = runtime->dma_addr;
-       for (i = 0, cp = rec->cmd.cmds; i < rec->nperiods; i++, cp++) {
-               cp->phy_addr = cpu_to_le32(offset);
-               cp->req_count = cpu_to_le16(rec->period_size);
-               /*cp->res_count = cpu_to_le16(0);*/
-               cp->xfer_status = cpu_to_le16(0);
-               offset += rec->period_size;
+       scoped_guard(spinlock_irq, &chip->reg_lock) {
+               snd_pmac_dma_stop(rec);
+               chip->extra_dma.cmds->command = cpu_to_le16(DBDMA_STOP);
+               snd_pmac_dma_set_command(rec, &chip->extra_dma);
+               snd_pmac_dma_run(rec, RUN);
        }
-       /* make loop */
-       cp->command = cpu_to_le16(DBDMA_NOP | BR_ALWAYS);
-       cp->cmd_dep = cpu_to_le32(rec->cmd.addr);
+       mdelay(5);
+       scoped_guard(spinlock_irq, &chip->reg_lock) {
+               /* continuous DMA memory type doesn't provide the physical address,
+                * so we need to resolve the address here...
+                */
+               offset = runtime->dma_addr;
+               for (i = 0, cp = rec->cmd.cmds; i < rec->nperiods; i++, cp++) {
+                       cp->phy_addr = cpu_to_le32(offset);
+                       cp->req_count = cpu_to_le16(rec->period_size);
+                       /*cp->res_count = cpu_to_le16(0);*/
+                       cp->xfer_status = cpu_to_le16(0);
+                       offset += rec->period_size;
+               }
+               /* make loop */
+               cp->command = cpu_to_le16(DBDMA_NOP | BR_ALWAYS);
+               cp->cmd_dep = cpu_to_le32(rec->cmd.addr);
 
-       snd_pmac_dma_stop(rec);
-       snd_pmac_dma_set_command(rec, &rec->cmd);
-       spin_unlock_irq(&chip->reg_lock);
+               snd_pmac_dma_stop(rec);
+               snd_pmac_dma_set_command(rec, &rec->cmd);
+       }
 
        return 0;
 }
@@ -253,26 +253,26 @@ static int snd_pmac_pcm_trigger(struct snd_pmac *chip, struct pmac_stream *rec,
                        return -EBUSY;
                command = (subs->stream == SNDRV_PCM_STREAM_PLAYBACK ?
                           OUTPUT_MORE : INPUT_MORE) + INTR_ALWAYS;
-               spin_lock(&chip->reg_lock);
-               snd_pmac_beep_stop(chip);
-               snd_pmac_pcm_set_format(chip);
-               for (i = 0, cp = rec->cmd.cmds; i < rec->nperiods; i++, cp++)
-                       out_le16(&cp->command, command);
-               snd_pmac_dma_set_command(rec, &rec->cmd);
-               (void)in_le32(&rec->dma->status);
-               snd_pmac_dma_run(rec, RUN|WAKE);
-               rec->running = 1;
-               spin_unlock(&chip->reg_lock);
+               scoped_guard(spinlock, &chip->reg_lock) {
+                       snd_pmac_beep_stop(chip);
+                       snd_pmac_pcm_set_format(chip);
+                       for (i = 0, cp = rec->cmd.cmds; i < rec->nperiods; i++, cp++)
+                               out_le16(&cp->command, command);
+                       snd_pmac_dma_set_command(rec, &rec->cmd);
+                       (void)in_le32(&rec->dma->status);
+                       snd_pmac_dma_run(rec, RUN|WAKE);
+                       rec->running = 1;
+               }
                break;
 
        case SNDRV_PCM_TRIGGER_STOP:
        case SNDRV_PCM_TRIGGER_SUSPEND:
-               spin_lock(&chip->reg_lock);
-               rec->running = 0;
-               snd_pmac_dma_stop(rec);
-               for (i = 0, cp = rec->cmd.cmds; i < rec->nperiods; i++, cp++)
-                       out_le16(&cp->command, DBDMA_STOP);
-               spin_unlock(&chip->reg_lock);
+               scoped_guard(spinlock, &chip->reg_lock) {
+                       rec->running = 0;
+                       snd_pmac_dma_stop(rec);
+                       for (i = 0, cp = rec->cmd.cmds; i < rec->nperiods; i++, cp++)
+                               out_le16(&cp->command, DBDMA_STOP);
+               }
                break;
 
        default:
@@ -1321,14 +1321,12 @@ int snd_pmac_new(struct snd_card *card, struct snd_pmac **chip_return)
 
 void snd_pmac_suspend(struct snd_pmac *chip)
 {
-       unsigned long flags;
-
        snd_power_change_state(chip->card, SNDRV_CTL_POWER_D3hot);
        if (chip->suspend)
                chip->suspend(chip);
-       spin_lock_irqsave(&chip->reg_lock, flags);
-       snd_pmac_beep_stop(chip);
-       spin_unlock_irqrestore(&chip->reg_lock, flags);
+       scoped_guard(spinlock_irqsave, &chip->reg_lock) {
+               snd_pmac_beep_stop(chip);
+       }
        if (chip->irq >= 0)
                disable_irq(chip->irq);
        if (chip->tx_irq >= 0)