|
@@ -58,9 +58,17 @@ static int create_composite_quirk(struct snd_usb_audio *chip,
|
|
|
err = snd_usb_create_quirk(chip, iface, driver, quirk);
|
|
|
if (err < 0)
|
|
|
return err;
|
|
|
- if (quirk->ifnum != probed_ifnum)
|
|
|
+ }
|
|
|
+
|
|
|
+ for (quirk = quirk->data; quirk->ifnum >= 0; ++quirk) {
|
|
|
+ iface = usb_ifnum_to_if(chip->dev, quirk->ifnum);
|
|
|
+ if (!iface)
|
|
|
+ continue;
|
|
|
+ if (quirk->ifnum != probed_ifnum &&
|
|
|
+ !usb_interface_claimed(iface))
|
|
|
usb_driver_claim_interface(driver, iface, (void *)-1L);
|
|
|
}
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
|