[alsa-devel] [PATCH] ALSA: usb-audio: fix missing input volume controls in MAYA44 USB(+)
Takashi Iwai
tiwai at suse.de
Wed Jun 3 14:02:40 CEST 2015
At Wed, 03 Jun 2015 11:36:51 +0200,
Clemens Ladisch wrote:
>
> The driver worked around an error in the MAYA44 USB(+)'s mixer unit
> descriptor by aborting before parsing the missing field. However,
> aborting parsing too early prevented parsing of the other units
> connected to this unit, so the capture mixer controls would be missing.
>
> Fix this by moving the check for this descriptor error after the parsing
> of the unit's input pins.
>
> Reported-by: nightmixes <nightmixes at gmail.com>
> Tested-by: nightmixes <nightmixes at gmail.com>
> Signed-off-by: Clemens Ladisch <clemens at ladisch.de>
Applied, thanks.
Takashi
>
> --- a/sound/usb/mixer.c
> +++ b/sound/usb/mixer.c
> @@ -1583,18 +1583,15 @@ static int parse_audio_mixer_unit(struct
> unitid);
> return -EINVAL;
> }
> - /* no bmControls field (e.g. Maya44) -> ignore */
> - if (desc->bLength <= 10 + input_pins) {
> - usb_audio_dbg(state->chip, "MU %d has no bmControls field\n",
> - unitid);
> - return 0;
> - }
>
> num_ins = 0;
> ich = 0;
> for (pin = 0; pin < input_pins; pin++) {
> err = parse_audio_unit(state, desc->baSourceID[pin]);
> if (err < 0)
> + continue;
> + /* no bmControls field (e.g. Maya44) -> ignore */
> + if (desc->bLength <= 10 + input_pins)
> continue;
> err = check_input_term(state, desc->baSourceID[pin], &iterm);
> if (err < 0)
>
More information about the Alsa-devel
mailing list