|
|
@@ -2322,7 +2322,7 @@ static struct procunit_info extunits[] = {
|
|
|
*/
|
|
|
static int build_audio_procunit(struct mixer_build *state, int unitid,
|
|
|
void *raw_desc, struct procunit_info *list,
|
|
|
- char *name)
|
|
|
+ bool extension_unit)
|
|
|
{
|
|
|
struct uac_processing_unit_descriptor *desc = raw_desc;
|
|
|
int num_ins;
|
|
|
@@ -2339,6 +2339,8 @@ static int build_audio_procunit(struct mixer_build *state, int unitid,
|
|
|
static struct procunit_info default_info = {
|
|
|
0, NULL, default_value_info
|
|
|
};
|
|
|
+ const char *name = extension_unit ?
|
|
|
+ "Extension Unit" : "Processing Unit";
|
|
|
|
|
|
if (desc->bLength < 13) {
|
|
|
usb_audio_err(state->chip, "invalid %s descriptor (id %d)\n", name, unitid);
|
|
|
@@ -2452,7 +2454,10 @@ static int build_audio_procunit(struct mixer_build *state, int unitid,
|
|
|
} else if (info->name) {
|
|
|
strlcpy(kctl->id.name, info->name, sizeof(kctl->id.name));
|
|
|
} else {
|
|
|
- nameid = uac_processing_unit_iProcessing(desc, state->mixer->protocol);
|
|
|
+ if (extension_unit)
|
|
|
+ nameid = uac_extension_unit_iExtension(desc, state->mixer->protocol);
|
|
|
+ else
|
|
|
+ nameid = uac_processing_unit_iProcessing(desc, state->mixer->protocol);
|
|
|
len = 0;
|
|
|
if (nameid)
|
|
|
len = snd_usb_copy_string_desc(state->chip,
|
|
|
@@ -2485,10 +2490,10 @@ static int parse_audio_processing_unit(struct mixer_build *state, int unitid,
|
|
|
case UAC_VERSION_2:
|
|
|
default:
|
|
|
return build_audio_procunit(state, unitid, raw_desc,
|
|
|
- procunits, "Processing Unit");
|
|
|
+ procunits, false);
|
|
|
case UAC_VERSION_3:
|
|
|
return build_audio_procunit(state, unitid, raw_desc,
|
|
|
- uac3_procunits, "Processing Unit");
|
|
|
+ uac3_procunits, false);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -2499,8 +2504,7 @@ static int parse_audio_extension_unit(struct mixer_build *state, int unitid,
|
|
|
* Note that we parse extension units with processing unit descriptors.
|
|
|
* That's ok as the layout is the same.
|
|
|
*/
|
|
|
- return build_audio_procunit(state, unitid, raw_desc,
|
|
|
- extunits, "Extension Unit");
|
|
|
+ return build_audio_procunit(state, unitid, raw_desc, extunits, true);
|
|
|
}
|
|
|
|
|
|
/*
|