summaryrefslogtreecommitdiffstats
path: root/sound/pci/ac97
diff options
context:
space:
mode:
authorSergey Vlasov <vsu@altlinux.ru>2005-04-25 11:22:20 +0200
committerJaroslav Kysela <perex@suse.cz>2005-05-29 10:05:17 +0200
commitb16760bbb9e3c63b6beef7e2c8f8db64ab5efe70 (patch)
treeeff28eebc3b50ee9b5d6dbe0959c104844e5d52a /sound/pci/ac97
parentee7333970bee3e7565feeb3edfef4db81cbe72e5 (diff)
[ALSA] fix behaviour of ac97_enum_mixer elements
AC97 Codec ac97_enum mixer elements (e.g., 'Capture Source') did not work because of wrong bitmask calculation in snd_ac97_get_enum_double() and snd_ac97_put_enum_double(). https://bugtrack.alsa-project.org/alsa-bug/view.php?id=1072 Signed-off-by: Sergey Vlasov <vsu@altlinux.ru> Signed-off-by: Jaroslav Kysela <perex@suse.cz>
Diffstat (limited to 'sound/pci/ac97')
-rw-r--r--sound/pci/ac97/ac97_codec.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sound/pci/ac97/ac97_codec.c b/sound/pci/ac97/ac97_codec.c
index 1ad7f83a65e..36a33ae9ae0 100644
--- a/sound/pci/ac97/ac97_codec.c
+++ b/sound/pci/ac97/ac97_codec.c
@@ -465,7 +465,7 @@ int snd_ac97_get_enum_double(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * u
struct ac97_enum *e = (struct ac97_enum *)kcontrol->private_value;
unsigned short val, bitmask;
- for (bitmask = 1; bitmask > e->mask; bitmask <<= 1)
+ for (bitmask = 1; bitmask < e->mask; bitmask <<= 1)
;
val = snd_ac97_read_cache(ac97, e->reg);
ucontrol->value.enumerated.item[0] = (val >> e->shift_l) & (bitmask - 1);
@@ -482,7 +482,7 @@ int snd_ac97_put_enum_double(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * u
unsigned short val;
unsigned short mask, bitmask;
- for (bitmask = 1; bitmask > e->mask; bitmask <<= 1)
+ for (bitmask = 1; bitmask < e->mask; bitmask <<= 1)
;
if (ucontrol->value.enumerated.item[0] > e->mask - 1)
return -EINVAL;