|
@@ -2198,7 +2198,8 @@ static int _snd_cmipci_uswitch_put(struct snd_kcontrol *kcontrol,
|
|
|
val = inb(cm->iobase + args->reg);
|
|
|
else
|
|
|
val = snd_cmipci_read(cm, args->reg);
|
|
|
- change = (val & args->mask) != (ucontrol->value.integer.value[0] ? args->mask : 0);
|
|
|
+ change = (val & args->mask) != (ucontrol->value.integer.value[0] ?
|
|
|
+ args->mask_on : (args->mask & ~args->mask_on));
|
|
|
if (change) {
|
|
|
val &= ~args->mask;
|
|
|
if (ucontrol->value.integer.value[0])
|