ALSA: oxygen: use SPDIF channel status symbols
[safe/jmp/linux-2.6] / sound / pci / oxygen / oxygen_mixer.c
index 6facac5..99c422c 100644 (file)
@@ -211,13 +211,13 @@ static unsigned int oxygen_spdif_rate(unsigned int oxygen_rate)
        case OXYGEN_RATE_64000:
                return 0xb << OXYGEN_SPDIF_CS_RATE_SHIFT;
        case OXYGEN_RATE_88200:
-               return 0x8 << OXYGEN_SPDIF_CS_RATE_SHIFT;
+               return IEC958_AES3_CON_FS_88200 << OXYGEN_SPDIF_CS_RATE_SHIFT;
        case OXYGEN_RATE_96000:
-               return 0xa << OXYGEN_SPDIF_CS_RATE_SHIFT;
+               return IEC958_AES3_CON_FS_96000 << OXYGEN_SPDIF_CS_RATE_SHIFT;
        case OXYGEN_RATE_176400:
-               return 0xc << OXYGEN_SPDIF_CS_RATE_SHIFT;
+               return IEC958_AES3_CON_FS_176400 << OXYGEN_SPDIF_CS_RATE_SHIFT;
        case OXYGEN_RATE_192000:
-               return 0xe << OXYGEN_SPDIF_CS_RATE_SHIFT;
+               return IEC958_AES3_CON_FS_192000 << OXYGEN_SPDIF_CS_RATE_SHIFT;
        }
 }
 
@@ -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);