aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorJaroslav Kysela <perex@suse.cz>2004-11-11 13:48:57 +0100
committerJaroslav Kysela <perex@suse.cz>2004-11-11 13:48:57 +0100
commitd457e8c93a0eb67f00ff1594f63b4d47df7b8254 (patch)
tree46d990acbcb12d1222b4fa491845be3672dd1d7c /sound
parent94261f9f8f7326d1c2788f1191f7913f998c56e5 (diff)
downloadhistory-d457e8c93a0eb67f00ff1594f63b4d47df7b8254.tar.gz
[ALSA] handle missing control bitmap when parsing MUDs
USB generic driver The AudioTrak Maya44 USB has a mixer unit descriptor without a bmControl field; handle this as if all bits are zero. Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Diffstat (limited to 'sound')
-rw-r--r--sound/usb/usbmixer.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/sound/usb/usbmixer.c b/sound/usb/usbmixer.c
index 1d0aa0332403af..5d2ed1c6a138c2 100644
--- a/sound/usb/usbmixer.c
+++ b/sound/usb/usbmixer.c
@@ -993,14 +993,17 @@ static int parse_audio_mixer_unit(mixer_build_t *state, int unitid, unsigned cha
{
int num_ins, num_outs;
int i, err;
- if (desc[0] < 12 || ! (num_ins = desc[4]) || ! (num_outs = desc[5 + num_ins]))
+
+ if (desc[0] < 11 || ! (num_ins = desc[4]) || ! (num_outs = desc[5 + num_ins]))
return -EINVAL;
for (i = 0; i < num_ins; i++) {
err = parse_audio_unit(state, desc[5 + i]);
if (err < 0)
return err;
- if (check_matrix_bitmap(desc + 9 + num_ins, i, 0, num_outs))
+ /* some devices (e.g. Maya44) omit the bitmap */
+ if (desc[0] > 11 &&
+ check_matrix_bitmap(desc + 9 + num_ins, i, 0, num_outs))
build_mixer_unit_ctl(state, desc, i, unitid);
}
return 0;