diff options
author | Takashi Iwai <tiwai@suse.de> | 2006-02-09 11:45:20 +0100 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2006-03-22 10:28:34 +0100 |
commit | 50dabc2d1139ba01362418874152aeeb591a4544 (patch) | |
tree | 8ade72febf95b39a69579db2ee7e7e066506990c /sound/pci/ac97 | |
parent | b2b8229dde970b95e407d90a140e8a8753e1f0f6 (diff) | |
download | op-kernel-dev-50dabc2d1139ba01362418874152aeeb591a4544.zip op-kernel-dev-50dabc2d1139ba01362418874152aeeb591a4544.tar.gz |
[ALSA] ac97 - Add support of static resolution tables
Modules: AC97 Codec
Added the support of static resolution table support for codecs
that the driver cannot probe the volume resolution properly.
The table pointer should be set in each codec patch.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/ac97')
-rw-r--r-- | sound/pci/ac97/ac97_codec.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/sound/pci/ac97/ac97_codec.c b/sound/pci/ac97/ac97_codec.c index 6108cdc..124c1bc 100644 --- a/sound/pci/ac97/ac97_codec.c +++ b/sound/pci/ac97/ac97_codec.c @@ -1030,6 +1030,18 @@ static void check_volume_resolution(struct snd_ac97 *ac97, int reg, unsigned cha unsigned char max[3] = { 63, 31, 15 }; int i; + /* first look up the static resolution table */ + if (ac97->res_table) { + const struct snd_ac97_res_table *tbl; + for (tbl = ac97->res_table; tbl->reg; tbl++) { + if (tbl->reg == reg) { + *lo_max = tbl->bits & 0xff; + *hi_max = (tbl->bits >> 8) & 0xff; + return; + } + } + } + *lo_max = *hi_max = 0; for (i = 0 ; i < ARRAY_SIZE(cbit); i++) { unsigned short val; |