|
@@ -2173,20 +2173,25 @@ static int parse_audio_selector_unit(struct mixer_build *state, int unitid,
|
|
|
kctl->private_value = (unsigned long)namelist;
|
|
|
kctl->private_free = usb_mixer_selector_elem_free;
|
|
|
|
|
|
- nameid = uac_selector_unit_iSelector(desc);
|
|
|
+ /* check the static mapping table at first */
|
|
|
len = check_mapped_name(map, kctl->id.name, sizeof(kctl->id.name));
|
|
|
- if (len)
|
|
|
- ;
|
|
|
- else if (nameid)
|
|
|
- len = snd_usb_copy_string_desc(state, nameid, kctl->id.name,
|
|
|
- sizeof(kctl->id.name));
|
|
|
- else
|
|
|
- len = get_term_name(state, &state->oterm,
|
|
|
- kctl->id.name, sizeof(kctl->id.name), 0);
|
|
|
-
|
|
|
if (!len) {
|
|
|
- strlcpy(kctl->id.name, "USB", sizeof(kctl->id.name));
|
|
|
+ /* no mapping ? */
|
|
|
+ /* if iSelector is given, use it */
|
|
|
+ nameid = uac_selector_unit_iSelector(desc);
|
|
|
+ if (nameid)
|
|
|
+ len = snd_usb_copy_string_desc(state, nameid,
|
|
|
+ kctl->id.name,
|
|
|
+ sizeof(kctl->id.name));
|
|
|
+ /* ... or pick up the terminal name at next */
|
|
|
+ if (!len)
|
|
|
+ len = get_term_name(state, &state->oterm,
|
|
|
+ kctl->id.name, sizeof(kctl->id.name), 0);
|
|
|
+ /* ... or use the fixed string "USB" as the last resort */
|
|
|
+ if (!len)
|
|
|
+ strlcpy(kctl->id.name, "USB", sizeof(kctl->id.name));
|
|
|
|
|
|
+ /* and add the proper suffix */
|
|
|
if (desc->bDescriptorSubtype == UAC2_CLOCK_SELECTOR)
|
|
|
append_ctl_name(kctl, " Clock Source");
|
|
|
else if ((state->oterm.type & 0xff00) == 0x0100)
|