]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ALSA: oxygen: prevent muting of nonexistent AC97 controls
authorClemens Ladisch <clemens@ladisch.de>
Tue, 26 Aug 2008 18:05:03 +0000 (18:05 +0000)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 8 Sep 2008 11:44:18 +0000 (04:44 -0700)
commit 3d839e5b87a70effc629c1cdbf77d837ef141919 upstream

Date: Tue, 26 Aug 2008 11:06:26 +0200
Subject: ALSA: oxygen: prevent muting of nonexistent AC97 controls

The Xonar DX does not have CD Capture controls, so we have to check that
a control actually exists before muting it.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
sound/pci/oxygen/oxygen_mixer.c

index 6facac5aed90b3cddcb26bdf444098d84b5e09ad..05eb8994c141a899966a5f9ce791b1fa0ef28343 100644 (file)
@@ -512,9 +512,12 @@ static int ac97_switch_get(struct snd_kcontrol *ctl,
 
 static void mute_ac97_ctl(struct oxygen *chip, unsigned int control)
 {
-       unsigned int priv_idx = chip->controls[control]->private_value & 0xff;
+       unsigned int priv_idx;
        u16 value;
 
+       if (!chip->controls[control])
+               return;
+       priv_idx = chip->controls[control]->private_value & 0xff;
        value = oxygen_read_ac97(chip, 0, priv_idx);
        if (!(value & 0x8000)) {
                oxygen_write_ac97(chip, 0, priv_idx, value | 0x8000);