|
@@ -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);
|