diff options
author | Jaroslav Kysela <perex@suse.cz> | 2004-11-11 13:48:57 +0100 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2004-11-11 13:48:57 +0100 |
commit | d457e8c93a0eb67f00ff1594f63b4d47df7b8254 (patch) | |
tree | 46d990acbcb12d1222b4fa491845be3672dd1d7c /sound | |
parent | 94261f9f8f7326d1c2788f1191f7913f998c56e5 (diff) | |
download | history-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.c | 7 |
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; |