diff options
Diffstat (limited to 'sound/usb/card.c')
| -rw-r--r-- | sound/usb/card.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/sound/usb/card.c b/sound/usb/card.c index 9feb00c831a0..4eabafa5b037 100644 --- a/sound/usb/card.c +++ b/sound/usb/card.c | |||
| @@ -126,7 +126,7 @@ static void snd_usb_stream_disconnect(struct list_head *head) | |||
| 126 | for (idx = 0; idx < 2; idx++) { | 126 | for (idx = 0; idx < 2; idx++) { |
| 127 | subs = &as->substream[idx]; | 127 | subs = &as->substream[idx]; |
| 128 | if (!subs->num_formats) | 128 | if (!subs->num_formats) |
| 129 | return; | 129 | continue; |
| 130 | snd_usb_release_substream_urbs(subs, 1); | 130 | snd_usb_release_substream_urbs(subs, 1); |
| 131 | subs->interface = -1; | 131 | subs->interface = -1; |
| 132 | } | 132 | } |
| @@ -216,6 +216,11 @@ static int snd_usb_create_streams(struct snd_usb_audio *chip, int ctrlif) | |||
| 216 | } | 216 | } |
| 217 | 217 | ||
| 218 | switch (protocol) { | 218 | switch (protocol) { |
| 219 | default: | ||
| 220 | snd_printdd(KERN_WARNING "unknown interface protocol %#02x, assuming v1\n", | ||
| 221 | protocol); | ||
| 222 | /* fall through */ | ||
| 223 | |||
| 219 | case UAC_VERSION_1: { | 224 | case UAC_VERSION_1: { |
| 220 | struct uac1_ac_header_descriptor *h1 = control_header; | 225 | struct uac1_ac_header_descriptor *h1 = control_header; |
| 221 | 226 | ||
| @@ -253,10 +258,6 @@ static int snd_usb_create_streams(struct snd_usb_audio *chip, int ctrlif) | |||
| 253 | 258 | ||
| 254 | break; | 259 | break; |
| 255 | } | 260 | } |
| 256 | |||
| 257 | default: | ||
| 258 | snd_printk(KERN_ERR "unknown protocol version 0x%02x\n", protocol); | ||
| 259 | return -EINVAL; | ||
| 260 | } | 261 | } |
| 261 | 262 | ||
| 262 | return 0; | 263 | return 0; |
| @@ -465,7 +466,13 @@ static void *snd_usb_audio_probe(struct usb_device *dev, | |||
| 465 | goto __error; | 466 | goto __error; |
| 466 | } | 467 | } |
| 467 | 468 | ||
| 468 | chip->ctrl_intf = alts; | 469 | /* |
| 470 | * For devices with more than one control interface, we assume the | ||
| 471 | * first contains the audio controls. We might need a more specific | ||
| 472 | * check here in the future. | ||
| 473 | */ | ||
| 474 | if (!chip->ctrl_intf) | ||
| 475 | chip->ctrl_intf = alts; | ||
| 469 | 476 | ||
| 470 | if (err > 0) { | 477 | if (err > 0) { |
| 471 | /* create normal USB audio interfaces */ | 478 | /* create normal USB audio interfaces */ |
