diff options
author | Jaroslav Kysela <perex@suse.cz> | 2005-01-03 13:23:45 +0100 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2005-01-03 13:23:45 +0100 |
commit | a7c9c7df629770398132179f1fb1775ec771df1b (patch) | |
tree | 084dcf81d232d5421eba7994e2320926f0eecf30 /sound | |
parent | 4280f79887646a31fc15d7b01b4e6a09ef09bc19 (diff) | |
download | history-a7c9c7df629770398132179f1fb1775ec771df1b.tar.gz |
[ALSA] Fix CMI9739A silent problem
AC97 Codec Core
Fix by Zinx Verituse <zinx@epicsol.org>
The patch for cmi9739a is added. The undocumented unmute bits are
enabled.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/pci/ac97/ac97_codec.c | 1 | ||||
-rw-r--r-- | sound/pci/ac97/ac97_patch.c | 6 |
2 files changed, 6 insertions, 1 deletions
diff --git a/sound/pci/ac97/ac97_codec.c b/sound/pci/ac97/ac97_codec.c index af161a262d9d74..512198b7568982 100644 --- a/sound/pci/ac97/ac97_codec.c +++ b/sound/pci/ac97/ac97_codec.c @@ -118,6 +118,7 @@ static const ac97_codec_id_t snd_ac97_codec_ids[] = { { 0x414c4770, 0xfffffff0, "ALC203", NULL, NULL }, { 0x434d4941, 0xffffffff, "CMI9738", patch_cm9738, NULL }, { 0x434d4961, 0xffffffff, "CMI9739", patch_cm9739, NULL }, +{ 0x434d4983, 0xffffffff, "CMI9739A", patch_cm9739, NULL }, { 0x434d4978, 0xffffffff, "CMI9761", patch_cm9761, NULL }, { 0x434d4982, 0xffffffff, "CMI9761", patch_cm9761, NULL }, { 0x434d4983, 0xffffffff, "CMI9761", patch_cm9761, NULL }, diff --git a/sound/pci/ac97/ac97_patch.c b/sound/pci/ac97/ac97_patch.c index 71c0744979b738..6fcc7769581983 100644 --- a/sound/pci/ac97/ac97_patch.c +++ b/sound/pci/ac97/ac97_patch.c @@ -1877,8 +1877,12 @@ int patch_cm9739(ac97_t * ac97) /* bit 12: disable center/lfe (swithable) */ /* bit 10: disable surround/line (switchable) */ /* bit 9: mix 2 surround off */ + /* bit 4: undocumented; 0 mutes the CM9739A, which defaults to 1 */ + /* bit 3: undocumented; surround? */ /* bit 0: dB */ - val = (1 << 13); + val = snd_ac97_read(ac97, AC97_CM9739_MULTI_CHAN) & (1 << 4); + val |= (1 << 3); + val |= (1 << 13); if (! (ac97->ext_id & AC97_EI_SPDIF)) val |= (1 << 14); snd_ac97_write_cache(ac97, AC97_CM9739_MULTI_CHAN, val); |