On Di, 2018-09-11 at 23:36 +0530, saranya.gopal@xxxxxxxxx wrote: > @@ -121,6 +132,23 @@ int usb_choose_configuration(struct usb_device *udev) > #endif > } > > + /* > + * Select first configuration as default for audio so that > + * devices that don't comply with UAC3 protocol are supported. > + * But, still iterate through other configurations and > + * select UAC3 compliant config if present. > + */ > + if (i == 0 && num_configs > 1 && desc && is_audio(desc)) { > + best = c; > + continue; > + } > + > + if (i > 0 && desc && is_audio(desc)) { > + if (is_uac3_config(desc)) > + best = c; > + break; > + } Hi, that looks like a special case. Couldn't we do for (all configuration) { 1. take first 2. if this configuration is generic and the current is specific change current 3. if if this configuration is the same interface class as current and protocol is higher, change current } Regards Oliver