1 // SPDX-License-Identifier: GPL-2.0-only 2 /* 3 * Edirol UA-101/UA-1000 driver 4 * Copyright (c) Clemens Ladisch <clemens@ladisch.de> 5 */ 6 7 #include <linux/init.h> 8 #include <linux/module.h> 9 #include <linux/slab.h> 10 #include <linux/usb.h> 11 #include <linux/usb/audio.h> 12 #include <sound/core.h> 13 #include <sound/initval.h> 14 #include <sound/pcm.h> 15 #include <sound/pcm_params.h> 16 #include "../usbaudio.h" 17 #include "../midi.h" 18 19 MODULE_DESCRIPTION("Edirol UA-101/1000 driver"); 20 MODULE_AUTHOR("Clemens Ladisch <clemens@ladisch.de>"); 21 MODULE_LICENSE("GPL v2"); 22 MODULE_SUPPORTED_DEVICE("{{Edirol,UA-101},{Edirol,UA-1000}}"); 23 24 /* 25 * Should not be lower than the minimum scheduling delay of the host 26 * controller. Some Intel controllers need more than one frame; as long as 27 * that driver doesn't tell us about this, use 1.5 frames just to be sure. 28 */ 29 #define MIN_QUEUE_LENGTH 12 30 /* Somewhat random. */ 31 #define MAX_QUEUE_LENGTH 30 32 /* 33 * This magic value optimizes memory usage efficiency for the UA-101's packet 34 * sizes at all sample rates, taking into account the stupid cache pool sizes 35 * that usb_alloc_coherent() uses. 36 */ 37 #define DEFAULT_QUEUE_LENGTH 21 38 39 #define MAX_PACKET_SIZE 672 /* hardware specific */ 40 #define MAX_MEMORY_BUFFERS DIV_ROUND_UP(MAX_QUEUE_LENGTH, \ 41 PAGE_SIZE / MAX_PACKET_SIZE) 42 43 static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; 44 static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; 45 static bool enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP; 46 static unsigned int queue_length = 21; 47 48 module_param_array(index, int, NULL, 0444); 49 MODULE_PARM_DESC(index, "card index"); 50 module_param_array(id, charp, NULL, 0444); 51 MODULE_PARM_DESC(id, "ID string"); 52 module_param_array(enable, bool, NULL, 0444); 53 MODULE_PARM_DESC(enable, "enable card"); 54 module_param(queue_length, uint, 0644); 55 MODULE_PARM_DESC(queue_length, "USB queue length in microframes, " 56 __stringify(MIN_QUEUE_LENGTH)"-"__stringify(MAX_QUEUE_LENGTH)); 57 58 enum { 59 INTF_PLAYBACK, 60 INTF_CAPTURE, 61 INTF_MIDI, 62 63 INTF_COUNT 64 }; 65 66 /* bits in struct ua101::states */ 67 enum { 68 USB_CAPTURE_RUNNING, 69 USB_PLAYBACK_RUNNING, 70 ALSA_CAPTURE_OPEN, 71 ALSA_PLAYBACK_OPEN, 72 ALSA_CAPTURE_RUNNING, 73 ALSA_PLAYBACK_RUNNING, 74 CAPTURE_URB_COMPLETED, 75 PLAYBACK_URB_COMPLETED, 76 DISCONNECTED, 77 }; 78 79 struct ua101 { 80 struct usb_device *dev; 81 struct snd_card *card; 82 struct usb_interface *intf[INTF_COUNT]; 83 int card_index; 84 struct snd_pcm *pcm; 85 struct list_head midi_list; 86 u64 format_bit; 87 unsigned int rate; 88 unsigned int packets_per_second; 89 spinlock_t lock; 90 struct mutex mutex; 91 unsigned long states; 92 93 /* FIFO to synchronize playback rate to capture rate */ 94 unsigned int rate_feedback_start; 95 unsigned int rate_feedback_count; 96 u8 rate_feedback[MAX_QUEUE_LENGTH]; 97 98 struct list_head ready_playback_urbs; 99 struct tasklet_struct playback_tasklet; 100 wait_queue_head_t alsa_capture_wait; 101 wait_queue_head_t rate_feedback_wait; 102 wait_queue_head_t alsa_playback_wait; 103 struct ua101_stream { 104 struct snd_pcm_substream *substream; 105 unsigned int usb_pipe; 106 unsigned int channels; 107 unsigned int frame_bytes; 108 unsigned int max_packet_bytes; 109 unsigned int period_pos; 110 unsigned int buffer_pos; 111 unsigned int queue_length; 112 struct ua101_urb { 113 struct urb urb; 114 struct usb_iso_packet_descriptor iso_frame_desc[1]; 115 struct list_head ready_list; 116 } *urbs[MAX_QUEUE_LENGTH]; 117 struct { 118 unsigned int size; 119 void *addr; 120 dma_addr_t dma; 121 } buffers[MAX_MEMORY_BUFFERS]; 122 } capture, playback; 123 }; 124 125 static DEFINE_MUTEX(devices_mutex); 126 static unsigned int devices_used; 127 static struct usb_driver ua101_driver; 128 129 static void abort_alsa_playback(struct ua101 *ua); 130 static void abort_alsa_capture(struct ua101 *ua); 131 132 static const char *usb_error_string(int err) 133 { 134 switch (err) { 135 case -ENODEV: 136 return "no device"; 137 case -ENOENT: 138 return "endpoint not enabled"; 139 case -EPIPE: 140 return "endpoint stalled"; 141 case -ENOSPC: 142 return "not enough bandwidth"; 143 case -ESHUTDOWN: 144 return "device disabled"; 145 case -EHOSTUNREACH: 146 return "device suspended"; 147 case -EINVAL: 148 case -EAGAIN: 149 case -EFBIG: 150 case -EMSGSIZE: 151 return "internal error"; 152 default: 153 return "unknown error"; 154 } 155 } 156 157 static void abort_usb_capture(struct ua101 *ua) 158 { 159 if (test_and_clear_bit(USB_CAPTURE_RUNNING, &ua->states)) { 160 wake_up(&ua->alsa_capture_wait); 161 wake_up(&ua->rate_feedback_wait); 162 } 163 } 164 165 static void abort_usb_playback(struct ua101 *ua) 166 { 167 if (test_and_clear_bit(USB_PLAYBACK_RUNNING, &ua->states)) 168 wake_up(&ua->alsa_playback_wait); 169 } 170 171 static void playback_urb_complete(struct urb *usb_urb) 172 { 173 struct ua101_urb *urb = (struct ua101_urb *)usb_urb; 174 struct ua101 *ua = urb->urb.context; 175 unsigned long flags; 176 177 if (unlikely(urb->urb.status == -ENOENT || /* unlinked */ 178 urb->urb.status == -ENODEV || /* device removed */ 179 urb->urb.status == -ECONNRESET || /* unlinked */ 180 urb->urb.status == -ESHUTDOWN)) { /* device disabled */ 181 abort_usb_playback(ua); 182 abort_alsa_playback(ua); 183 return; 184 } 185 186 if (test_bit(USB_PLAYBACK_RUNNING, &ua->states)) { 187 /* append URB to FIFO */ 188 spin_lock_irqsave(&ua->lock, flags); 189 list_add_tail(&urb->ready_list, &ua->ready_playback_urbs); 190 if (ua->rate_feedback_count > 0) 191 tasklet_schedule(&ua->playback_tasklet); 192 ua->playback.substream->runtime->delay -= 193 urb->urb.iso_frame_desc[0].length / 194 ua->playback.frame_bytes; 195 spin_unlock_irqrestore(&ua->lock, flags); 196 } 197 } 198 199 static void first_playback_urb_complete(struct urb *urb) 200 { 201 struct ua101 *ua = urb->context; 202 203 urb->complete = playback_urb_complete; 204 playback_urb_complete(urb); 205 206 set_bit(PLAYBACK_URB_COMPLETED, &ua->states); 207 wake_up(&ua->alsa_playback_wait); 208 } 209 210 /* copy data from the ALSA ring buffer into the URB buffer */ 211 static bool copy_playback_data(struct ua101_stream *stream, struct urb *urb, 212 unsigned int frames) 213 { 214 struct snd_pcm_runtime *runtime; 215 unsigned int frame_bytes, frames1; 216 const u8 *source; 217 218 runtime = stream->substream->runtime; 219 frame_bytes = stream->frame_bytes; 220 source = runtime->dma_area + stream->buffer_pos * frame_bytes; 221 if (stream->buffer_pos + frames <= runtime->buffer_size) { 222 memcpy(urb->transfer_buffer, source, frames * frame_bytes); 223 } else { 224 /* wrap around at end of ring buffer */ 225 frames1 = runtime->buffer_size - stream->buffer_pos; 226 memcpy(urb->transfer_buffer, source, frames1 * frame_bytes); 227 memcpy(urb->transfer_buffer + frames1 * frame_bytes, 228 runtime->dma_area, (frames - frames1) * frame_bytes); 229 } 230 231 stream->buffer_pos += frames; 232 if (stream->buffer_pos >= runtime->buffer_size) 233 stream->buffer_pos -= runtime->buffer_size; 234 stream->period_pos += frames; 235 if (stream->period_pos >= runtime->period_size) { 236 stream->period_pos -= runtime->period_size; 237 return true; 238 } 239 return false; 240 } 241 242 static inline void add_with_wraparound(struct ua101 *ua, 243 unsigned int *value, unsigned int add) 244 { 245 *value += add; 246 if (*value >= ua->playback.queue_length) 247 *value -= ua->playback.queue_length; 248 } 249 250 static void playback_tasklet(unsigned long data) 251 { 252 struct ua101 *ua = (void *)data; 253 unsigned long flags; 254 unsigned int frames; 255 struct ua101_urb *urb; 256 bool do_period_elapsed = false; 257 int err; 258 259 if (unlikely(!test_bit(USB_PLAYBACK_RUNNING, &ua->states))) 260 return; 261 262 /* 263 * Synchronizing the playback rate to the capture rate is done by using 264 * the same sequence of packet sizes for both streams. 265 * Submitting a playback URB therefore requires both a ready URB and 266 * the size of the corresponding capture packet, i.e., both playback 267 * and capture URBs must have been completed. Since the USB core does 268 * not guarantee that playback and capture complete callbacks are 269 * called alternately, we use two FIFOs for packet sizes and read URBs; 270 * submitting playback URBs is possible as long as both FIFOs are 271 * nonempty. 272 */ 273 spin_lock_irqsave(&ua->lock, flags); 274 while (ua->rate_feedback_count > 0 && 275 !list_empty(&ua->ready_playback_urbs)) { 276 /* take packet size out of FIFO */ 277 frames = ua->rate_feedback[ua->rate_feedback_start]; 278 add_with_wraparound(ua, &ua->rate_feedback_start, 1); 279 ua->rate_feedback_count--; 280 281 /* take URB out of FIFO */ 282 urb = list_first_entry(&ua->ready_playback_urbs, 283 struct ua101_urb, ready_list); 284 list_del(&urb->ready_list); 285 286 /* fill packet with data or silence */ 287 urb->urb.iso_frame_desc[0].length = 288 frames * ua->playback.frame_bytes; 289 if (test_bit(ALSA_PLAYBACK_RUNNING, &ua->states)) 290 do_period_elapsed |= copy_playback_data(&ua->playback, 291 &urb->urb, 292 frames); 293 else 294 memset(urb->urb.transfer_buffer, 0, 295 urb->urb.iso_frame_desc[0].length); 296 297 /* and off you go ... */ 298 err = usb_submit_urb(&urb->urb, GFP_ATOMIC); 299 if (unlikely(err < 0)) { 300 spin_unlock_irqrestore(&ua->lock, flags); 301 abort_usb_playback(ua); 302 abort_alsa_playback(ua); 303 dev_err(&ua->dev->dev, "USB request error %d: %s\n", 304 err, usb_error_string(err)); 305 return; 306 } 307 ua->playback.substream->runtime->delay += frames; 308 } 309 spin_unlock_irqrestore(&ua->lock, flags); 310 if (do_period_elapsed) 311 snd_pcm_period_elapsed(ua->playback.substream); 312 } 313 314 /* copy data from the URB buffer into the ALSA ring buffer */ 315 static bool copy_capture_data(struct ua101_stream *stream, struct urb *urb, 316 unsigned int frames) 317 { 318 struct snd_pcm_runtime *runtime; 319 unsigned int frame_bytes, frames1; 320 u8 *dest; 321 322 runtime = stream->substream->runtime; 323 frame_bytes = stream->frame_bytes; 324 dest = runtime->dma_area + stream->buffer_pos * frame_bytes; 325 if (stream->buffer_pos + frames <= runtime->buffer_size) { 326 memcpy(dest, urb->transfer_buffer, frames * frame_bytes); 327 } else { 328 /* wrap around at end of ring buffer */ 329 frames1 = runtime->buffer_size - stream->buffer_pos; 330 memcpy(dest, urb->transfer_buffer, frames1 * frame_bytes); 331 memcpy(runtime->dma_area, 332 urb->transfer_buffer + frames1 * frame_bytes, 333 (frames - frames1) * frame_bytes); 334 } 335 336 stream->buffer_pos += frames; 337 if (stream->buffer_pos >= runtime->buffer_size) 338 stream->buffer_pos -= runtime->buffer_size; 339 stream->period_pos += frames; 340 if (stream->period_pos >= runtime->period_size) { 341 stream->period_pos -= runtime->period_size; 342 return true; 343 } 344 return false; 345 } 346 347 static void capture_urb_complete(struct urb *urb) 348 { 349 struct ua101 *ua = urb->context; 350 struct ua101_stream *stream = &ua->capture; 351 unsigned long flags; 352 unsigned int frames, write_ptr; 353 bool do_period_elapsed; 354 int err; 355 356 if (unlikely(urb->status == -ENOENT || /* unlinked */ 357 urb->status == -ENODEV || /* device removed */ 358 urb->status == -ECONNRESET || /* unlinked */ 359 urb->status == -ESHUTDOWN)) /* device disabled */ 360 goto stream_stopped; 361 362 if (urb->status >= 0 && urb->iso_frame_desc[0].status >= 0) 363 frames = urb->iso_frame_desc[0].actual_length / 364 stream->frame_bytes; 365 else 366 frames = 0; 367 368 spin_lock_irqsave(&ua->lock, flags); 369 370 if (frames > 0 && test_bit(ALSA_CAPTURE_RUNNING, &ua->states)) 371 do_period_elapsed = copy_capture_data(stream, urb, frames); 372 else 373 do_period_elapsed = false; 374 375 if (test_bit(USB_CAPTURE_RUNNING, &ua->states)) { 376 err = usb_submit_urb(urb, GFP_ATOMIC); 377 if (unlikely(err < 0)) { 378 spin_unlock_irqrestore(&ua->lock, flags); 379 dev_err(&ua->dev->dev, "USB request error %d: %s\n", 380 err, usb_error_string(err)); 381 goto stream_stopped; 382 } 383 384 /* append packet size to FIFO */ 385 write_ptr = ua->rate_feedback_start; 386 add_with_wraparound(ua, &write_ptr, ua->rate_feedback_count); 387 ua->rate_feedback[write_ptr] = frames; 388 if (ua->rate_feedback_count < ua->playback.queue_length) { 389 ua->rate_feedback_count++; 390 if (ua->rate_feedback_count == 391 ua->playback.queue_length) 392 wake_up(&ua->rate_feedback_wait); 393 } else { 394 /* 395 * Ring buffer overflow; this happens when the playback 396 * stream is not running. Throw away the oldest entry, 397 * so that the playback stream, when it starts, sees 398 * the most recent packet sizes. 399 */ 400 add_with_wraparound(ua, &ua->rate_feedback_start, 1); 401 } 402 if (test_bit(USB_PLAYBACK_RUNNING, &ua->states) && 403 !list_empty(&ua->ready_playback_urbs)) 404 tasklet_schedule(&ua->playback_tasklet); 405 } 406 407 spin_unlock_irqrestore(&ua->lock, flags); 408 409 if (do_period_elapsed) 410 snd_pcm_period_elapsed(stream->substream); 411 412 return; 413 414 stream_stopped: 415 abort_usb_playback(ua); 416 abort_usb_capture(ua); 417 abort_alsa_playback(ua); 418 abort_alsa_capture(ua); 419 } 420 421 static void first_capture_urb_complete(struct urb *urb) 422 { 423 struct ua101 *ua = urb->context; 424 425 urb->complete = capture_urb_complete; 426 capture_urb_complete(urb); 427 428 set_bit(CAPTURE_URB_COMPLETED, &ua->states); 429 wake_up(&ua->alsa_capture_wait); 430 } 431 432 static int submit_stream_urbs(struct ua101 *ua, struct ua101_stream *stream) 433 { 434 unsigned int i; 435 436 for (i = 0; i < stream->queue_length; ++i) { 437 int err = usb_submit_urb(&stream->urbs[i]->urb, GFP_KERNEL); 438 if (err < 0) { 439 dev_err(&ua->dev->dev, "USB request error %d: %s\n", 440 err, usb_error_string(err)); 441 return err; 442 } 443 } 444 return 0; 445 } 446 447 static void kill_stream_urbs(struct ua101_stream *stream) 448 { 449 unsigned int i; 450 451 for (i = 0; i < stream->queue_length; ++i) 452 if (stream->urbs[i]) 453 usb_kill_urb(&stream->urbs[i]->urb); 454 } 455 456 static int enable_iso_interface(struct ua101 *ua, unsigned int intf_index) 457 { 458 struct usb_host_interface *alts; 459 460 alts = ua->intf[intf_index]->cur_altsetting; 461 if (alts->desc.bAlternateSetting != 1) { 462 int err = usb_set_interface(ua->dev, 463 alts->desc.bInterfaceNumber, 1); 464 if (err < 0) { 465 dev_err(&ua->dev->dev, 466 "cannot initialize interface; error %d: %s\n", 467 err, usb_error_string(err)); 468 return err; 469 } 470 } 471 return 0; 472 } 473 474 static void disable_iso_interface(struct ua101 *ua, unsigned int intf_index) 475 { 476 struct usb_host_interface *alts; 477 478 if (!ua->intf[intf_index]) 479 return; 480 481 alts = ua->intf[intf_index]->cur_altsetting; 482 if (alts->desc.bAlternateSetting != 0) { 483 int err = usb_set_interface(ua->dev, 484 alts->desc.bInterfaceNumber, 0); 485 if (err < 0 && !test_bit(DISCONNECTED, &ua->states)) 486 dev_warn(&ua->dev->dev, 487 "interface reset failed; error %d: %s\n", 488 err, usb_error_string(err)); 489 } 490 } 491 492 static void stop_usb_capture(struct ua101 *ua) 493 { 494 clear_bit(USB_CAPTURE_RUNNING, &ua->states); 495 496 kill_stream_urbs(&ua->capture); 497 498 disable_iso_interface(ua, INTF_CAPTURE); 499 } 500 501 static int start_usb_capture(struct ua101 *ua) 502 { 503 int err; 504 505 if (test_bit(DISCONNECTED, &ua->states)) 506 return -ENODEV; 507 508 if (test_bit(USB_CAPTURE_RUNNING, &ua->states)) 509 return 0; 510 511 kill_stream_urbs(&ua->capture); 512 513 err = enable_iso_interface(ua, INTF_CAPTURE); 514 if (err < 0) 515 return err; 516 517 clear_bit(CAPTURE_URB_COMPLETED, &ua->states); 518 ua->capture.urbs[0]->urb.complete = first_capture_urb_complete; 519 ua->rate_feedback_start = 0; 520 ua->rate_feedback_count = 0; 521 522 set_bit(USB_CAPTURE_RUNNING, &ua->states); 523 err = submit_stream_urbs(ua, &ua->capture); 524 if (err < 0) 525 stop_usb_capture(ua); 526 return err; 527 } 528 529 static void stop_usb_playback(struct ua101 *ua) 530 { 531 clear_bit(USB_PLAYBACK_RUNNING, &ua->states); 532 533 kill_stream_urbs(&ua->playback); 534 535 tasklet_kill(&ua->playback_tasklet); 536 537 disable_iso_interface(ua, INTF_PLAYBACK); 538 } 539 540 static int start_usb_playback(struct ua101 *ua) 541 { 542 unsigned int i, frames; 543 struct urb *urb; 544 int err = 0; 545 546 if (test_bit(DISCONNECTED, &ua->states)) 547 return -ENODEV; 548 549 if (test_bit(USB_PLAYBACK_RUNNING, &ua->states)) 550 return 0; 551 552 kill_stream_urbs(&ua->playback); 553 tasklet_kill(&ua->playback_tasklet); 554 555 err = enable_iso_interface(ua, INTF_PLAYBACK); 556 if (err < 0) 557 return err; 558 559 clear_bit(PLAYBACK_URB_COMPLETED, &ua->states); 560 ua->playback.urbs[0]->urb.complete = 561 first_playback_urb_complete; 562 spin_lock_irq(&ua->lock); 563 INIT_LIST_HEAD(&ua->ready_playback_urbs); 564 spin_unlock_irq(&ua->lock); 565 566 /* 567 * We submit the initial URBs all at once, so we have to wait for the 568 * packet size FIFO to be full. 569 */ 570 wait_event(ua->rate_feedback_wait, 571 ua->rate_feedback_count >= ua->playback.queue_length || 572 !test_bit(USB_CAPTURE_RUNNING, &ua->states) || 573 test_bit(DISCONNECTED, &ua->states)); 574 if (test_bit(DISCONNECTED, &ua->states)) { 575 stop_usb_playback(ua); 576 return -ENODEV; 577 } 578 if (!test_bit(USB_CAPTURE_RUNNING, &ua->states)) { 579 stop_usb_playback(ua); 580 return -EIO; 581 } 582 583 for (i = 0; i < ua->playback.queue_length; ++i) { 584 /* all initial URBs contain silence */ 585 spin_lock_irq(&ua->lock); 586 frames = ua->rate_feedback[ua->rate_feedback_start]; 587 add_with_wraparound(ua, &ua->rate_feedback_start, 1); 588 ua->rate_feedback_count--; 589 spin_unlock_irq(&ua->lock); 590 urb = &ua->playback.urbs[i]->urb; 591 urb->iso_frame_desc[0].length = 592 frames * ua->playback.frame_bytes; 593 memset(urb->transfer_buffer, 0, 594 urb->iso_frame_desc[0].length); 595 } 596 597 set_bit(USB_PLAYBACK_RUNNING, &ua->states); 598 err = submit_stream_urbs(ua, &ua->playback); 599 if (err < 0) 600 stop_usb_playback(ua); 601 return err; 602 } 603 604 static void abort_alsa_capture(struct ua101 *ua) 605 { 606 if (test_bit(ALSA_CAPTURE_RUNNING, &ua->states)) 607 snd_pcm_stop_xrun(ua->capture.substream); 608 } 609 610 static void abort_alsa_playback(struct ua101 *ua) 611 { 612 if (test_bit(ALSA_PLAYBACK_RUNNING, &ua->states)) 613 snd_pcm_stop_xrun(ua->playback.substream); 614 } 615 616 static int set_stream_hw(struct ua101 *ua, struct snd_pcm_substream *substream, 617 unsigned int channels) 618 { 619 int err; 620 621 substream->runtime->hw.info = 622 SNDRV_PCM_INFO_MMAP | 623 SNDRV_PCM_INFO_MMAP_VALID | 624 SNDRV_PCM_INFO_BATCH | 625 SNDRV_PCM_INFO_INTERLEAVED | 626 SNDRV_PCM_INFO_BLOCK_TRANSFER | 627 SNDRV_PCM_INFO_FIFO_IN_FRAMES; 628 substream->runtime->hw.formats = ua->format_bit; 629 substream->runtime->hw.rates = snd_pcm_rate_to_rate_bit(ua->rate); 630 substream->runtime->hw.rate_min = ua->rate; 631 substream->runtime->hw.rate_max = ua->rate; 632 substream->runtime->hw.channels_min = channels; 633 substream->runtime->hw.channels_max = channels; 634 substream->runtime->hw.buffer_bytes_max = 45000 * 1024; 635 substream->runtime->hw.period_bytes_min = 1; 636 substream->runtime->hw.period_bytes_max = UINT_MAX; 637 substream->runtime->hw.periods_min = 2; 638 substream->runtime->hw.periods_max = UINT_MAX; 639 err = snd_pcm_hw_constraint_minmax(substream->runtime, 640 SNDRV_PCM_HW_PARAM_PERIOD_TIME, 641 1500000 / ua->packets_per_second, 642 UINT_MAX); 643 if (err < 0) 644 return err; 645 err = snd_pcm_hw_constraint_msbits(substream->runtime, 0, 32, 24); 646 return err; 647 } 648 649 static int capture_pcm_open(struct snd_pcm_substream *substream) 650 { 651 struct ua101 *ua = substream->private_data; 652 int err; 653 654 ua->capture.substream = substream; 655 err = set_stream_hw(ua, substream, ua->capture.channels); 656 if (err < 0) 657 return err; 658 substream->runtime->hw.fifo_size = 659 DIV_ROUND_CLOSEST(ua->rate, ua->packets_per_second); 660 substream->runtime->delay = substream->runtime->hw.fifo_size; 661 662 mutex_lock(&ua->mutex); 663 err = start_usb_capture(ua); 664 if (err >= 0) 665 set_bit(ALSA_CAPTURE_OPEN, &ua->states); 666 mutex_unlock(&ua->mutex); 667 return err; 668 } 669 670 static int playback_pcm_open(struct snd_pcm_substream *substream) 671 { 672 struct ua101 *ua = substream->private_data; 673 int err; 674 675 ua->playback.substream = substream; 676 err = set_stream_hw(ua, substream, ua->playback.channels); 677 if (err < 0) 678 return err; 679 substream->runtime->hw.fifo_size = 680 DIV_ROUND_CLOSEST(ua->rate * ua->playback.queue_length, 681 ua->packets_per_second); 682 683 mutex_lock(&ua->mutex); 684 err = start_usb_capture(ua); 685 if (err < 0) 686 goto error; 687 err = start_usb_playback(ua); 688 if (err < 0) { 689 if (!test_bit(ALSA_CAPTURE_OPEN, &ua->states)) 690 stop_usb_capture(ua); 691 goto error; 692 } 693 set_bit(ALSA_PLAYBACK_OPEN, &ua->states); 694 error: 695 mutex_unlock(&ua->mutex); 696 return err; 697 } 698 699 static int capture_pcm_close(struct snd_pcm_substream *substream) 700 { 701 struct ua101 *ua = substream->private_data; 702 703 mutex_lock(&ua->mutex); 704 clear_bit(ALSA_CAPTURE_OPEN, &ua->states); 705 if (!test_bit(ALSA_PLAYBACK_OPEN, &ua->states)) 706 stop_usb_capture(ua); 707 mutex_unlock(&ua->mutex); 708 return 0; 709 } 710 711 static int playback_pcm_close(struct snd_pcm_substream *substream) 712 { 713 struct ua101 *ua = substream->private_data; 714 715 mutex_lock(&ua->mutex); 716 stop_usb_playback(ua); 717 clear_bit(ALSA_PLAYBACK_OPEN, &ua->states); 718 if (!test_bit(ALSA_CAPTURE_OPEN, &ua->states)) 719 stop_usb_capture(ua); 720 mutex_unlock(&ua->mutex); 721 return 0; 722 } 723 724 static int capture_pcm_hw_params(struct snd_pcm_substream *substream, 725 struct snd_pcm_hw_params *hw_params) 726 { 727 struct ua101 *ua = substream->private_data; 728 int err; 729 730 mutex_lock(&ua->mutex); 731 err = start_usb_capture(ua); 732 mutex_unlock(&ua->mutex); 733 return err; 734 } 735 736 static int playback_pcm_hw_params(struct snd_pcm_substream *substream, 737 struct snd_pcm_hw_params *hw_params) 738 { 739 struct ua101 *ua = substream->private_data; 740 int err; 741 742 mutex_lock(&ua->mutex); 743 err = start_usb_capture(ua); 744 if (err >= 0) 745 err = start_usb_playback(ua); 746 mutex_unlock(&ua->mutex); 747 return err; 748 } 749 750 static int capture_pcm_prepare(struct snd_pcm_substream *substream) 751 { 752 struct ua101 *ua = substream->private_data; 753 int err; 754 755 mutex_lock(&ua->mutex); 756 err = start_usb_capture(ua); 757 mutex_unlock(&ua->mutex); 758 if (err < 0) 759 return err; 760 761 /* 762 * The EHCI driver schedules the first packet of an iso stream at 10 ms 763 * in the future, i.e., no data is actually captured for that long. 764 * Take the wait here so that the stream is known to be actually 765 * running when the start trigger has been called. 766 */ 767 wait_event(ua->alsa_capture_wait, 768 test_bit(CAPTURE_URB_COMPLETED, &ua->states) || 769 !test_bit(USB_CAPTURE_RUNNING, &ua->states)); 770 if (test_bit(DISCONNECTED, &ua->states)) 771 return -ENODEV; 772 if (!test_bit(USB_CAPTURE_RUNNING, &ua->states)) 773 return -EIO; 774 775 ua->capture.period_pos = 0; 776 ua->capture.buffer_pos = 0; 777 return 0; 778 } 779 780 static int playback_pcm_prepare(struct snd_pcm_substream *substream) 781 { 782 struct ua101 *ua = substream->private_data; 783 int err; 784 785 mutex_lock(&ua->mutex); 786 err = start_usb_capture(ua); 787 if (err >= 0) 788 err = start_usb_playback(ua); 789 mutex_unlock(&ua->mutex); 790 if (err < 0) 791 return err; 792 793 /* see the comment in capture_pcm_prepare() */ 794 wait_event(ua->alsa_playback_wait, 795 test_bit(PLAYBACK_URB_COMPLETED, &ua->states) || 796 !test_bit(USB_PLAYBACK_RUNNING, &ua->states)); 797 if (test_bit(DISCONNECTED, &ua->states)) 798 return -ENODEV; 799 if (!test_bit(USB_PLAYBACK_RUNNING, &ua->states)) 800 return -EIO; 801 802 substream->runtime->delay = 0; 803 ua->playback.period_pos = 0; 804 ua->playback.buffer_pos = 0; 805 return 0; 806 } 807 808 static int capture_pcm_trigger(struct snd_pcm_substream *substream, int cmd) 809 { 810 struct ua101 *ua = substream->private_data; 811 812 switch (cmd) { 813 case SNDRV_PCM_TRIGGER_START: 814 if (!test_bit(USB_CAPTURE_RUNNING, &ua->states)) 815 return -EIO; 816 set_bit(ALSA_CAPTURE_RUNNING, &ua->states); 817 return 0; 818 case SNDRV_PCM_TRIGGER_STOP: 819 clear_bit(ALSA_CAPTURE_RUNNING, &ua->states); 820 return 0; 821 default: 822 return -EINVAL; 823 } 824 } 825 826 static int playback_pcm_trigger(struct snd_pcm_substream *substream, int cmd) 827 { 828 struct ua101 *ua = substream->private_data; 829 830 switch (cmd) { 831 case SNDRV_PCM_TRIGGER_START: 832 if (!test_bit(USB_PLAYBACK_RUNNING, &ua->states)) 833 return -EIO; 834 set_bit(ALSA_PLAYBACK_RUNNING, &ua->states); 835 return 0; 836 case SNDRV_PCM_TRIGGER_STOP: 837 clear_bit(ALSA_PLAYBACK_RUNNING, &ua->states); 838 return 0; 839 default: 840 return -EINVAL; 841 } 842 } 843 844 static inline snd_pcm_uframes_t ua101_pcm_pointer(struct ua101 *ua, 845 struct ua101_stream *stream) 846 { 847 unsigned long flags; 848 unsigned int pos; 849 850 spin_lock_irqsave(&ua->lock, flags); 851 pos = stream->buffer_pos; 852 spin_unlock_irqrestore(&ua->lock, flags); 853 return pos; 854 } 855 856 static snd_pcm_uframes_t capture_pcm_pointer(struct snd_pcm_substream *subs) 857 { 858 struct ua101 *ua = subs->private_data; 859 860 return ua101_pcm_pointer(ua, &ua->capture); 861 } 862 863 static snd_pcm_uframes_t playback_pcm_pointer(struct snd_pcm_substream *subs) 864 { 865 struct ua101 *ua = subs->private_data; 866 867 return ua101_pcm_pointer(ua, &ua->playback); 868 } 869 870 static const struct snd_pcm_ops capture_pcm_ops = { 871 .open = capture_pcm_open, 872 .close = capture_pcm_close, 873 .hw_params = capture_pcm_hw_params, 874 .prepare = capture_pcm_prepare, 875 .trigger = capture_pcm_trigger, 876 .pointer = capture_pcm_pointer, 877 }; 878 879 static const struct snd_pcm_ops playback_pcm_ops = { 880 .open = playback_pcm_open, 881 .close = playback_pcm_close, 882 .hw_params = playback_pcm_hw_params, 883 .prepare = playback_pcm_prepare, 884 .trigger = playback_pcm_trigger, 885 .pointer = playback_pcm_pointer, 886 }; 887 888 static const struct uac_format_type_i_discrete_descriptor * 889 find_format_descriptor(struct usb_interface *interface) 890 { 891 struct usb_host_interface *alt; 892 u8 *extra; 893 int extralen; 894 895 if (interface->num_altsetting != 2) { 896 dev_err(&interface->dev, "invalid num_altsetting\n"); 897 return NULL; 898 } 899 900 alt = &interface->altsetting[0]; 901 if (alt->desc.bNumEndpoints != 0) { 902 dev_err(&interface->dev, "invalid bNumEndpoints\n"); 903 return NULL; 904 } 905 906 alt = &interface->altsetting[1]; 907 if (alt->desc.bNumEndpoints != 1) { 908 dev_err(&interface->dev, "invalid bNumEndpoints\n"); 909 return NULL; 910 } 911 912 extra = alt->extra; 913 extralen = alt->extralen; 914 while (extralen >= sizeof(struct usb_descriptor_header)) { 915 struct uac_format_type_i_discrete_descriptor *desc; 916 917 desc = (struct uac_format_type_i_discrete_descriptor *)extra; 918 if (desc->bLength > extralen) { 919 dev_err(&interface->dev, "descriptor overflow\n"); 920 return NULL; 921 } 922 if (desc->bLength == UAC_FORMAT_TYPE_I_DISCRETE_DESC_SIZE(1) && 923 desc->bDescriptorType == USB_DT_CS_INTERFACE && 924 desc->bDescriptorSubtype == UAC_FORMAT_TYPE) { 925 if (desc->bFormatType != UAC_FORMAT_TYPE_I_PCM || 926 desc->bSamFreqType != 1) { 927 dev_err(&interface->dev, 928 "invalid format type\n"); 929 return NULL; 930 } 931 return desc; 932 } 933 extralen -= desc->bLength; 934 extra += desc->bLength; 935 } 936 dev_err(&interface->dev, "sample format descriptor not found\n"); 937 return NULL; 938 } 939 940 static int detect_usb_format(struct ua101 *ua) 941 { 942 const struct uac_format_type_i_discrete_descriptor *fmt_capture; 943 const struct uac_format_type_i_discrete_descriptor *fmt_playback; 944 const struct usb_endpoint_descriptor *epd; 945 unsigned int rate2; 946 947 fmt_capture = find_format_descriptor(ua->intf[INTF_CAPTURE]); 948 fmt_playback = find_format_descriptor(ua->intf[INTF_PLAYBACK]); 949 if (!fmt_capture || !fmt_playback) 950 return -ENXIO; 951 952 switch (fmt_capture->bSubframeSize) { 953 case 3: 954 ua->format_bit = SNDRV_PCM_FMTBIT_S24_3LE; 955 break; 956 case 4: 957 ua->format_bit = SNDRV_PCM_FMTBIT_S32_LE; 958 break; 959 default: 960 dev_err(&ua->dev->dev, "sample width is not 24 or 32 bits\n"); 961 return -ENXIO; 962 } 963 if (fmt_capture->bSubframeSize != fmt_playback->bSubframeSize) { 964 dev_err(&ua->dev->dev, 965 "playback/capture sample widths do not match\n"); 966 return -ENXIO; 967 } 968 969 if (fmt_capture->bBitResolution != 24 || 970 fmt_playback->bBitResolution != 24) { 971 dev_err(&ua->dev->dev, "sample width is not 24 bits\n"); 972 return -ENXIO; 973 } 974 975 ua->rate = combine_triple(fmt_capture->tSamFreq[0]); 976 rate2 = combine_triple(fmt_playback->tSamFreq[0]); 977 if (ua->rate != rate2) { 978 dev_err(&ua->dev->dev, 979 "playback/capture rates do not match: %u/%u\n", 980 rate2, ua->rate); 981 return -ENXIO; 982 } 983 984 switch (ua->dev->speed) { 985 case USB_SPEED_FULL: 986 ua->packets_per_second = 1000; 987 break; 988 case USB_SPEED_HIGH: 989 ua->packets_per_second = 8000; 990 break; 991 default: 992 dev_err(&ua->dev->dev, "unknown device speed\n"); 993 return -ENXIO; 994 } 995 996 ua->capture.channels = fmt_capture->bNrChannels; 997 ua->playback.channels = fmt_playback->bNrChannels; 998 ua->capture.frame_bytes = 999 fmt_capture->bSubframeSize * ua->capture.channels; 1000 ua->playback.frame_bytes = 1001 fmt_playback->bSubframeSize * ua->playback.channels; 1002 1003 epd = &ua->intf[INTF_CAPTURE]->altsetting[1].endpoint[0].desc; 1004 if (!usb_endpoint_is_isoc_in(epd)) { 1005 dev_err(&ua->dev->dev, "invalid capture endpoint\n"); 1006 return -ENXIO; 1007 } 1008 ua->capture.usb_pipe = usb_rcvisocpipe(ua->dev, usb_endpoint_num(epd)); 1009 ua->capture.max_packet_bytes = usb_endpoint_maxp(epd); 1010 1011 epd = &ua->intf[INTF_PLAYBACK]->altsetting[1].endpoint[0].desc; 1012 if (!usb_endpoint_is_isoc_out(epd)) { 1013 dev_err(&ua->dev->dev, "invalid playback endpoint\n"); 1014 return -ENXIO; 1015 } 1016 ua->playback.usb_pipe = usb_sndisocpipe(ua->dev, usb_endpoint_num(epd)); 1017 ua->playback.max_packet_bytes = usb_endpoint_maxp(epd); 1018 return 0; 1019 } 1020 1021 static int alloc_stream_buffers(struct ua101 *ua, struct ua101_stream *stream) 1022 { 1023 unsigned int remaining_packets, packets, packets_per_page, i; 1024 size_t size; 1025 1026 stream->queue_length = queue_length; 1027 stream->queue_length = max(stream->queue_length, 1028 (unsigned int)MIN_QUEUE_LENGTH); 1029 stream->queue_length = min(stream->queue_length, 1030 (unsigned int)MAX_QUEUE_LENGTH); 1031 1032 /* 1033 * The cache pool sizes used by usb_alloc_coherent() (128, 512, 2048) are 1034 * quite bad when used with the packet sizes of this device (e.g. 280, 1035 * 520, 624). Therefore, we allocate and subdivide entire pages, using 1036 * a smaller buffer only for the last chunk. 1037 */ 1038 remaining_packets = stream->queue_length; 1039 packets_per_page = PAGE_SIZE / stream->max_packet_bytes; 1040 for (i = 0; i < ARRAY_SIZE(stream->buffers); ++i) { 1041 packets = min(remaining_packets, packets_per_page); 1042 size = packets * stream->max_packet_bytes; 1043 stream->buffers[i].addr = 1044 usb_alloc_coherent(ua->dev, size, GFP_KERNEL, 1045 &stream->buffers[i].dma); 1046 if (!stream->buffers[i].addr) 1047 return -ENOMEM; 1048 stream->buffers[i].size = size; 1049 remaining_packets -= packets; 1050 if (!remaining_packets) 1051 break; 1052 } 1053 if (remaining_packets) { 1054 dev_err(&ua->dev->dev, "too many packets\n"); 1055 return -ENXIO; 1056 } 1057 return 0; 1058 } 1059 1060 static void free_stream_buffers(struct ua101 *ua, struct ua101_stream *stream) 1061 { 1062 unsigned int i; 1063 1064 for (i = 0; i < ARRAY_SIZE(stream->buffers); ++i) 1065 usb_free_coherent(ua->dev, 1066 stream->buffers[i].size, 1067 stream->buffers[i].addr, 1068 stream->buffers[i].dma); 1069 } 1070 1071 static int alloc_stream_urbs(struct ua101 *ua, struct ua101_stream *stream, 1072 void (*urb_complete)(struct urb *)) 1073 { 1074 unsigned max_packet_size = stream->max_packet_bytes; 1075 struct ua101_urb *urb; 1076 unsigned int b, u = 0; 1077 1078 for (b = 0; b < ARRAY_SIZE(stream->buffers); ++b) { 1079 unsigned int size = stream->buffers[b].size; 1080 u8 *addr = stream->buffers[b].addr; 1081 dma_addr_t dma = stream->buffers[b].dma; 1082 1083 while (size >= max_packet_size) { 1084 if (u >= stream->queue_length) 1085 goto bufsize_error; 1086 urb = kmalloc(sizeof(*urb), GFP_KERNEL); 1087 if (!urb) 1088 return -ENOMEM; 1089 usb_init_urb(&urb->urb); 1090 urb->urb.dev = ua->dev; 1091 urb->urb.pipe = stream->usb_pipe; 1092 urb->urb.transfer_flags = URB_NO_TRANSFER_DMA_MAP; 1093 urb->urb.transfer_buffer = addr; 1094 urb->urb.transfer_dma = dma; 1095 urb->urb.transfer_buffer_length = max_packet_size; 1096 urb->urb.number_of_packets = 1; 1097 urb->urb.interval = 1; 1098 urb->urb.context = ua; 1099 urb->urb.complete = urb_complete; 1100 urb->urb.iso_frame_desc[0].offset = 0; 1101 urb->urb.iso_frame_desc[0].length = max_packet_size; 1102 stream->urbs[u++] = urb; 1103 size -= max_packet_size; 1104 addr += max_packet_size; 1105 dma += max_packet_size; 1106 } 1107 } 1108 if (u == stream->queue_length) 1109 return 0; 1110 bufsize_error: 1111 dev_err(&ua->dev->dev, "internal buffer size error\n"); 1112 return -ENXIO; 1113 } 1114 1115 static void free_stream_urbs(struct ua101_stream *stream) 1116 { 1117 unsigned int i; 1118 1119 for (i = 0; i < stream->queue_length; ++i) { 1120 kfree(stream->urbs[i]); 1121 stream->urbs[i] = NULL; 1122 } 1123 } 1124 1125 static void free_usb_related_resources(struct ua101 *ua, 1126 struct usb_interface *interface) 1127 { 1128 unsigned int i; 1129 struct usb_interface *intf; 1130 1131 mutex_lock(&ua->mutex); 1132 free_stream_urbs(&ua->capture); 1133 free_stream_urbs(&ua->playback); 1134 mutex_unlock(&ua->mutex); 1135 free_stream_buffers(ua, &ua->capture); 1136 free_stream_buffers(ua, &ua->playback); 1137 1138 for (i = 0; i < ARRAY_SIZE(ua->intf); ++i) { 1139 mutex_lock(&ua->mutex); 1140 intf = ua->intf[i]; 1141 ua->intf[i] = NULL; 1142 mutex_unlock(&ua->mutex); 1143 if (intf) { 1144 usb_set_intfdata(intf, NULL); 1145 if (intf != interface) 1146 usb_driver_release_interface(&ua101_driver, 1147 intf); 1148 } 1149 } 1150 } 1151 1152 static void ua101_card_free(struct snd_card *card) 1153 { 1154 struct ua101 *ua = card->private_data; 1155 1156 mutex_destroy(&ua->mutex); 1157 } 1158 1159 static int ua101_probe(struct usb_interface *interface, 1160 const struct usb_device_id *usb_id) 1161 { 1162 static const struct snd_usb_midi_endpoint_info midi_ep = { 1163 .out_cables = 0x0001, 1164 .in_cables = 0x0001 1165 }; 1166 static const struct snd_usb_audio_quirk midi_quirk = { 1167 .type = QUIRK_MIDI_FIXED_ENDPOINT, 1168 .data = &midi_ep 1169 }; 1170 static const int intf_numbers[2][3] = { 1171 { /* UA-101 */ 1172 [INTF_PLAYBACK] = 0, 1173 [INTF_CAPTURE] = 1, 1174 [INTF_MIDI] = 2, 1175 }, 1176 { /* UA-1000 */ 1177 [INTF_CAPTURE] = 1, 1178 [INTF_PLAYBACK] = 2, 1179 [INTF_MIDI] = 3, 1180 }, 1181 }; 1182 struct snd_card *card; 1183 struct ua101 *ua; 1184 unsigned int card_index, i; 1185 int is_ua1000; 1186 const char *name; 1187 char usb_path[32]; 1188 int err; 1189 1190 is_ua1000 = usb_id->idProduct == 0x0044; 1191 1192 if (interface->altsetting->desc.bInterfaceNumber != 1193 intf_numbers[is_ua1000][0]) 1194 return -ENODEV; 1195 1196 mutex_lock(&devices_mutex); 1197 1198 for (card_index = 0; card_index < SNDRV_CARDS; ++card_index) 1199 if (enable[card_index] && !(devices_used & (1 << card_index))) 1200 break; 1201 if (card_index >= SNDRV_CARDS) { 1202 mutex_unlock(&devices_mutex); 1203 return -ENOENT; 1204 } 1205 err = snd_card_new(&interface->dev, 1206 index[card_index], id[card_index], THIS_MODULE, 1207 sizeof(*ua), &card); 1208 if (err < 0) { 1209 mutex_unlock(&devices_mutex); 1210 return err; 1211 } 1212 card->private_free = ua101_card_free; 1213 ua = card->private_data; 1214 ua->dev = interface_to_usbdev(interface); 1215 ua->card = card; 1216 ua->card_index = card_index; 1217 INIT_LIST_HEAD(&ua->midi_list); 1218 spin_lock_init(&ua->lock); 1219 mutex_init(&ua->mutex); 1220 INIT_LIST_HEAD(&ua->ready_playback_urbs); 1221 tasklet_init(&ua->playback_tasklet, 1222 playback_tasklet, (unsigned long)ua); 1223 init_waitqueue_head(&ua->alsa_capture_wait); 1224 init_waitqueue_head(&ua->rate_feedback_wait); 1225 init_waitqueue_head(&ua->alsa_playback_wait); 1226 1227 ua->intf[0] = interface; 1228 for (i = 1; i < ARRAY_SIZE(ua->intf); ++i) { 1229 ua->intf[i] = usb_ifnum_to_if(ua->dev, 1230 intf_numbers[is_ua1000][i]); 1231 if (!ua->intf[i]) { 1232 dev_err(&ua->dev->dev, "interface %u not found\n", 1233 intf_numbers[is_ua1000][i]); 1234 err = -ENXIO; 1235 goto probe_error; 1236 } 1237 err = usb_driver_claim_interface(&ua101_driver, 1238 ua->intf[i], ua); 1239 if (err < 0) { 1240 ua->intf[i] = NULL; 1241 err = -EBUSY; 1242 goto probe_error; 1243 } 1244 } 1245 1246 err = detect_usb_format(ua); 1247 if (err < 0) 1248 goto probe_error; 1249 1250 name = usb_id->idProduct == 0x0044 ? "UA-1000" : "UA-101"; 1251 strcpy(card->driver, "UA-101"); 1252 strcpy(card->shortname, name); 1253 usb_make_path(ua->dev, usb_path, sizeof(usb_path)); 1254 snprintf(ua->card->longname, sizeof(ua->card->longname), 1255 "EDIROL %s (serial %s), %u Hz at %s, %s speed", name, 1256 ua->dev->serial ? ua->dev->serial : "?", ua->rate, usb_path, 1257 ua->dev->speed == USB_SPEED_HIGH ? "high" : "full"); 1258 1259 err = alloc_stream_buffers(ua, &ua->capture); 1260 if (err < 0) 1261 goto probe_error; 1262 err = alloc_stream_buffers(ua, &ua->playback); 1263 if (err < 0) 1264 goto probe_error; 1265 1266 err = alloc_stream_urbs(ua, &ua->capture, capture_urb_complete); 1267 if (err < 0) 1268 goto probe_error; 1269 err = alloc_stream_urbs(ua, &ua->playback, playback_urb_complete); 1270 if (err < 0) 1271 goto probe_error; 1272 1273 err = snd_pcm_new(card, name, 0, 1, 1, &ua->pcm); 1274 if (err < 0) 1275 goto probe_error; 1276 ua->pcm->private_data = ua; 1277 strcpy(ua->pcm->name, name); 1278 snd_pcm_set_ops(ua->pcm, SNDRV_PCM_STREAM_PLAYBACK, &playback_pcm_ops); 1279 snd_pcm_set_ops(ua->pcm, SNDRV_PCM_STREAM_CAPTURE, &capture_pcm_ops); 1280 snd_pcm_set_managed_buffer_all(ua->pcm, SNDRV_DMA_TYPE_VMALLOC, 1281 NULL, 0, 0); 1282 1283 err = snd_usbmidi_create(card, ua->intf[INTF_MIDI], 1284 &ua->midi_list, &midi_quirk); 1285 if (err < 0) 1286 goto probe_error; 1287 1288 err = snd_card_register(card); 1289 if (err < 0) 1290 goto probe_error; 1291 1292 usb_set_intfdata(interface, ua); 1293 devices_used |= 1 << card_index; 1294 1295 mutex_unlock(&devices_mutex); 1296 return 0; 1297 1298 probe_error: 1299 free_usb_related_resources(ua, interface); 1300 snd_card_free(card); 1301 mutex_unlock(&devices_mutex); 1302 return err; 1303 } 1304 1305 static void ua101_disconnect(struct usb_interface *interface) 1306 { 1307 struct ua101 *ua = usb_get_intfdata(interface); 1308 struct list_head *midi; 1309 1310 if (!ua) 1311 return; 1312 1313 mutex_lock(&devices_mutex); 1314 1315 set_bit(DISCONNECTED, &ua->states); 1316 wake_up(&ua->rate_feedback_wait); 1317 1318 /* make sure that userspace cannot create new requests */ 1319 snd_card_disconnect(ua->card); 1320 1321 /* make sure that there are no pending USB requests */ 1322 list_for_each(midi, &ua->midi_list) 1323 snd_usbmidi_disconnect(midi); 1324 abort_alsa_playback(ua); 1325 abort_alsa_capture(ua); 1326 mutex_lock(&ua->mutex); 1327 stop_usb_playback(ua); 1328 stop_usb_capture(ua); 1329 mutex_unlock(&ua->mutex); 1330 1331 free_usb_related_resources(ua, interface); 1332 1333 devices_used &= ~(1 << ua->card_index); 1334 1335 snd_card_free_when_closed(ua->card); 1336 1337 mutex_unlock(&devices_mutex); 1338 } 1339 1340 static const struct usb_device_id ua101_ids[] = { 1341 { USB_DEVICE(0x0582, 0x0044) }, /* UA-1000 high speed */ 1342 { USB_DEVICE(0x0582, 0x007d) }, /* UA-101 high speed */ 1343 { USB_DEVICE(0x0582, 0x008d) }, /* UA-101 full speed */ 1344 { } 1345 }; 1346 MODULE_DEVICE_TABLE(usb, ua101_ids); 1347 1348 static struct usb_driver ua101_driver = { 1349 .name = "snd-ua101", 1350 .id_table = ua101_ids, 1351 .probe = ua101_probe, 1352 .disconnect = ua101_disconnect, 1353 #if 0 1354 .suspend = ua101_suspend, 1355 .resume = ua101_resume, 1356 #endif 1357 }; 1358 1359 module_usb_driver(ua101_driver); 1360