ALSA: mtpav: 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>
Link: https://patch.msgid.link/20250829150026.6379-11-tiwai@suse.de
This commit is contained in:
Takashi Iwai 2025-08-29 17:00:21 +02:00
parent 55c52cd311
commit 316e0074ec

View File

@ -304,11 +304,9 @@ static void snd_mtpav_output_write(struct snd_rawmidi_substream *substream)
{ {
struct mtpav *mtp_card = substream->rmidi->private_data; struct mtpav *mtp_card = substream->rmidi->private_data;
struct mtpav_port *portp = &mtp_card->ports[substream->number]; struct mtpav_port *portp = &mtp_card->ports[substream->number];
unsigned long flags;
spin_lock_irqsave(&mtp_card->spinlock, flags); guard(spinlock_irqsave)(&mtp_card->spinlock);
snd_mtpav_output_port_write(mtp_card, portp, substream); snd_mtpav_output_port_write(mtp_card, portp, substream);
spin_unlock_irqrestore(&mtp_card->spinlock, flags);
} }
@ -334,14 +332,12 @@ static int snd_mtpav_input_open(struct snd_rawmidi_substream *substream)
{ {
struct mtpav *mtp_card = substream->rmidi->private_data; struct mtpav *mtp_card = substream->rmidi->private_data;
struct mtpav_port *portp = &mtp_card->ports[substream->number]; struct mtpav_port *portp = &mtp_card->ports[substream->number];
unsigned long flags;
spin_lock_irqsave(&mtp_card->spinlock, flags); guard(spinlock_irqsave)(&mtp_card->spinlock);
portp->mode |= MTPAV_MODE_INPUT_OPENED; portp->mode |= MTPAV_MODE_INPUT_OPENED;
portp->input = substream; portp->input = substream;
if (mtp_card->share_irq++ == 0) if (mtp_card->share_irq++ == 0)
snd_mtpav_mputreg(mtp_card, CREG, (SIGC_INTEN | SIGC_WRITE)); // enable pport interrupts snd_mtpav_mputreg(mtp_card, CREG, (SIGC_INTEN | SIGC_WRITE)); // enable pport interrupts
spin_unlock_irqrestore(&mtp_card->spinlock, flags);
return 0; return 0;
} }
@ -352,14 +348,12 @@ static int snd_mtpav_input_close(struct snd_rawmidi_substream *substream)
{ {
struct mtpav *mtp_card = substream->rmidi->private_data; struct mtpav *mtp_card = substream->rmidi->private_data;
struct mtpav_port *portp = &mtp_card->ports[substream->number]; struct mtpav_port *portp = &mtp_card->ports[substream->number];
unsigned long flags;
spin_lock_irqsave(&mtp_card->spinlock, flags); guard(spinlock_irqsave)(&mtp_card->spinlock);
portp->mode &= ~MTPAV_MODE_INPUT_OPENED; portp->mode &= ~MTPAV_MODE_INPUT_OPENED;
portp->input = NULL; portp->input = NULL;
if (--mtp_card->share_irq == 0) if (--mtp_card->share_irq == 0)
snd_mtpav_mputreg(mtp_card, CREG, 0); // disable pport interrupts snd_mtpav_mputreg(mtp_card, CREG, 0); // disable pport interrupts
spin_unlock_irqrestore(&mtp_card->spinlock, flags);
return 0; return 0;
} }
@ -370,15 +364,12 @@ static void snd_mtpav_input_trigger(struct snd_rawmidi_substream *substream, int
{ {
struct mtpav *mtp_card = substream->rmidi->private_data; struct mtpav *mtp_card = substream->rmidi->private_data;
struct mtpav_port *portp = &mtp_card->ports[substream->number]; struct mtpav_port *portp = &mtp_card->ports[substream->number];
unsigned long flags;
spin_lock_irqsave(&mtp_card->spinlock, flags); guard(spinlock_irqsave)(&mtp_card->spinlock);
if (up) if (up)
portp->mode |= MTPAV_MODE_INPUT_TRIGGERED; portp->mode |= MTPAV_MODE_INPUT_TRIGGERED;
else else
portp->mode &= ~MTPAV_MODE_INPUT_TRIGGERED; portp->mode &= ~MTPAV_MODE_INPUT_TRIGGERED;
spin_unlock_irqrestore(&mtp_card->spinlock, flags);
} }
@ -388,11 +379,10 @@ static void snd_mtpav_input_trigger(struct snd_rawmidi_substream *substream, int
static void snd_mtpav_output_timer(struct timer_list *t) static void snd_mtpav_output_timer(struct timer_list *t)
{ {
unsigned long flags;
struct mtpav *chip = timer_container_of(chip, t, timer); struct mtpav *chip = timer_container_of(chip, t, timer);
int p; int p;
spin_lock_irqsave(&chip->spinlock, flags); guard(spinlock_irqsave)(&chip->spinlock);
/* reprogram timer */ /* reprogram timer */
mod_timer(&chip->timer, 1 + jiffies); mod_timer(&chip->timer, 1 + jiffies);
/* process each port */ /* process each port */
@ -401,7 +391,6 @@ static void snd_mtpav_output_timer(struct timer_list *t)
if ((portp->mode & MTPAV_MODE_OUTPUT_TRIGGERED) && portp->output) if ((portp->mode & MTPAV_MODE_OUTPUT_TRIGGERED) && portp->output)
snd_mtpav_output_port_write(chip, portp, portp->output); snd_mtpav_output_port_write(chip, portp, portp->output);
} }
spin_unlock_irqrestore(&chip->spinlock, flags);
} }
/* spinlock held! */ /* spinlock held! */
@ -423,12 +412,10 @@ static int snd_mtpav_output_open(struct snd_rawmidi_substream *substream)
{ {
struct mtpav *mtp_card = substream->rmidi->private_data; struct mtpav *mtp_card = substream->rmidi->private_data;
struct mtpav_port *portp = &mtp_card->ports[substream->number]; struct mtpav_port *portp = &mtp_card->ports[substream->number];
unsigned long flags;
spin_lock_irqsave(&mtp_card->spinlock, flags); guard(spinlock_irqsave)(&mtp_card->spinlock);
portp->mode |= MTPAV_MODE_OUTPUT_OPENED; portp->mode |= MTPAV_MODE_OUTPUT_OPENED;
portp->output = substream; portp->output = substream;
spin_unlock_irqrestore(&mtp_card->spinlock, flags);
return 0; return 0;
}; };
@ -439,12 +426,10 @@ static int snd_mtpav_output_close(struct snd_rawmidi_substream *substream)
{ {
struct mtpav *mtp_card = substream->rmidi->private_data; struct mtpav *mtp_card = substream->rmidi->private_data;
struct mtpav_port *portp = &mtp_card->ports[substream->number]; struct mtpav_port *portp = &mtp_card->ports[substream->number];
unsigned long flags;
spin_lock_irqsave(&mtp_card->spinlock, flags); guard(spinlock_irqsave)(&mtp_card->spinlock);
portp->mode &= ~MTPAV_MODE_OUTPUT_OPENED; portp->mode &= ~MTPAV_MODE_OUTPUT_OPENED;
portp->output = NULL; portp->output = NULL;
spin_unlock_irqrestore(&mtp_card->spinlock, flags);
return 0; return 0;
}; };
@ -455,21 +440,20 @@ static void snd_mtpav_output_trigger(struct snd_rawmidi_substream *substream, in
{ {
struct mtpav *mtp_card = substream->rmidi->private_data; struct mtpav *mtp_card = substream->rmidi->private_data;
struct mtpav_port *portp = &mtp_card->ports[substream->number]; struct mtpav_port *portp = &mtp_card->ports[substream->number];
unsigned long flags;
spin_lock_irqsave(&mtp_card->spinlock, flags); scoped_guard(spinlock_irqsave, &mtp_card->spinlock) {
if (up) { if (up) {
if (! (portp->mode & MTPAV_MODE_OUTPUT_TRIGGERED)) { if ((portp->mode & MTPAV_MODE_OUTPUT_TRIGGERED)) {
if (mtp_card->istimer++ == 0) if (mtp_card->istimer++ == 0)
snd_mtpav_add_output_timer(mtp_card); snd_mtpav_add_output_timer(mtp_card);
portp->mode |= MTPAV_MODE_OUTPUT_TRIGGERED; portp->mode |= MTPAV_MODE_OUTPUT_TRIGGERED;
}
} else {
portp->mode &= ~MTPAV_MODE_OUTPUT_TRIGGERED;
if (--mtp_card->istimer == 0)
snd_mtpav_remove_output_timer(mtp_card);
} }
} else {
portp->mode &= ~MTPAV_MODE_OUTPUT_TRIGGERED;
if (--mtp_card->istimer == 0)
snd_mtpav_remove_output_timer(mtp_card);
} }
spin_unlock_irqrestore(&mtp_card->spinlock, flags);
if (up) if (up)
snd_mtpav_output_write(substream); snd_mtpav_output_write(substream);
@ -550,9 +534,8 @@ static irqreturn_t snd_mtpav_irqh(int irq, void *dev_id)
{ {
struct mtpav *mcard = dev_id; struct mtpav *mcard = dev_id;
spin_lock(&mcard->spinlock); guard(spinlock)(&mcard->spinlock);
snd_mtpav_read_bytes(mcard); snd_mtpav_read_bytes(mcard);
spin_unlock(&mcard->spinlock);
return IRQ_HANDLED; return IRQ_HANDLED;
} }
@ -658,12 +641,10 @@ static int snd_mtpav_get_RAWMIDI(struct mtpav *mcard)
static void snd_mtpav_free(struct snd_card *card) static void snd_mtpav_free(struct snd_card *card)
{ {
struct mtpav *crd = card->private_data; struct mtpav *crd = card->private_data;
unsigned long flags;
spin_lock_irqsave(&crd->spinlock, flags); guard(spinlock_irqsave)(&crd->spinlock);
if (crd->istimer > 0) if (crd->istimer > 0)
snd_mtpav_remove_output_timer(crd); snd_mtpav_remove_output_timer(crd);
spin_unlock_irqrestore(&crd->spinlock, flags);
} }
/* /*