mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-27 10:01:39 -05:00
ALSA: msnd: 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/20250829145300.5460-10-tiwai@suse.de
This commit is contained in:
@@ -76,15 +76,11 @@ static int snd_msnd_wait_HC0(struct snd_msnd *dev)
|
||||
|
||||
int snd_msnd_send_dsp_cmd(struct snd_msnd *dev, u8 cmd)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&dev->lock, flags);
|
||||
guard(spinlock_irqsave)(&dev->lock);
|
||||
if (snd_msnd_wait_HC0(dev) == 0) {
|
||||
outb(cmd, dev->io + HP_CVR);
|
||||
spin_unlock_irqrestore(&dev->lock, flags);
|
||||
return 0;
|
||||
}
|
||||
spin_unlock_irqrestore(&dev->lock, flags);
|
||||
|
||||
dev_dbg(dev->card->dev, LOGNAME ": Send DSP command timeout\n");
|
||||
|
||||
@@ -133,14 +129,12 @@ EXPORT_SYMBOL(snd_msnd_upload_host);
|
||||
|
||||
int snd_msnd_enable_irq(struct snd_msnd *dev)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
if (dev->irq_ref++)
|
||||
return 0;
|
||||
|
||||
dev_dbg(dev->card->dev, LOGNAME ": Enabling IRQ\n");
|
||||
|
||||
spin_lock_irqsave(&dev->lock, flags);
|
||||
guard(spinlock_irqsave)(&dev->lock);
|
||||
if (snd_msnd_wait_TXDE(dev) == 0) {
|
||||
outb(inb(dev->io + HP_ICR) | HPICR_TREQ, dev->io + HP_ICR);
|
||||
if (dev->type == msndClassic)
|
||||
@@ -151,10 +145,8 @@ int snd_msnd_enable_irq(struct snd_msnd *dev)
|
||||
enable_irq(dev->irq);
|
||||
snd_msnd_init_queue(dev->DSPQ, dev->dspq_data_buff,
|
||||
dev->dspq_buff_size);
|
||||
spin_unlock_irqrestore(&dev->lock, flags);
|
||||
return 0;
|
||||
}
|
||||
spin_unlock_irqrestore(&dev->lock, flags);
|
||||
|
||||
dev_dbg(dev->card->dev, LOGNAME ": Enable IRQ failed\n");
|
||||
|
||||
@@ -164,8 +156,6 @@ EXPORT_SYMBOL(snd_msnd_enable_irq);
|
||||
|
||||
int snd_msnd_disable_irq(struct snd_msnd *dev)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
if (--dev->irq_ref > 0)
|
||||
return 0;
|
||||
|
||||
@@ -175,16 +165,14 @@ int snd_msnd_disable_irq(struct snd_msnd *dev)
|
||||
|
||||
dev_dbg(dev->card->dev, LOGNAME ": Disabling IRQ\n");
|
||||
|
||||
spin_lock_irqsave(&dev->lock, flags);
|
||||
guard(spinlock_irqsave)(&dev->lock);
|
||||
if (snd_msnd_wait_TXDE(dev) == 0) {
|
||||
outb(inb(dev->io + HP_ICR) & ~HPICR_RREQ, dev->io + HP_ICR);
|
||||
if (dev->type == msndClassic)
|
||||
outb(HPIRQ_NONE, dev->io + HP_IRQM);
|
||||
disable_irq(dev->irq);
|
||||
spin_unlock_irqrestore(&dev->lock, flags);
|
||||
return 0;
|
||||
}
|
||||
spin_unlock_irqrestore(&dev->lock, flags);
|
||||
|
||||
dev_dbg(dev->card->dev, LOGNAME ": Disable IRQ failed\n");
|
||||
|
||||
@@ -376,7 +364,6 @@ static void snd_msnd_capture_reset_queue(struct snd_msnd *chip,
|
||||
{
|
||||
int n;
|
||||
void __iomem *pDAQ;
|
||||
/* unsigned long flags; */
|
||||
|
||||
/* snd_msnd_init_queue(chip->DARQ, DARQ_DATA_BUFF, DARQ_BUFF_SIZE); */
|
||||
|
||||
@@ -388,11 +375,11 @@ static void snd_msnd_capture_reset_queue(struct snd_msnd *chip,
|
||||
chip->DARQ + JQS_wTail);
|
||||
|
||||
#if 0 /* Critical section: bank 1 access. this is how the OSS driver does it:*/
|
||||
spin_lock_irqsave(&chip->lock, flags);
|
||||
outb(HPBLKSEL_1, chip->io + HP_BLKS);
|
||||
memset_io(chip->mappedbase, 0, DAR_BUFF_SIZE * 3);
|
||||
outb(HPBLKSEL_0, chip->io + HP_BLKS);
|
||||
spin_unlock_irqrestore(&chip->lock, flags);
|
||||
scoped_guard(spinlock_irqsave, &chip->lock) {
|
||||
outb(HPBLKSEL_1, chip->io + HP_BLKS);
|
||||
memset_io(chip->mappedbase, 0, DAR_BUFF_SIZE * 3);
|
||||
outb(HPBLKSEL_0, chip->io + HP_BLKS);
|
||||
}
|
||||
#endif
|
||||
|
||||
chip->capturePeriodBytes = pcm_count;
|
||||
|
||||
@@ -300,7 +300,6 @@ static int snd_msnd_init_sma(struct snd_msnd *chip)
|
||||
{
|
||||
static int initted;
|
||||
u16 mastVolLeft, mastVolRight;
|
||||
unsigned long flags;
|
||||
|
||||
#ifdef MSND_CLASSIC
|
||||
outb(chip->memid, chip->io + HP_MEMM);
|
||||
@@ -317,11 +316,11 @@ static int snd_msnd_init_sma(struct snd_msnd *chip)
|
||||
memset_io(chip->mappedbase, 0, 0x8000);
|
||||
|
||||
/* Critical section: bank 1 access */
|
||||
spin_lock_irqsave(&chip->lock, flags);
|
||||
outb(HPBLKSEL_1, chip->io + HP_BLKS);
|
||||
memset_io(chip->mappedbase, 0, 0x8000);
|
||||
outb(HPBLKSEL_0, chip->io + HP_BLKS);
|
||||
spin_unlock_irqrestore(&chip->lock, flags);
|
||||
scoped_guard(spinlock_irqsave, &chip->lock) {
|
||||
outb(HPBLKSEL_1, chip->io + HP_BLKS);
|
||||
memset_io(chip->mappedbase, 0, 0x8000);
|
||||
outb(HPBLKSEL_0, chip->io + HP_BLKS);
|
||||
}
|
||||
|
||||
/* Digital audio play queue */
|
||||
chip->DAPQ = chip->mappedbase + DAPQ_OFFSET;
|
||||
|
||||
@@ -136,14 +136,12 @@ static int snd_msndmix_volume_get(struct snd_kcontrol *kcontrol,
|
||||
{
|
||||
struct snd_msnd *msnd = snd_kcontrol_chip(kcontrol);
|
||||
int addr = kcontrol->private_value;
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&msnd->mixer_lock, flags);
|
||||
guard(spinlock_irqsave)(&msnd->mixer_lock);
|
||||
ucontrol->value.integer.value[0] = msnd->left_levels[addr] * 100;
|
||||
ucontrol->value.integer.value[0] /= 0xFFFF;
|
||||
ucontrol->value.integer.value[1] = msnd->right_levels[addr] * 100;
|
||||
ucontrol->value.integer.value[1] /= 0xFFFF;
|
||||
spin_unlock_irqrestore(&msnd->mixer_lock, flags);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -253,15 +251,13 @@ static int snd_msndmix_volume_put(struct snd_kcontrol *kcontrol,
|
||||
struct snd_msnd *msnd = snd_kcontrol_chip(kcontrol);
|
||||
int change, addr = kcontrol->private_value;
|
||||
int left, right;
|
||||
unsigned long flags;
|
||||
|
||||
left = ucontrol->value.integer.value[0] % 101;
|
||||
right = ucontrol->value.integer.value[1] % 101;
|
||||
spin_lock_irqsave(&msnd->mixer_lock, flags);
|
||||
guard(spinlock_irqsave)(&msnd->mixer_lock);
|
||||
change = msnd->left_levels[addr] != left
|
||||
|| msnd->right_levels[addr] != right;
|
||||
snd_msndmix_set(msnd, addr, left, right);
|
||||
spin_unlock_irqrestore(&msnd->mixer_lock, flags);
|
||||
return change;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user