diff -ur /home/nemesis/src/linux/aureal/alsa/alsa-driver-0.9.4/sound/pci/ac97/ac97_codec.c sound/pci/ac97/ac97_codec.c --- /home/nemesis/src/linux/aureal/alsa/alsa-driver-0.9.4/sound/pci/ac97/ac97_codec.c 2003-05-31 09:15:01.000000000 -0500 +++ sound/pci/ac97/ac97_codec.c 2003-06-15 06:42:33.000000000 -0500 @@ -743,6 +743,12 @@ AC97_DOUBLE("Sigmatel Surround Playback Volume", AC97_HEADPHONE, 8, 0, 31, 1) }; +static const snd_kcontrol_new_t snd_ac97_sigmatel_4speaker = +AC97_SINGLE("Sigmatel 4-Speaker Stereo Playback Switch", AC97_SIGMATEL_DAC2INVERT, 2, 1, 0); + +static const snd_kcontrol_new_t snd_ac97_sigmatel_phaseinvert = +AC97_SINGLE("Sigmatel Surround Phase Inversion Playback Switch", AC97_SIGMATEL_DAC2INVERT, 3, 1, 0); + static const snd_kcontrol_new_t snd_ac97_sigmatel_controls[] = { AC97_SINGLE("Sigmatel DAC 6dB Attenuate", AC97_SIGMATEL_ANALOG, 1, 1, 0), AC97_SINGLE("Sigmatel ADC 6dB Attenuate", AC97_SIGMATEL_ANALOG, 0, 1, 0) @@ -1872,6 +1878,12 @@ if (snd_ac97_try_bit(ac97, AC97_SIGMATEL_ANALOG, 0)) if ((err = snd_ctl_add(card, snd_ac97_cnew(&snd_ac97_sigmatel_controls[1], ac97))) < 0) return err; + if (snd_ac97_try_bit(ac97, AC97_SIGMATEL_DAC2INVERT, 2)) + if ((err = snd_ctl_add(card, snd_ac97_cnew(&snd_ac97_sigmatel_4speaker, ac97))) < 0) + return err; + if (snd_ac97_try_bit(ac97, AC97_SIGMATEL_DAC2INVERT, 3)) + if ((err = snd_ctl_add(card, snd_ac97_cnew(&snd_ac97_sigmatel_phaseinvert, ac97))) < 0) + return err; break; case AC97_ID_ALC650: /* detect ALC650 rev.E of later */