mirror of https://github.com/torvalds/linux.git
ALSA: opl3sa2: 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-11-tiwai@suse.de
This commit is contained in:
parent
6aaf6dadd9
commit
1e012ff2fb
|
|
@ -172,13 +172,8 @@ static unsigned char __snd_opl3sa2_read(struct snd_opl3sa2 *chip, unsigned char
|
|||
/* read control port (with spinlock) */
|
||||
static unsigned char snd_opl3sa2_read(struct snd_opl3sa2 *chip, unsigned char reg)
|
||||
{
|
||||
unsigned long flags;
|
||||
unsigned char result;
|
||||
|
||||
spin_lock_irqsave(&chip->reg_lock, flags);
|
||||
result = __snd_opl3sa2_read(chip, reg);
|
||||
spin_unlock_irqrestore(&chip->reg_lock, flags);
|
||||
return result;
|
||||
guard(spinlock_irqsave)(&chip->reg_lock);
|
||||
return __snd_opl3sa2_read(chip, reg);
|
||||
}
|
||||
|
||||
/* write control port (w/o spinlock) */
|
||||
|
|
@ -195,10 +190,8 @@ static void __snd_opl3sa2_write(struct snd_opl3sa2 *chip, unsigned char reg, uns
|
|||
/* write control port (with spinlock) */
|
||||
static void snd_opl3sa2_write(struct snd_opl3sa2 *chip, unsigned char reg, unsigned char value)
|
||||
{
|
||||
unsigned long flags;
|
||||
spin_lock_irqsave(&chip->reg_lock, flags);
|
||||
guard(spinlock_irqsave)(&chip->reg_lock);
|
||||
__snd_opl3sa2_write(chip, reg, value);
|
||||
spin_unlock_irqrestore(&chip->reg_lock, flags);
|
||||
}
|
||||
|
||||
static int snd_opl3sa2_detect(struct snd_card *card)
|
||||
|
|
@ -336,15 +329,13 @@ static irqreturn_t snd_opl3sa2_interrupt(int irq, void *dev_id)
|
|||
static int snd_opl3sa2_get_single(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol)
|
||||
{
|
||||
struct snd_opl3sa2 *chip = snd_kcontrol_chip(kcontrol);
|
||||
unsigned long flags;
|
||||
int reg = kcontrol->private_value & 0xff;
|
||||
int shift = (kcontrol->private_value >> 8) & 0xff;
|
||||
int mask = (kcontrol->private_value >> 16) & 0xff;
|
||||
int invert = (kcontrol->private_value >> 24) & 0xff;
|
||||
|
||||
spin_lock_irqsave(&chip->reg_lock, flags);
|
||||
guard(spinlock_irqsave)(&chip->reg_lock);
|
||||
ucontrol->value.integer.value[0] = (chip->ctlregs[reg] >> shift) & mask;
|
||||
spin_unlock_irqrestore(&chip->reg_lock, flags);
|
||||
if (invert)
|
||||
ucontrol->value.integer.value[0] = mask - ucontrol->value.integer.value[0];
|
||||
return 0;
|
||||
|
|
@ -353,7 +344,6 @@ static int snd_opl3sa2_get_single(struct snd_kcontrol *kcontrol, struct snd_ctl_
|
|||
static int snd_opl3sa2_put_single(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol)
|
||||
{
|
||||
struct snd_opl3sa2 *chip = snd_kcontrol_chip(kcontrol);
|
||||
unsigned long flags;
|
||||
int reg = kcontrol->private_value & 0xff;
|
||||
int shift = (kcontrol->private_value >> 8) & 0xff;
|
||||
int mask = (kcontrol->private_value >> 16) & 0xff;
|
||||
|
|
@ -365,12 +355,11 @@ static int snd_opl3sa2_put_single(struct snd_kcontrol *kcontrol, struct snd_ctl_
|
|||
if (invert)
|
||||
val = mask - val;
|
||||
val <<= shift;
|
||||
spin_lock_irqsave(&chip->reg_lock, flags);
|
||||
guard(spinlock_irqsave)(&chip->reg_lock);
|
||||
oval = chip->ctlregs[reg];
|
||||
val = (oval & ~(mask << shift)) | val;
|
||||
change = val != oval;
|
||||
__snd_opl3sa2_write(chip, reg, val);
|
||||
spin_unlock_irqrestore(&chip->reg_lock, flags);
|
||||
return change;
|
||||
}
|
||||
|
||||
|
|
@ -391,7 +380,6 @@ static int snd_opl3sa2_put_single(struct snd_kcontrol *kcontrol, struct snd_ctl_
|
|||
static int snd_opl3sa2_get_double(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol)
|
||||
{
|
||||
struct snd_opl3sa2 *chip = snd_kcontrol_chip(kcontrol);
|
||||
unsigned long flags;
|
||||
int left_reg = kcontrol->private_value & 0xff;
|
||||
int right_reg = (kcontrol->private_value >> 8) & 0xff;
|
||||
int shift_left = (kcontrol->private_value >> 16) & 0x07;
|
||||
|
|
@ -399,10 +387,9 @@ static int snd_opl3sa2_get_double(struct snd_kcontrol *kcontrol, struct snd_ctl_
|
|||
int mask = (kcontrol->private_value >> 24) & 0xff;
|
||||
int invert = (kcontrol->private_value >> 22) & 1;
|
||||
|
||||
spin_lock_irqsave(&chip->reg_lock, flags);
|
||||
guard(spinlock_irqsave)(&chip->reg_lock);
|
||||
ucontrol->value.integer.value[0] = (chip->ctlregs[left_reg] >> shift_left) & mask;
|
||||
ucontrol->value.integer.value[1] = (chip->ctlregs[right_reg] >> shift_right) & mask;
|
||||
spin_unlock_irqrestore(&chip->reg_lock, flags);
|
||||
if (invert) {
|
||||
ucontrol->value.integer.value[0] = mask - ucontrol->value.integer.value[0];
|
||||
ucontrol->value.integer.value[1] = mask - ucontrol->value.integer.value[1];
|
||||
|
|
@ -413,7 +400,6 @@ static int snd_opl3sa2_get_double(struct snd_kcontrol *kcontrol, struct snd_ctl_
|
|||
static int snd_opl3sa2_put_double(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol)
|
||||
{
|
||||
struct snd_opl3sa2 *chip = snd_kcontrol_chip(kcontrol);
|
||||
unsigned long flags;
|
||||
int left_reg = kcontrol->private_value & 0xff;
|
||||
int right_reg = (kcontrol->private_value >> 8) & 0xff;
|
||||
int shift_left = (kcontrol->private_value >> 16) & 0x07;
|
||||
|
|
@ -431,7 +417,7 @@ static int snd_opl3sa2_put_double(struct snd_kcontrol *kcontrol, struct snd_ctl_
|
|||
}
|
||||
val1 <<= shift_left;
|
||||
val2 <<= shift_right;
|
||||
spin_lock_irqsave(&chip->reg_lock, flags);
|
||||
guard(spinlock_irqsave)(&chip->reg_lock);
|
||||
if (left_reg != right_reg) {
|
||||
oval1 = chip->ctlregs[left_reg];
|
||||
oval2 = chip->ctlregs[right_reg];
|
||||
|
|
@ -446,7 +432,6 @@ static int snd_opl3sa2_put_double(struct snd_kcontrol *kcontrol, struct snd_ctl_
|
|||
change = val1 != oval1;
|
||||
__snd_opl3sa2_write(chip, left_reg, val1);
|
||||
}
|
||||
spin_unlock_irqrestore(&chip->reg_lock, flags);
|
||||
return change;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue