ALSA: emu10k1: fix return value of snd_emu1010_dac_pads_put()
authorOswald Buddenhagen <oswald.buddenhagen@gmx.de>
Tue, 16 May 2023 09:36:07 +0000 (11:36 +0200)
committerTakashi Iwai <tiwai@suse.de>
Wed, 17 May 2023 15:07:55 +0000 (17:07 +0200)
It returned zero even if the value had changed.

Signed-off-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Link: https://lore.kernel.org/r/20230516093612.3536508-6-oswald.buddenhagen@gmx.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/emu10k1/emumixer.c

index c5ebec5..ef05d4f 100644 (file)
@@ -559,18 +559,21 @@ static int snd_emu1010_dac_pads_put(struct snd_kcontrol *kcontrol, struct snd_ct
        struct snd_emu10k1 *emu = snd_kcontrol_chip(kcontrol);
        unsigned int mask = snd_emu1010_dac_regs[kcontrol->private_value];
        unsigned int val, cache;
+       int change;
+
        val = ucontrol->value.integer.value[0];
        cache = emu->emu1010.dac_pads;
        if (val == 1) 
                cache = cache | mask;
        else
                cache = cache & ~mask;
-       if (cache != emu->emu1010.dac_pads) {
+       change = (cache != emu->emu1010.dac_pads);
+       if (change) {
                snd_emu1010_fpga_write(emu, EMU_HANA_DAC_PADS, cache );
                emu->emu1010.dac_pads = cache;
        }
 
-       return 0;
+       return change;
 }
 
 static const struct snd_kcontrol_new emu1010_dac_pads_ctl = {