diff options
author | Takashi Iwai <tiwai@suse.de> | 2013-03-18 06:04:42 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2013-03-18 06:04:42 -0400 |
commit | cf30f46acde1f84fbf603bba6540cbb40cc6c954 (patch) | |
tree | 2652b3fd1fbc4c379ee5325579fe60eae75421f1 /sound/usb | |
parent | 0959f22ee66734c212fc733f7616ba321ef7f47f (diff) | |
parent | a86b1a2cd2f81f74e815e07f756edd7bc5b6f034 (diff) |
Merge branch 'for-linus' into for-next
Back-merged for refactoring beep stuff.
Diffstat (limited to 'sound/usb')
-rw-r--r-- | sound/usb/card.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/sound/usb/card.c b/sound/usb/card.c index 803953a9bff3..2da8ad75fd96 100644 --- a/sound/usb/card.c +++ b/sound/usb/card.c | |||
@@ -244,6 +244,21 @@ static int snd_usb_create_streams(struct snd_usb_audio *chip, int ctrlif) | |||
244 | usb_ifnum_to_if(dev, ctrlif)->intf_assoc; | 244 | usb_ifnum_to_if(dev, ctrlif)->intf_assoc; |
245 | 245 | ||
246 | if (!assoc) { | 246 | if (!assoc) { |
247 | /* | ||
248 | * Firmware writers cannot count to three. So to find | ||
249 | * the IAD on the NuForce UDH-100, also check the next | ||
250 | * interface. | ||
251 | */ | ||
252 | struct usb_interface *iface = | ||
253 | usb_ifnum_to_if(dev, ctrlif + 1); | ||
254 | if (iface && | ||
255 | iface->intf_assoc && | ||
256 | iface->intf_assoc->bFunctionClass == USB_CLASS_AUDIO && | ||
257 | iface->intf_assoc->bFunctionProtocol == UAC_VERSION_2) | ||
258 | assoc = iface->intf_assoc; | ||
259 | } | ||
260 | |||
261 | if (!assoc) { | ||
247 | snd_printk(KERN_ERR "Audio class v2 interfaces need an interface association\n"); | 262 | snd_printk(KERN_ERR "Audio class v2 interfaces need an interface association\n"); |
248 | return -EINVAL; | 263 | return -EINVAL; |
249 | } | 264 | } |