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 return snd_pcm_lib_malloc_pages(substream
,
737 params_buffer_bytes(hw_params
));
740 static int playback_pcm_hw_params(struct snd_pcm_substream
*substream
,
741 struct snd_pcm_hw_params
*hw_params
)
743 struct ua101
*ua
= substream
->private_data
;
746 mutex_lock(&ua
->mutex
);
747 err
= start_usb_capture(ua
);
749 err
= start_usb_playback(ua
);
750 mutex_unlock(&ua
->mutex
);
754 return snd_pcm_lib_malloc_pages(substream
,
755 params_buffer_bytes(hw_params
));
758 static int ua101_pcm_hw_free(struct snd_pcm_substream
*substream
)
760 return snd_pcm_lib_free_pages(substream
);
763 static int capture_pcm_prepare(struct snd_pcm_substream
*substream
)
765 struct ua101
*ua
= substream
->private_data
;
768 mutex_lock(&ua
->mutex
);
769 err
= start_usb_capture(ua
);
770 mutex_unlock(&ua
->mutex
);
775 * The EHCI driver schedules the first packet of an iso stream at 10 ms
776 * in the future, i.e., no data is actually captured for that long.
777 * Take the wait here so that the stream is known to be actually
778 * running when the start trigger has been called.
780 wait_event(ua
->alsa_capture_wait
,
781 test_bit(CAPTURE_URB_COMPLETED
, &ua
->states
) ||
782 !test_bit(USB_CAPTURE_RUNNING
, &ua
->states
));
783 if (test_bit(DISCONNECTED
, &ua
->states
))
785 if (!test_bit(USB_CAPTURE_RUNNING
, &ua
->states
))
788 ua
->capture
.period_pos
= 0;
789 ua
->capture
.buffer_pos
= 0;
793 static int playback_pcm_prepare(struct snd_pcm_substream
*substream
)
795 struct ua101
*ua
= substream
->private_data
;
798 mutex_lock(&ua
->mutex
);
799 err
= start_usb_capture(ua
);
801 err
= start_usb_playback(ua
);
802 mutex_unlock(&ua
->mutex
);
806 /* see the comment in capture_pcm_prepare() */
807 wait_event(ua
->alsa_playback_wait
,
808 test_bit(PLAYBACK_URB_COMPLETED
, &ua
->states
) ||
809 !test_bit(USB_PLAYBACK_RUNNING
, &ua
->states
));
810 if (test_bit(DISCONNECTED
, &ua
->states
))
812 if (!test_bit(USB_PLAYBACK_RUNNING
, &ua
->states
))
815 substream
->runtime
->delay
= 0;
816 ua
->playback
.period_pos
= 0;
817 ua
->playback
.buffer_pos
= 0;
821 static int capture_pcm_trigger(struct snd_pcm_substream
*substream
, int cmd
)
823 struct ua101
*ua
= substream
->private_data
;
826 case SNDRV_PCM_TRIGGER_START
:
827 if (!test_bit(USB_CAPTURE_RUNNING
, &ua
->states
))
829 set_bit(ALSA_CAPTURE_RUNNING
, &ua
->states
);
831 case SNDRV_PCM_TRIGGER_STOP
:
832 clear_bit(ALSA_CAPTURE_RUNNING
, &ua
->states
);
839 static int playback_pcm_trigger(struct snd_pcm_substream
*substream
, int cmd
)
841 struct ua101
*ua
= substream
->private_data
;
844 case SNDRV_PCM_TRIGGER_START
:
845 if (!test_bit(USB_PLAYBACK_RUNNING
, &ua
->states
))
847 set_bit(ALSA_PLAYBACK_RUNNING
, &ua
->states
);
849 case SNDRV_PCM_TRIGGER_STOP
:
850 clear_bit(ALSA_PLAYBACK_RUNNING
, &ua
->states
);
857 static inline snd_pcm_uframes_t
ua101_pcm_pointer(struct ua101
*ua
,
858 struct ua101_stream
*stream
)
863 spin_lock_irqsave(&ua
->lock
, flags
);
864 pos
= stream
->buffer_pos
;
865 spin_unlock_irqrestore(&ua
->lock
, flags
);
869 static snd_pcm_uframes_t
capture_pcm_pointer(struct snd_pcm_substream
*subs
)
871 struct ua101
*ua
= subs
->private_data
;
873 return ua101_pcm_pointer(ua
, &ua
->capture
);
876 static snd_pcm_uframes_t
playback_pcm_pointer(struct snd_pcm_substream
*subs
)
878 struct ua101
*ua
= subs
->private_data
;
880 return ua101_pcm_pointer(ua
, &ua
->playback
);
883 static const struct snd_pcm_ops capture_pcm_ops
= {
884 .open
= capture_pcm_open
,
885 .close
= capture_pcm_close
,
886 .ioctl
= snd_pcm_lib_ioctl
,
887 .hw_params
= capture_pcm_hw_params
,
888 .hw_free
= ua101_pcm_hw_free
,
889 .prepare
= capture_pcm_prepare
,
890 .trigger
= capture_pcm_trigger
,
891 .pointer
= capture_pcm_pointer
,
894 static const struct snd_pcm_ops playback_pcm_ops
= {
895 .open
= playback_pcm_open
,
896 .close
= playback_pcm_close
,
897 .ioctl
= snd_pcm_lib_ioctl
,
898 .hw_params
= playback_pcm_hw_params
,
899 .hw_free
= ua101_pcm_hw_free
,
900 .prepare
= playback_pcm_prepare
,
901 .trigger
= playback_pcm_trigger
,
902 .pointer
= playback_pcm_pointer
,
905 static const struct uac_format_type_i_discrete_descriptor
*
906 find_format_descriptor(struct usb_interface
*interface
)
908 struct usb_host_interface
*alt
;
912 if (interface
->num_altsetting
!= 2) {
913 dev_err(&interface
->dev
, "invalid num_altsetting\n");
917 alt
= &interface
->altsetting
[0];
918 if (alt
->desc
.bNumEndpoints
!= 0) {
919 dev_err(&interface
->dev
, "invalid bNumEndpoints\n");
923 alt
= &interface
->altsetting
[1];
924 if (alt
->desc
.bNumEndpoints
!= 1) {
925 dev_err(&interface
->dev
, "invalid bNumEndpoints\n");
930 extralen
= alt
->extralen
;
931 while (extralen
>= sizeof(struct usb_descriptor_header
)) {
932 struct uac_format_type_i_discrete_descriptor
*desc
;
934 desc
= (struct uac_format_type_i_discrete_descriptor
*)extra
;
935 if (desc
->bLength
> extralen
) {
936 dev_err(&interface
->dev
, "descriptor overflow\n");
939 if (desc
->bLength
== UAC_FORMAT_TYPE_I_DISCRETE_DESC_SIZE(1) &&
940 desc
->bDescriptorType
== USB_DT_CS_INTERFACE
&&
941 desc
->bDescriptorSubtype
== UAC_FORMAT_TYPE
) {
942 if (desc
->bFormatType
!= UAC_FORMAT_TYPE_I_PCM
||
943 desc
->bSamFreqType
!= 1) {
944 dev_err(&interface
->dev
,
945 "invalid format type\n");
950 extralen
-= desc
->bLength
;
951 extra
+= desc
->bLength
;
953 dev_err(&interface
->dev
, "sample format descriptor not found\n");
957 static int detect_usb_format(struct ua101
*ua
)
959 const struct uac_format_type_i_discrete_descriptor
*fmt_capture
;
960 const struct uac_format_type_i_discrete_descriptor
*fmt_playback
;
961 const struct usb_endpoint_descriptor
*epd
;
964 fmt_capture
= find_format_descriptor(ua
->intf
[INTF_CAPTURE
]);
965 fmt_playback
= find_format_descriptor(ua
->intf
[INTF_PLAYBACK
]);
966 if (!fmt_capture
|| !fmt_playback
)
969 switch (fmt_capture
->bSubframeSize
) {
971 ua
->format_bit
= SNDRV_PCM_FMTBIT_S24_3LE
;
974 ua
->format_bit
= SNDRV_PCM_FMTBIT_S32_LE
;
977 dev_err(&ua
->dev
->dev
, "sample width is not 24 or 32 bits\n");
980 if (fmt_capture
->bSubframeSize
!= fmt_playback
->bSubframeSize
) {
981 dev_err(&ua
->dev
->dev
,
982 "playback/capture sample widths do not match\n");
986 if (fmt_capture
->bBitResolution
!= 24 ||
987 fmt_playback
->bBitResolution
!= 24) {
988 dev_err(&ua
->dev
->dev
, "sample width is not 24 bits\n");
992 ua
->rate
= combine_triple(fmt_capture
->tSamFreq
[0]);
993 rate2
= combine_triple(fmt_playback
->tSamFreq
[0]);
994 if (ua
->rate
!= rate2
) {
995 dev_err(&ua
->dev
->dev
,
996 "playback/capture rates do not match: %u/%u\n",
1001 switch (ua
->dev
->speed
) {
1002 case USB_SPEED_FULL
:
1003 ua
->packets_per_second
= 1000;
1005 case USB_SPEED_HIGH
:
1006 ua
->packets_per_second
= 8000;
1009 dev_err(&ua
->dev
->dev
, "unknown device speed\n");
1013 ua
->capture
.channels
= fmt_capture
->bNrChannels
;
1014 ua
->playback
.channels
= fmt_playback
->bNrChannels
;
1015 ua
->capture
.frame_bytes
=
1016 fmt_capture
->bSubframeSize
* ua
->capture
.channels
;
1017 ua
->playback
.frame_bytes
=
1018 fmt_playback
->bSubframeSize
* ua
->playback
.channels
;
1020 epd
= &ua
->intf
[INTF_CAPTURE
]->altsetting
[1].endpoint
[0].desc
;
1021 if (!usb_endpoint_is_isoc_in(epd
)) {
1022 dev_err(&ua
->dev
->dev
, "invalid capture endpoint\n");
1025 ua
->capture
.usb_pipe
= usb_rcvisocpipe(ua
->dev
, usb_endpoint_num(epd
));
1026 ua
->capture
.max_packet_bytes
= usb_endpoint_maxp(epd
);
1028 epd
= &ua
->intf
[INTF_PLAYBACK
]->altsetting
[1].endpoint
[0].desc
;
1029 if (!usb_endpoint_is_isoc_out(epd
)) {
1030 dev_err(&ua
->dev
->dev
, "invalid playback endpoint\n");
1033 ua
->playback
.usb_pipe
= usb_sndisocpipe(ua
->dev
, usb_endpoint_num(epd
));
1034 ua
->playback
.max_packet_bytes
= usb_endpoint_maxp(epd
);
1038 static int alloc_stream_buffers(struct ua101
*ua
, struct ua101_stream
*stream
)
1040 unsigned int remaining_packets
, packets
, packets_per_page
, i
;
1043 stream
->queue_length
= queue_length
;
1044 stream
->queue_length
= max(stream
->queue_length
,
1045 (unsigned int)MIN_QUEUE_LENGTH
);
1046 stream
->queue_length
= min(stream
->queue_length
,
1047 (unsigned int)MAX_QUEUE_LENGTH
);
1050 * The cache pool sizes used by usb_alloc_coherent() (128, 512, 2048) are
1051 * quite bad when used with the packet sizes of this device (e.g. 280,
1052 * 520, 624). Therefore, we allocate and subdivide entire pages, using
1053 * a smaller buffer only for the last chunk.
1055 remaining_packets
= stream
->queue_length
;
1056 packets_per_page
= PAGE_SIZE
/ stream
->max_packet_bytes
;
1057 for (i
= 0; i
< ARRAY_SIZE(stream
->buffers
); ++i
) {
1058 packets
= min(remaining_packets
, packets_per_page
);
1059 size
= packets
* stream
->max_packet_bytes
;
1060 stream
->buffers
[i
].addr
=
1061 usb_alloc_coherent(ua
->dev
, size
, GFP_KERNEL
,
1062 &stream
->buffers
[i
].dma
);
1063 if (!stream
->buffers
[i
].addr
)
1065 stream
->buffers
[i
].size
= size
;
1066 remaining_packets
-= packets
;
1067 if (!remaining_packets
)
1070 if (remaining_packets
) {
1071 dev_err(&ua
->dev
->dev
, "too many packets\n");
1077 static void free_stream_buffers(struct ua101
*ua
, struct ua101_stream
*stream
)
1081 for (i
= 0; i
< ARRAY_SIZE(stream
->buffers
); ++i
)
1082 usb_free_coherent(ua
->dev
,
1083 stream
->buffers
[i
].size
,
1084 stream
->buffers
[i
].addr
,
1085 stream
->buffers
[i
].dma
);
1088 static int alloc_stream_urbs(struct ua101
*ua
, struct ua101_stream
*stream
,
1089 void (*urb_complete
)(struct urb
*))
1091 unsigned max_packet_size
= stream
->max_packet_bytes
;
1092 struct ua101_urb
*urb
;
1093 unsigned int b
, u
= 0;
1095 for (b
= 0; b
< ARRAY_SIZE(stream
->buffers
); ++b
) {
1096 unsigned int size
= stream
->buffers
[b
].size
;
1097 u8
*addr
= stream
->buffers
[b
].addr
;
1098 dma_addr_t dma
= stream
->buffers
[b
].dma
;
1100 while (size
>= max_packet_size
) {
1101 if (u
>= stream
->queue_length
)
1103 urb
= kmalloc(sizeof(*urb
), GFP_KERNEL
);
1106 usb_init_urb(&urb
->urb
);
1107 urb
->urb
.dev
= ua
->dev
;
1108 urb
->urb
.pipe
= stream
->usb_pipe
;
1109 urb
->urb
.transfer_flags
= URB_NO_TRANSFER_DMA_MAP
;
1110 urb
->urb
.transfer_buffer
= addr
;
1111 urb
->urb
.transfer_dma
= dma
;
1112 urb
->urb
.transfer_buffer_length
= max_packet_size
;
1113 urb
->urb
.number_of_packets
= 1;
1114 urb
->urb
.interval
= 1;
1115 urb
->urb
.context
= ua
;
1116 urb
->urb
.complete
= urb_complete
;
1117 urb
->urb
.iso_frame_desc
[0].offset
= 0;
1118 urb
->urb
.iso_frame_desc
[0].length
= max_packet_size
;
1119 stream
->urbs
[u
++] = urb
;
1120 size
-= max_packet_size
;
1121 addr
+= max_packet_size
;
1122 dma
+= max_packet_size
;
1125 if (u
== stream
->queue_length
)
1128 dev_err(&ua
->dev
->dev
, "internal buffer size error\n");
1132 static void free_stream_urbs(struct ua101_stream
*stream
)
1136 for (i
= 0; i
< stream
->queue_length
; ++i
) {
1137 kfree(stream
->urbs
[i
]);
1138 stream
->urbs
[i
] = NULL
;
1142 static void free_usb_related_resources(struct ua101
*ua
,
1143 struct usb_interface
*interface
)
1146 struct usb_interface
*intf
;
1148 mutex_lock(&ua
->mutex
);
1149 free_stream_urbs(&ua
->capture
);
1150 free_stream_urbs(&ua
->playback
);
1151 mutex_unlock(&ua
->mutex
);
1152 free_stream_buffers(ua
, &ua
->capture
);
1153 free_stream_buffers(ua
, &ua
->playback
);
1155 for (i
= 0; i
< ARRAY_SIZE(ua
->intf
); ++i
) {
1156 mutex_lock(&ua
->mutex
);
1159 mutex_unlock(&ua
->mutex
);
1161 usb_set_intfdata(intf
, NULL
);
1162 if (intf
!= interface
)
1163 usb_driver_release_interface(&ua101_driver
,
1169 static void ua101_card_free(struct snd_card
*card
)
1171 struct ua101
*ua
= card
->private_data
;
1173 mutex_destroy(&ua
->mutex
);
1176 static int ua101_probe(struct usb_interface
*interface
,
1177 const struct usb_device_id
*usb_id
)
1179 static const struct snd_usb_midi_endpoint_info midi_ep
= {
1180 .out_cables
= 0x0001,
1183 static const struct snd_usb_audio_quirk midi_quirk
= {
1184 .type
= QUIRK_MIDI_FIXED_ENDPOINT
,
1187 static const int intf_numbers
[2][3] = {
1189 [INTF_PLAYBACK
] = 0,
1195 [INTF_PLAYBACK
] = 2,
1199 struct snd_card
*card
;
1201 unsigned int card_index
, i
;
1207 is_ua1000
= usb_id
->idProduct
== 0x0044;
1209 if (interface
->altsetting
->desc
.bInterfaceNumber
!=
1210 intf_numbers
[is_ua1000
][0])
1213 mutex_lock(&devices_mutex
);
1215 for (card_index
= 0; card_index
< SNDRV_CARDS
; ++card_index
)
1216 if (enable
[card_index
] && !(devices_used
& (1 << card_index
)))
1218 if (card_index
>= SNDRV_CARDS
) {
1219 mutex_unlock(&devices_mutex
);
1222 err
= snd_card_new(&interface
->dev
,
1223 index
[card_index
], id
[card_index
], THIS_MODULE
,
1224 sizeof(*ua
), &card
);
1226 mutex_unlock(&devices_mutex
);
1229 card
->private_free
= ua101_card_free
;
1230 ua
= card
->private_data
;
1231 ua
->dev
= interface_to_usbdev(interface
);
1233 ua
->card_index
= card_index
;
1234 INIT_LIST_HEAD(&ua
->midi_list
);
1235 spin_lock_init(&ua
->lock
);
1236 mutex_init(&ua
->mutex
);
1237 INIT_LIST_HEAD(&ua
->ready_playback_urbs
);
1238 tasklet_init(&ua
->playback_tasklet
,
1239 playback_tasklet
, (unsigned long)ua
);
1240 init_waitqueue_head(&ua
->alsa_capture_wait
);
1241 init_waitqueue_head(&ua
->rate_feedback_wait
);
1242 init_waitqueue_head(&ua
->alsa_playback_wait
);
1244 ua
->intf
[0] = interface
;
1245 for (i
= 1; i
< ARRAY_SIZE(ua
->intf
); ++i
) {
1246 ua
->intf
[i
] = usb_ifnum_to_if(ua
->dev
,
1247 intf_numbers
[is_ua1000
][i
]);
1249 dev_err(&ua
->dev
->dev
, "interface %u not found\n",
1250 intf_numbers
[is_ua1000
][i
]);
1254 err
= usb_driver_claim_interface(&ua101_driver
,
1263 err
= detect_usb_format(ua
);
1267 name
= usb_id
->idProduct
== 0x0044 ? "UA-1000" : "UA-101";
1268 strcpy(card
->driver
, "UA-101");
1269 strcpy(card
->shortname
, name
);
1270 usb_make_path(ua
->dev
, usb_path
, sizeof(usb_path
));
1271 snprintf(ua
->card
->longname
, sizeof(ua
->card
->longname
),
1272 "EDIROL %s (serial %s), %u Hz at %s, %s speed", name
,
1273 ua
->dev
->serial
? ua
->dev
->serial
: "?", ua
->rate
, usb_path
,
1274 ua
->dev
->speed
== USB_SPEED_HIGH
? "high" : "full");
1276 err
= alloc_stream_buffers(ua
, &ua
->capture
);
1279 err
= alloc_stream_buffers(ua
, &ua
->playback
);
1283 err
= alloc_stream_urbs(ua
, &ua
->capture
, capture_urb_complete
);
1286 err
= alloc_stream_urbs(ua
, &ua
->playback
, playback_urb_complete
);
1290 err
= snd_pcm_new(card
, name
, 0, 1, 1, &ua
->pcm
);
1293 ua
->pcm
->private_data
= ua
;
1294 strcpy(ua
->pcm
->name
, name
);
1295 snd_pcm_set_ops(ua
->pcm
, SNDRV_PCM_STREAM_PLAYBACK
, &playback_pcm_ops
);
1296 snd_pcm_set_ops(ua
->pcm
, SNDRV_PCM_STREAM_CAPTURE
, &capture_pcm_ops
);
1297 snd_pcm_lib_preallocate_pages_for_all(ua
->pcm
, SNDRV_DMA_TYPE_VMALLOC
,
1300 err
= snd_usbmidi_create(card
, ua
->intf
[INTF_MIDI
],
1301 &ua
->midi_list
, &midi_quirk
);
1305 err
= snd_card_register(card
);
1309 usb_set_intfdata(interface
, ua
);
1310 devices_used
|= 1 << card_index
;
1312 mutex_unlock(&devices_mutex
);
1316 free_usb_related_resources(ua
, interface
);
1317 snd_card_free(card
);
1318 mutex_unlock(&devices_mutex
);
1322 static void ua101_disconnect(struct usb_interface
*interface
)
1324 struct ua101
*ua
= usb_get_intfdata(interface
);
1325 struct list_head
*midi
;
1330 mutex_lock(&devices_mutex
);
1332 set_bit(DISCONNECTED
, &ua
->states
);
1333 wake_up(&ua
->rate_feedback_wait
);
1335 /* make sure that userspace cannot create new requests */
1336 snd_card_disconnect(ua
->card
);
1338 /* make sure that there are no pending USB requests */
1339 list_for_each(midi
, &ua
->midi_list
)
1340 snd_usbmidi_disconnect(midi
);
1341 abort_alsa_playback(ua
);
1342 abort_alsa_capture(ua
);
1343 mutex_lock(&ua
->mutex
);
1344 stop_usb_playback(ua
);
1345 stop_usb_capture(ua
);
1346 mutex_unlock(&ua
->mutex
);
1348 free_usb_related_resources(ua
, interface
);
1350 devices_used
&= ~(1 << ua
->card_index
);
1352 snd_card_free_when_closed(ua
->card
);
1354 mutex_unlock(&devices_mutex
);
1357 static const struct usb_device_id ua101_ids
[] = {
1358 { USB_DEVICE(0x0582, 0x0044) }, /* UA-1000 high speed */
1359 { USB_DEVICE(0x0582, 0x007d) }, /* UA-101 high speed */
1360 { USB_DEVICE(0x0582, 0x008d) }, /* UA-101 full speed */
1363 MODULE_DEVICE_TABLE(usb
, ua101_ids
);
1365 static struct usb_driver ua101_driver
= {
1366 .name
= "snd-ua101",
1367 .id_table
= ua101_ids
,
1368 .probe
= ua101_probe
,
1369 .disconnect
= ua101_disconnect
,
1371 .suspend
= ua101_suspend
,
1372 .resume
= ua101_resume
,
1376 module_usb_driver(ua101_driver
);