1 // SPDX-License-Identifier: GPL-2.0-only
3 * Edirol UA-101/UA-1000 driver
4 * Copyright (c) Clemens Ladisch <clemens@ladisch.de>
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"
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}}");
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.
29 #define MIN_QUEUE_LENGTH 12
30 /* Somewhat random. */
31 #define MAX_QUEUE_LENGTH 30
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.
37 #define DEFAULT_QUEUE_LENGTH 21
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)
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;
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
));
66 /* bits in struct ua101::states */
73 ALSA_PLAYBACK_RUNNING
,
74 CAPTURE_URB_COMPLETED
,
75 PLAYBACK_URB_COMPLETED
,
80 struct usb_device
*dev
;
81 struct snd_card
*card
;
82 struct usb_interface
*intf
[INTF_COUNT
];
85 struct list_head midi_list
;
88 unsigned int packets_per_second
;
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
];
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
;
114 struct usb_iso_packet_descriptor iso_frame_desc
[1];
115 struct list_head ready_list
;
116 } *urbs
[MAX_QUEUE_LENGTH
];
121 } buffers
[MAX_MEMORY_BUFFERS
];
125 static DEFINE_MUTEX(devices_mutex
);
126 static unsigned int devices_used
;
127 static struct usb_driver ua101_driver
;
129 static void abort_alsa_playback(struct ua101
*ua
);
130 static void abort_alsa_capture(struct ua101
*ua
);
132 static const char *usb_error_string(int err
)
138 return "endpoint not enabled";
140 return "endpoint stalled";
142 return "not enough bandwidth";
144 return "device disabled";
146 return "device suspended";
151 return "internal error";
153 return "unknown error";
157 static void abort_usb_capture(struct ua101
*ua
)
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
);
165 static void abort_usb_playback(struct ua101
*ua
)
167 if (test_and_clear_bit(USB_PLAYBACK_RUNNING
, &ua
->states
))
168 wake_up(&ua
->alsa_playback_wait
);
171 static void playback_urb_complete(struct urb
*usb_urb
)
173 struct ua101_urb
*urb
= (struct ua101_urb
*)usb_urb
;
174 struct ua101
*ua
= urb
->urb
.context
;
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
);
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
);
199 static void first_playback_urb_complete(struct urb
*urb
)
201 struct ua101
*ua
= urb
->context
;
203 urb
->complete
= playback_urb_complete
;
204 playback_urb_complete(urb
);
206 set_bit(PLAYBACK_URB_COMPLETED
, &ua
->states
);
207 wake_up(&ua
->alsa_playback_wait
);
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
,
214 struct snd_pcm_runtime
*runtime
;
215 unsigned int frame_bytes
, frames1
;
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
);
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
);
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
;
242 static inline void add_with_wraparound(struct ua101
*ua
,
243 unsigned int *value
, unsigned int add
)
246 if (*value
>= ua
->playback
.queue_length
)
247 *value
-= ua
->playback
.queue_length
;
250 static void playback_tasklet(unsigned long data
)
252 struct ua101
*ua
= (void *)data
;
255 struct ua101_urb
*urb
;
256 bool do_period_elapsed
= false;
259 if (unlikely(!test_bit(USB_PLAYBACK_RUNNING
, &ua
->states
)))
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
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
--;
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
);
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
,
294 memset(urb
->urb
.transfer_buffer
, 0,
295 urb
->urb
.iso_frame_desc
[0].length
);
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
));
307 ua
->playback
.substream
->runtime
->delay
+= frames
;
309 spin_unlock_irqrestore(&ua
->lock
, flags
);
310 if (do_period_elapsed
)
311 snd_pcm_period_elapsed(ua
->playback
.substream
);
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
,
318 struct snd_pcm_runtime
*runtime
;
319 unsigned int frame_bytes
, frames1
;
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
);
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
);
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
;
347 static void capture_urb_complete(struct urb
*urb
)
349 struct ua101
*ua
= urb
->context
;
350 struct ua101_stream
*stream
= &ua
->capture
;
352 unsigned int frames
, write_ptr
;
353 bool do_period_elapsed
;
356 if (unlikely(urb
->status
== -ENOENT
|| /* unlinked */
357 urb
->status
== -ENODEV
|| /* device removed */
358 urb
->status
== -ECONNRESET
|| /* unlinked */
359 urb
->status
== -ESHUTDOWN
)) /* device disabled */
362 if (urb
->status
>= 0 && urb
->iso_frame_desc
[0].status
>= 0)
363 frames
= urb
->iso_frame_desc
[0].actual_length
/
368 spin_lock_irqsave(&ua
->lock
, flags
);
370 if (frames
> 0 && test_bit(ALSA_CAPTURE_RUNNING
, &ua
->states
))
371 do_period_elapsed
= copy_capture_data(stream
, urb
, frames
);
373 do_period_elapsed
= false;
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
));
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
);
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.
400 add_with_wraparound(ua
, &ua
->rate_feedback_start
, 1);
402 if (test_bit(USB_PLAYBACK_RUNNING
, &ua
->states
) &&
403 !list_empty(&ua
->ready_playback_urbs
))
404 tasklet_schedule(&ua
->playback_tasklet
);
407 spin_unlock_irqrestore(&ua
->lock
, flags
);
409 if (do_period_elapsed
)
410 snd_pcm_period_elapsed(stream
->substream
);
415 abort_usb_playback(ua
);
416 abort_usb_capture(ua
);
417 abort_alsa_playback(ua
);
418 abort_alsa_capture(ua
);
421 static void first_capture_urb_complete(struct urb
*urb
)
423 struct ua101
*ua
= urb
->context
;
425 urb
->complete
= capture_urb_complete
;
426 capture_urb_complete(urb
);
428 set_bit(CAPTURE_URB_COMPLETED
, &ua
->states
);
429 wake_up(&ua
->alsa_capture_wait
);
432 static int submit_stream_urbs(struct ua101
*ua
, struct ua101_stream
*stream
)
436 for (i
= 0; i
< stream
->queue_length
; ++i
) {
437 int err
= usb_submit_urb(&stream
->urbs
[i
]->urb
, GFP_KERNEL
);
439 dev_err(&ua
->dev
->dev
, "USB request error %d: %s\n",
440 err
, usb_error_string(err
));
447 static void kill_stream_urbs(struct ua101_stream
*stream
)
451 for (i
= 0; i
< stream
->queue_length
; ++i
)
453 usb_kill_urb(&stream
->urbs
[i
]->urb
);
456 static int enable_iso_interface(struct ua101
*ua
, unsigned int intf_index
)
458 struct usb_host_interface
*alts
;
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);
465 dev_err(&ua
->dev
->dev
,
466 "cannot initialize interface; error %d: %s\n",
467 err
, usb_error_string(err
));
474 static void disable_iso_interface(struct ua101
*ua
, unsigned int intf_index
)
476 struct usb_host_interface
*alts
;
478 if (!ua
->intf
[intf_index
])
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
));
492 static void stop_usb_capture(struct ua101
*ua
)
494 clear_bit(USB_CAPTURE_RUNNING
, &ua
->states
);
496 kill_stream_urbs(&ua
->capture
);
498 disable_iso_interface(ua
, INTF_CAPTURE
);
501 static int start_usb_capture(struct ua101
*ua
)
505 if (test_bit(DISCONNECTED
, &ua
->states
))
508 if (test_bit(USB_CAPTURE_RUNNING
, &ua
->states
))
511 kill_stream_urbs(&ua
->capture
);
513 err
= enable_iso_interface(ua
, INTF_CAPTURE
);
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;
522 set_bit(USB_CAPTURE_RUNNING
, &ua
->states
);
523 err
= submit_stream_urbs(ua
, &ua
->capture
);
525 stop_usb_capture(ua
);
529 static void stop_usb_playback(struct ua101
*ua
)
531 clear_bit(USB_PLAYBACK_RUNNING
, &ua
->states
);
533 kill_stream_urbs(&ua
->playback
);
535 tasklet_kill(&ua
->playback_tasklet
);
537 disable_iso_interface(ua
, INTF_PLAYBACK
);
540 static int start_usb_playback(struct ua101
*ua
)
542 unsigned int i
, frames
;
546 if (test_bit(DISCONNECTED
, &ua
->states
))
549 if (test_bit(USB_PLAYBACK_RUNNING
, &ua
->states
))
552 kill_stream_urbs(&ua
->playback
);
553 tasklet_kill(&ua
->playback_tasklet
);
555 err
= enable_iso_interface(ua
, INTF_PLAYBACK
);
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
);
567 * We submit the initial URBs all at once, so we have to wait for the
568 * packet size FIFO to be full.
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
);
578 if (!test_bit(USB_CAPTURE_RUNNING
, &ua
->states
)) {
579 stop_usb_playback(ua
);
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
);
597 set_bit(USB_PLAYBACK_RUNNING
, &ua
->states
);
598 err
= submit_stream_urbs(ua
, &ua
->playback
);
600 stop_usb_playback(ua
);
604 static void abort_alsa_capture(struct ua101
*ua
)
606 if (test_bit(ALSA_CAPTURE_RUNNING
, &ua
->states
))
607 snd_pcm_stop_xrun(ua
->capture
.substream
);
610 static void abort_alsa_playback(struct ua101
*ua
)
612 if (test_bit(ALSA_PLAYBACK_RUNNING
, &ua
->states
))
613 snd_pcm_stop_xrun(ua
->playback
.substream
);
616 static int set_stream_hw(struct ua101
*ua
, struct snd_pcm_substream
*substream
,
617 unsigned int channels
)
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
,
645 err
= snd_pcm_hw_constraint_msbits(substream
->runtime
, 0, 32, 24);
649 static int capture_pcm_open(struct snd_pcm_substream
*substream
)
651 struct ua101
*ua
= substream
->private_data
;
654 ua
->capture
.substream
= substream
;
655 err
= set_stream_hw(ua
, substream
, ua
->capture
.channels
);
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
;
662 mutex_lock(&ua
->mutex
);
663 err
= start_usb_capture(ua
);
665 set_bit(ALSA_CAPTURE_OPEN
, &ua
->states
);
666 mutex_unlock(&ua
->mutex
);
670 static int playback_pcm_open(struct snd_pcm_substream
*substream
)
672 struct ua101
*ua
= substream
->private_data
;
675 ua
->playback
.substream
= substream
;
676 err
= set_stream_hw(ua
, substream
, ua
->playback
.channels
);
679 substream
->runtime
->hw
.fifo_size
=
680 DIV_ROUND_CLOSEST(ua
->rate
* ua
->playback
.queue_length
,
681 ua
->packets_per_second
);
683 mutex_lock(&ua
->mutex
);
684 err
= start_usb_capture(ua
);
687 err
= start_usb_playback(ua
);
689 if (!test_bit(ALSA_CAPTURE_OPEN
, &ua
->states
))
690 stop_usb_capture(ua
);
693 set_bit(ALSA_PLAYBACK_OPEN
, &ua
->states
);
695 mutex_unlock(&ua
->mutex
);
699 static int capture_pcm_close(struct snd_pcm_substream
*substream
)
701 struct ua101
*ua
= substream
->private_data
;
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
);
711 static int playback_pcm_close(struct snd_pcm_substream
*substream
)
713 struct ua101
*ua
= substream
->private_data
;
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
);
724 static int capture_pcm_hw_params(struct snd_pcm_substream
*substream
,
725 struct snd_pcm_hw_params
*hw_params
)
727 struct ua101
*ua
= substream
->private_data
;
730 mutex_lock(&ua
->mutex
);
731 err
= start_usb_capture(ua
);
732 mutex_unlock(&ua
->mutex
);
736 static int playback_pcm_hw_params(struct snd_pcm_substream
*substream
,
737 struct snd_pcm_hw_params
*hw_params
)
739 struct ua101
*ua
= substream
->private_data
;
742 mutex_lock(&ua
->mutex
);
743 err
= start_usb_capture(ua
);
745 err
= start_usb_playback(ua
);
746 mutex_unlock(&ua
->mutex
);
750 static int capture_pcm_prepare(struct snd_pcm_substream
*substream
)
752 struct ua101
*ua
= substream
->private_data
;
755 mutex_lock(&ua
->mutex
);
756 err
= start_usb_capture(ua
);
757 mutex_unlock(&ua
->mutex
);
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.
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
))
772 if (!test_bit(USB_CAPTURE_RUNNING
, &ua
->states
))
775 ua
->capture
.period_pos
= 0;
776 ua
->capture
.buffer_pos
= 0;
780 static int playback_pcm_prepare(struct snd_pcm_substream
*substream
)
782 struct ua101
*ua
= substream
->private_data
;
785 mutex_lock(&ua
->mutex
);
786 err
= start_usb_capture(ua
);
788 err
= start_usb_playback(ua
);
789 mutex_unlock(&ua
->mutex
);
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
))
799 if (!test_bit(USB_PLAYBACK_RUNNING
, &ua
->states
))
802 substream
->runtime
->delay
= 0;
803 ua
->playback
.period_pos
= 0;
804 ua
->playback
.buffer_pos
= 0;
808 static int capture_pcm_trigger(struct snd_pcm_substream
*substream
, int cmd
)
810 struct ua101
*ua
= substream
->private_data
;
813 case SNDRV_PCM_TRIGGER_START
:
814 if (!test_bit(USB_CAPTURE_RUNNING
, &ua
->states
))
816 set_bit(ALSA_CAPTURE_RUNNING
, &ua
->states
);
818 case SNDRV_PCM_TRIGGER_STOP
:
819 clear_bit(ALSA_CAPTURE_RUNNING
, &ua
->states
);
826 static int playback_pcm_trigger(struct snd_pcm_substream
*substream
, int cmd
)
828 struct ua101
*ua
= substream
->private_data
;
831 case SNDRV_PCM_TRIGGER_START
:
832 if (!test_bit(USB_PLAYBACK_RUNNING
, &ua
->states
))
834 set_bit(ALSA_PLAYBACK_RUNNING
, &ua
->states
);
836 case SNDRV_PCM_TRIGGER_STOP
:
837 clear_bit(ALSA_PLAYBACK_RUNNING
, &ua
->states
);
844 static inline snd_pcm_uframes_t
ua101_pcm_pointer(struct ua101
*ua
,
845 struct ua101_stream
*stream
)
850 spin_lock_irqsave(&ua
->lock
, flags
);
851 pos
= stream
->buffer_pos
;
852 spin_unlock_irqrestore(&ua
->lock
, flags
);
856 static snd_pcm_uframes_t
capture_pcm_pointer(struct snd_pcm_substream
*subs
)
858 struct ua101
*ua
= subs
->private_data
;
860 return ua101_pcm_pointer(ua
, &ua
->capture
);
863 static snd_pcm_uframes_t
playback_pcm_pointer(struct snd_pcm_substream
*subs
)
865 struct ua101
*ua
= subs
->private_data
;
867 return ua101_pcm_pointer(ua
, &ua
->playback
);
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
,
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
,
888 static const struct uac_format_type_i_discrete_descriptor
*
889 find_format_descriptor(struct usb_interface
*interface
)
891 struct usb_host_interface
*alt
;
895 if (interface
->num_altsetting
!= 2) {
896 dev_err(&interface
->dev
, "invalid num_altsetting\n");
900 alt
= &interface
->altsetting
[0];
901 if (alt
->desc
.bNumEndpoints
!= 0) {
902 dev_err(&interface
->dev
, "invalid bNumEndpoints\n");
906 alt
= &interface
->altsetting
[1];
907 if (alt
->desc
.bNumEndpoints
!= 1) {
908 dev_err(&interface
->dev
, "invalid bNumEndpoints\n");
913 extralen
= alt
->extralen
;
914 while (extralen
>= sizeof(struct usb_descriptor_header
)) {
915 struct uac_format_type_i_discrete_descriptor
*desc
;
917 desc
= (struct uac_format_type_i_discrete_descriptor
*)extra
;
918 if (desc
->bLength
> extralen
) {
919 dev_err(&interface
->dev
, "descriptor overflow\n");
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");
933 extralen
-= desc
->bLength
;
934 extra
+= desc
->bLength
;
936 dev_err(&interface
->dev
, "sample format descriptor not found\n");
940 static int detect_usb_format(struct ua101
*ua
)
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
;
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
)
952 switch (fmt_capture
->bSubframeSize
) {
954 ua
->format_bit
= SNDRV_PCM_FMTBIT_S24_3LE
;
957 ua
->format_bit
= SNDRV_PCM_FMTBIT_S32_LE
;
960 dev_err(&ua
->dev
->dev
, "sample width is not 24 or 32 bits\n");
963 if (fmt_capture
->bSubframeSize
!= fmt_playback
->bSubframeSize
) {
964 dev_err(&ua
->dev
->dev
,
965 "playback/capture sample widths do not match\n");
969 if (fmt_capture
->bBitResolution
!= 24 ||
970 fmt_playback
->bBitResolution
!= 24) {
971 dev_err(&ua
->dev
->dev
, "sample width is not 24 bits\n");
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",
984 switch (ua
->dev
->speed
) {
986 ua
->packets_per_second
= 1000;
989 ua
->packets_per_second
= 8000;
992 dev_err(&ua
->dev
->dev
, "unknown device speed\n");
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
;
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");
1008 ua
->capture
.usb_pipe
= usb_rcvisocpipe(ua
->dev
, usb_endpoint_num(epd
));
1009 ua
->capture
.max_packet_bytes
= usb_endpoint_maxp(epd
);
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");
1016 ua
->playback
.usb_pipe
= usb_sndisocpipe(ua
->dev
, usb_endpoint_num(epd
));
1017 ua
->playback
.max_packet_bytes
= usb_endpoint_maxp(epd
);
1021 static int alloc_stream_buffers(struct ua101
*ua
, struct ua101_stream
*stream
)
1023 unsigned int remaining_packets
, packets
, packets_per_page
, i
;
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
);
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.
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
)
1048 stream
->buffers
[i
].size
= size
;
1049 remaining_packets
-= packets
;
1050 if (!remaining_packets
)
1053 if (remaining_packets
) {
1054 dev_err(&ua
->dev
->dev
, "too many packets\n");
1060 static void free_stream_buffers(struct ua101
*ua
, struct ua101_stream
*stream
)
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
);
1071 static int alloc_stream_urbs(struct ua101
*ua
, struct ua101_stream
*stream
,
1072 void (*urb_complete
)(struct urb
*))
1074 unsigned max_packet_size
= stream
->max_packet_bytes
;
1075 struct ua101_urb
*urb
;
1076 unsigned int b
, u
= 0;
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
;
1083 while (size
>= max_packet_size
) {
1084 if (u
>= stream
->queue_length
)
1086 urb
= kmalloc(sizeof(*urb
), GFP_KERNEL
);
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
;
1108 if (u
== stream
->queue_length
)
1111 dev_err(&ua
->dev
->dev
, "internal buffer size error\n");
1115 static void free_stream_urbs(struct ua101_stream
*stream
)
1119 for (i
= 0; i
< stream
->queue_length
; ++i
) {
1120 kfree(stream
->urbs
[i
]);
1121 stream
->urbs
[i
] = NULL
;
1125 static void free_usb_related_resources(struct ua101
*ua
,
1126 struct usb_interface
*interface
)
1129 struct usb_interface
*intf
;
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
);
1138 for (i
= 0; i
< ARRAY_SIZE(ua
->intf
); ++i
) {
1139 mutex_lock(&ua
->mutex
);
1142 mutex_unlock(&ua
->mutex
);
1144 usb_set_intfdata(intf
, NULL
);
1145 if (intf
!= interface
)
1146 usb_driver_release_interface(&ua101_driver
,
1152 static void ua101_card_free(struct snd_card
*card
)
1154 struct ua101
*ua
= card
->private_data
;
1156 mutex_destroy(&ua
->mutex
);
1159 static int ua101_probe(struct usb_interface
*interface
,
1160 const struct usb_device_id
*usb_id
)
1162 static const struct snd_usb_midi_endpoint_info midi_ep
= {
1163 .out_cables
= 0x0001,
1166 static const struct snd_usb_audio_quirk midi_quirk
= {
1167 .type
= QUIRK_MIDI_FIXED_ENDPOINT
,
1170 static const int intf_numbers
[2][3] = {
1172 [INTF_PLAYBACK
] = 0,
1178 [INTF_PLAYBACK
] = 2,
1182 struct snd_card
*card
;
1184 unsigned int card_index
, i
;
1190 is_ua1000
= usb_id
->idProduct
== 0x0044;
1192 if (interface
->altsetting
->desc
.bInterfaceNumber
!=
1193 intf_numbers
[is_ua1000
][0])
1196 mutex_lock(&devices_mutex
);
1198 for (card_index
= 0; card_index
< SNDRV_CARDS
; ++card_index
)
1199 if (enable
[card_index
] && !(devices_used
& (1 << card_index
)))
1201 if (card_index
>= SNDRV_CARDS
) {
1202 mutex_unlock(&devices_mutex
);
1205 err
= snd_card_new(&interface
->dev
,
1206 index
[card_index
], id
[card_index
], THIS_MODULE
,
1207 sizeof(*ua
), &card
);
1209 mutex_unlock(&devices_mutex
);
1212 card
->private_free
= ua101_card_free
;
1213 ua
= card
->private_data
;
1214 ua
->dev
= interface_to_usbdev(interface
);
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
);
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
]);
1232 dev_err(&ua
->dev
->dev
, "interface %u not found\n",
1233 intf_numbers
[is_ua1000
][i
]);
1237 err
= usb_driver_claim_interface(&ua101_driver
,
1246 err
= detect_usb_format(ua
);
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");
1259 err
= alloc_stream_buffers(ua
, &ua
->capture
);
1262 err
= alloc_stream_buffers(ua
, &ua
->playback
);
1266 err
= alloc_stream_urbs(ua
, &ua
->capture
, capture_urb_complete
);
1269 err
= alloc_stream_urbs(ua
, &ua
->playback
, playback_urb_complete
);
1273 err
= snd_pcm_new(card
, name
, 0, 1, 1, &ua
->pcm
);
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
,
1283 err
= snd_usbmidi_create(card
, ua
->intf
[INTF_MIDI
],
1284 &ua
->midi_list
, &midi_quirk
);
1288 err
= snd_card_register(card
);
1292 usb_set_intfdata(interface
, ua
);
1293 devices_used
|= 1 << card_index
;
1295 mutex_unlock(&devices_mutex
);
1299 free_usb_related_resources(ua
, interface
);
1300 snd_card_free(card
);
1301 mutex_unlock(&devices_mutex
);
1305 static void ua101_disconnect(struct usb_interface
*interface
)
1307 struct ua101
*ua
= usb_get_intfdata(interface
);
1308 struct list_head
*midi
;
1313 mutex_lock(&devices_mutex
);
1315 set_bit(DISCONNECTED
, &ua
->states
);
1316 wake_up(&ua
->rate_feedback_wait
);
1318 /* make sure that userspace cannot create new requests */
1319 snd_card_disconnect(ua
->card
);
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
);
1331 free_usb_related_resources(ua
, interface
);
1333 devices_used
&= ~(1 << ua
->card_index
);
1335 snd_card_free_when_closed(ua
->card
);
1337 mutex_unlock(&devices_mutex
);
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 */
1346 MODULE_DEVICE_TABLE(usb
, ua101_ids
);
1348 static struct usb_driver ua101_driver
= {
1349 .name
= "snd-ua101",
1350 .id_table
= ua101_ids
,
1351 .probe
= ua101_probe
,
1352 .disconnect
= ua101_disconnect
,
1354 .suspend
= ua101_suspend
,
1355 .resume
= ua101_resume
,
1359 module_usb_driver(ua101_driver
);