aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorJames C Georgas <jgeorgas@rogers.com>2006-12-19 05:09:41 -0500
committerJaroslav Kysela <perex@suse.cz>2007-02-09 03:02:38 -0500
commite4c3bf0f65ec9da8b067a722f734d1012ef12ceb (patch)
tree1311c49b2c62b14a7cc9a05befb756be0b81d3d1 /sound
parentca40587087fc05c670f4f2650cc466d557377f6d (diff)
[ALSA] Remove AC97 POP control for STAC9708/11
The STAC9708/11 AC97 codecs implement the PCM Out Path & Mute bit in the General Purpose register (0x20:F), even though they don't implement the actual function in the mixer. Since the alsa tests for the function by toggling the bit and reading it back to see if it changed, it mistakenly creates a useless control. This patch explicitly removes the control when the codec is an STAC9708/11. I put the check in patch_sigmatel_stac9708_specific(), because I have an SBLive with this chip on it. I don't know if the STAC9758 or other codecs also behave this way. If they do, then this check could maybe go in patch_sigmatel_stac97xx_specific(), or some other more general function. Signed-off-by: James C Georgas <jgeorgas@rogers.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@suse.cz>
Diffstat (limited to 'sound')
-rw-r--r--sound/pci/ac97/ac97_patch.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sound/pci/ac97/ac97_patch.c b/sound/pci/ac97/ac97_patch.c
index 123de550d1f4..818a77d2deff 100644
--- a/sound/pci/ac97/ac97_patch.c
+++ b/sound/pci/ac97/ac97_patch.c
@@ -941,6 +941,9 @@ static int patch_sigmatel_stac9708_specific(struct snd_ac97 *ac97)
941{ 941{
942 int err; 942 int err;
943 943
944 /* the register bit is writable, but the function is not implemented: */
945 snd_ac97_remove_ctl(ac97, "PCM Out Path & Mute", NULL);
946
944 snd_ac97_rename_vol_ctl(ac97, "Headphone Playback", "Sigmatel Surround Playback"); 947 snd_ac97_rename_vol_ctl(ac97, "Headphone Playback", "Sigmatel Surround Playback");
945 if ((err = patch_build_controls(ac97, &snd_ac97_stac9708_bias_control, 1)) < 0) 948 if ((err = patch_build_controls(ac97, &snd_ac97_stac9708_bias_control, 1)) < 0)
946 return err; 949 return err;