On Mon, 18 Dec 2017 17:59:38 +0100, Jaejoong Kim wrote:
AudioControl Interface Descriptor: bLength 8 bDescriptorType 36 bDescriptorSubtype 5 (SELECTOR_UNIT) bUnitID 11 bNrInPins 2 baSource( 0) 14 baSource( 1) 5 iSelector 0 ^^^^^^^^^
From the lsusb.txt, iSelector is '0' which means
uac_selector_unit_iSelector() return zero I think.
Yes, and in that case, nameid=0, thus it should go to get_term_name(), and there must be no difference. If any difference came from the given commit, it must be nameid!=0, and yet snd_usb_copy_string_desc(namei) returns an error.
In anyway, another potential fix would be the patch like below. It covers the case where an error is returned from snb_usb_copy_string_desc() and doesn't fall back to the default name resolution.
thanks,
Takashi
--- a/sound/usb/mixer.c +++ b/sound/usb/mixer.c @@ -656,10 +656,14 @@ static int get_term_name(struct mixer_build *state, struct usb_audio_term *iterm unsigned char *name, int maxlen, int term_only) { struct iterm_name_combo *names; + int len;
- if (iterm->name) - return snd_usb_copy_string_desc(state, iterm->name, + if (iterm->name) { + len = snd_usb_copy_string_desc(state, iterm->name, name, maxlen); + if (len) + return len; + }
/* virtual type - not a real terminal */ if (iterm->type >> 16) {