aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVille Syrjala <syrjala@sci.fi>2006-09-04 06:28:24 -0400
committerJaroslav Kysela <perex@suse.cz>2006-09-23 04:45:48 -0400
commitbd25b7cae1e763b292f359170e16bccd01c7ee5c (patch)
treeede5771f67361bb6d2e139c25e4e79d66fed4728
parent93ed150375187ae7917ed1e3b9b830b9d4065bad (diff)
[ALSA] ac97: Fix AD1819 volume range
AD1819 volume registers can hold extra bits which do not affect the actual volume. Add a res_table to the codec patch to fix the problem. PCM, line and mic volume were tested. Signed-off-by: Ville Syrjala <syrjala@sci.fi> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@suse.cz>
-rw-r--r--sound/pci/ac97/ac97_patch.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/sound/pci/ac97/ac97_patch.c b/sound/pci/ac97/ac97_patch.c
index bdd7f89234f6..9be4ceb6838e 100644
--- a/sound/pci/ac97/ac97_patch.c
+++ b/sound/pci/ac97/ac97_patch.c
@@ -1395,6 +1395,17 @@ static void ad1888_resume(struct snd_ac97 *ac97)
1395 1395
1396#endif 1396#endif
1397 1397
1398static const struct snd_ac97_res_table ad1819_restbl[] = {
1399 { AC97_PHONE, 0x9f1f },
1400 { AC97_MIC, 0x9f1f },
1401 { AC97_LINE, 0x9f1f },
1402 { AC97_CD, 0x9f1f },
1403 { AC97_VIDEO, 0x9f1f },
1404 { AC97_AUX, 0x9f1f },
1405 { AC97_PCM, 0x9f1f },
1406 { } /* terminator */
1407};
1408
1398int patch_ad1819(struct snd_ac97 * ac97) 1409int patch_ad1819(struct snd_ac97 * ac97)
1399{ 1410{
1400 unsigned short scfg; 1411 unsigned short scfg;
@@ -1402,6 +1413,7 @@ int patch_ad1819(struct snd_ac97 * ac97)
1402 // patch for Analog Devices 1413 // patch for Analog Devices
1403 scfg = snd_ac97_read(ac97, AC97_AD_SERIAL_CFG); 1414 scfg = snd_ac97_read(ac97, AC97_AD_SERIAL_CFG);
1404 snd_ac97_write_cache(ac97, AC97_AD_SERIAL_CFG, scfg | 0x7000); /* select all codecs */ 1415 snd_ac97_write_cache(ac97, AC97_AD_SERIAL_CFG, scfg | 0x7000); /* select all codecs */
1416 ac97->res_table = ad1819_restbl;
1405 return 0; 1417 return 0;
1406} 1418}
1407 1419