1 // SPDX-License-Identifier: GPL-2.0-or-later
6 #include <linux/init.h>
7 #include <linux/ratelimit.h>
9 #include <linux/usb/audio.h>
10 #include <linux/slab.h>
12 #include <sound/core.h>
13 #include <sound/pcm.h>
14 #include <sound/pcm_params.h>
30 /* interface refcounting */
31 struct snd_usb_iface_ref
{
36 struct list_head list
;
39 /* clock refcounting */
40 struct snd_usb_clock_ref
{
46 struct list_head list
;
50 * snd_usb_endpoint is a model that abstracts everything related to an
51 * USB endpoint and its streaming.
53 * There are functions to activate and deactivate the streaming URBs and
54 * optional callbacks to let the pcm logic handle the actual content of the
55 * packets for playback and record. Thus, the bus streaming and the audio
56 * handlers are fully decoupled.
58 * There are two different types of endpoints in audio applications.
60 * SND_USB_ENDPOINT_TYPE_DATA handles full audio data payload for both
61 * inbound and outbound traffic.
63 * SND_USB_ENDPOINT_TYPE_SYNC endpoints are for inbound traffic only and
64 * expect the payload to carry Q10.14 / Q16.16 formatted sync information
67 * Each endpoint has to be configured prior to being used by calling
68 * snd_usb_endpoint_set_params().
70 * The model incorporates a reference counting, so that multiple users
71 * can call snd_usb_endpoint_start() and snd_usb_endpoint_stop(), and
72 * only the first user will effectively start the URBs, and only the last
73 * one to stop it will tear the URBs down again.
77 * convert a sampling rate into our full speed format (fs/1000 in Q16.16)
78 * this will overflow at approx 524 kHz
80 static inline unsigned get_usb_full_speed_rate(unsigned int rate
)
82 return ((rate
<< 13) + 62) / 125;
86 * convert a sampling rate into USB high speed format (fs/8000 in Q16.16)
87 * this will overflow at approx 4 MHz
89 static inline unsigned get_usb_high_speed_rate(unsigned int rate
)
91 return ((rate
<< 10) + 62) / 125;
97 static void release_urb_ctx(struct snd_urb_ctx
*u
)
99 if (u
->urb
&& u
->buffer_size
)
100 usb_free_coherent(u
->ep
->chip
->dev
, u
->buffer_size
,
101 u
->urb
->transfer_buffer
,
102 u
->urb
->transfer_dma
);
103 usb_free_urb(u
->urb
);
108 static const char *usb_error_string(int err
)
114 return "endpoint not enabled";
116 return "endpoint stalled";
118 return "not enough bandwidth";
120 return "device disabled";
122 return "device suspended";
127 return "internal error";
129 return "unknown error";
133 static inline bool ep_state_running(struct snd_usb_endpoint
*ep
)
135 return atomic_read(&ep
->state
) == EP_STATE_RUNNING
;
138 static inline bool ep_state_update(struct snd_usb_endpoint
*ep
, int old
, int new)
140 return atomic_try_cmpxchg(&ep
->state
, &old
, new);
144 * snd_usb_endpoint_implicit_feedback_sink: Report endpoint usage type
146 * @ep: The snd_usb_endpoint
148 * Determine whether an endpoint is driven by an implicit feedback
149 * data endpoint source.
151 int snd_usb_endpoint_implicit_feedback_sink(struct snd_usb_endpoint
*ep
)
153 return ep
->implicit_fb_sync
&& usb_pipeout(ep
->pipe
);
157 * Return the number of samples to be sent in the next packet
158 * for streaming based on information derived from sync endpoints
160 * This won't be used for implicit feedback which takes the packet size
161 * returned from the sync source
163 static int slave_next_packet_size(struct snd_usb_endpoint
*ep
,
171 return ep
->maxframesize
;
173 spin_lock_irqsave(&ep
->lock
, flags
);
174 phase
= (ep
->phase
& 0xffff) + (ep
->freqm
<< ep
->datainterval
);
175 ret
= min(phase
>> 16, ep
->maxframesize
);
176 if (avail
&& ret
>= avail
)
180 spin_unlock_irqrestore(&ep
->lock
, flags
);
186 * Return the number of samples to be sent in the next packet
187 * for adaptive and synchronous endpoints
189 static int next_packet_size(struct snd_usb_endpoint
*ep
, unsigned int avail
)
191 unsigned int sample_accum
;
195 return ep
->maxframesize
;
197 sample_accum
= ep
->sample_accum
+ ep
->sample_rem
;
198 if (sample_accum
>= ep
->pps
) {
199 sample_accum
-= ep
->pps
;
200 ret
= ep
->packsize
[1];
202 ret
= ep
->packsize
[0];
204 if (avail
&& ret
>= avail
)
207 ep
->sample_accum
= sample_accum
;
213 * snd_usb_endpoint_next_packet_size: Return the number of samples to be sent
216 * If the size is equal or exceeds @avail, don't proceed but return -EAGAIN
217 * Exception: @avail = 0 for skipping the check.
219 int snd_usb_endpoint_next_packet_size(struct snd_usb_endpoint
*ep
,
220 struct snd_urb_ctx
*ctx
, int idx
,
225 packet
= ctx
->packet_size
[idx
];
227 if (avail
&& packet
>= avail
)
233 return slave_next_packet_size(ep
, avail
);
235 return next_packet_size(ep
, avail
);
238 static void call_retire_callback(struct snd_usb_endpoint
*ep
,
241 struct snd_usb_substream
*data_subs
;
243 data_subs
= READ_ONCE(ep
->data_subs
);
244 if (data_subs
&& ep
->retire_data_urb
)
245 ep
->retire_data_urb(data_subs
, urb
);
248 static void retire_outbound_urb(struct snd_usb_endpoint
*ep
,
249 struct snd_urb_ctx
*urb_ctx
)
251 call_retire_callback(ep
, urb_ctx
->urb
);
254 static void snd_usb_handle_sync_urb(struct snd_usb_endpoint
*ep
,
255 struct snd_usb_endpoint
*sender
,
256 const struct urb
*urb
);
258 static void retire_inbound_urb(struct snd_usb_endpoint
*ep
,
259 struct snd_urb_ctx
*urb_ctx
)
261 struct urb
*urb
= urb_ctx
->urb
;
262 struct snd_usb_endpoint
*sync_sink
;
264 if (unlikely(ep
->skip_packets
> 0)) {
269 sync_sink
= READ_ONCE(ep
->sync_sink
);
271 snd_usb_handle_sync_urb(sync_sink
, ep
, urb
);
273 call_retire_callback(ep
, urb
);
276 static inline bool has_tx_length_quirk(struct snd_usb_audio
*chip
)
278 return chip
->quirk_flags
& QUIRK_FLAG_TX_LENGTH
;
281 static void prepare_silent_urb(struct snd_usb_endpoint
*ep
,
282 struct snd_urb_ctx
*ctx
)
284 struct urb
*urb
= ctx
->urb
;
285 unsigned int offs
= 0;
286 unsigned int extra
= 0;
287 __le32 packet_length
;
290 /* For tx_length_quirk, put packet length at start of packet */
291 if (has_tx_length_quirk(ep
->chip
))
292 extra
= sizeof(packet_length
);
294 for (i
= 0; i
< ctx
->packets
; ++i
) {
299 counts
= snd_usb_endpoint_next_packet_size(ep
, ctx
, i
, 0);
300 length
= counts
* ep
->stride
; /* number of silent bytes */
301 offset
= offs
* ep
->stride
+ extra
* i
;
302 urb
->iso_frame_desc
[i
].offset
= offset
;
303 urb
->iso_frame_desc
[i
].length
= length
+ extra
;
305 packet_length
= cpu_to_le32(length
);
306 memcpy(urb
->transfer_buffer
+ offset
,
307 &packet_length
, sizeof(packet_length
));
309 memset(urb
->transfer_buffer
+ offset
+ extra
,
310 ep
->silence_value
, length
);
314 urb
->number_of_packets
= ctx
->packets
;
315 urb
->transfer_buffer_length
= offs
* ep
->stride
+ ctx
->packets
* extra
;
320 * Prepare a PLAYBACK urb for submission to the bus.
322 static int prepare_outbound_urb(struct snd_usb_endpoint
*ep
,
323 struct snd_urb_ctx
*ctx
,
326 struct urb
*urb
= ctx
->urb
;
327 unsigned char *cp
= urb
->transfer_buffer
;
328 struct snd_usb_substream
*data_subs
;
330 urb
->dev
= ep
->chip
->dev
; /* we need to set this at each time */
333 case SND_USB_ENDPOINT_TYPE_DATA
:
334 data_subs
= READ_ONCE(ep
->data_subs
);
335 if (data_subs
&& ep
->prepare_data_urb
)
336 return ep
->prepare_data_urb(data_subs
, urb
, in_stream_lock
);
337 /* no data provider, so send silence */
338 prepare_silent_urb(ep
, ctx
);
341 case SND_USB_ENDPOINT_TYPE_SYNC
:
342 if (snd_usb_get_speed(ep
->chip
->dev
) >= USB_SPEED_HIGH
) {
344 * fill the length and offset of each urb descriptor.
345 * the fixed 12.13 frequency is passed as 16.16 through the pipe.
347 urb
->iso_frame_desc
[0].length
= 4;
348 urb
->iso_frame_desc
[0].offset
= 0;
350 cp
[1] = ep
->freqn
>> 8;
351 cp
[2] = ep
->freqn
>> 16;
352 cp
[3] = ep
->freqn
>> 24;
355 * fill the length and offset of each urb descriptor.
356 * the fixed 10.14 frequency is passed through the pipe.
358 urb
->iso_frame_desc
[0].length
= 3;
359 urb
->iso_frame_desc
[0].offset
= 0;
360 cp
[0] = ep
->freqn
>> 2;
361 cp
[1] = ep
->freqn
>> 10;
362 cp
[2] = ep
->freqn
>> 18;
371 * Prepare a CAPTURE or SYNC urb for submission to the bus.
373 static int prepare_inbound_urb(struct snd_usb_endpoint
*ep
,
374 struct snd_urb_ctx
*urb_ctx
)
377 struct urb
*urb
= urb_ctx
->urb
;
379 urb
->dev
= ep
->chip
->dev
; /* we need to set this at each time */
382 case SND_USB_ENDPOINT_TYPE_DATA
:
384 for (i
= 0; i
< urb_ctx
->packets
; i
++) {
385 urb
->iso_frame_desc
[i
].offset
= offs
;
386 urb
->iso_frame_desc
[i
].length
= ep
->curpacksize
;
387 offs
+= ep
->curpacksize
;
390 urb
->transfer_buffer_length
= offs
;
391 urb
->number_of_packets
= urb_ctx
->packets
;
394 case SND_USB_ENDPOINT_TYPE_SYNC
:
395 urb
->iso_frame_desc
[0].length
= min(4u, ep
->syncmaxsize
);
396 urb
->iso_frame_desc
[0].offset
= 0;
402 /* notify an error as XRUN to the assigned PCM data substream */
403 static void notify_xrun(struct snd_usb_endpoint
*ep
)
405 struct snd_usb_substream
*data_subs
;
407 data_subs
= READ_ONCE(ep
->data_subs
);
408 if (data_subs
&& data_subs
->pcm_substream
)
409 snd_pcm_stop_xrun(data_subs
->pcm_substream
);
412 static struct snd_usb_packet_info
*
413 next_packet_fifo_enqueue(struct snd_usb_endpoint
*ep
)
415 struct snd_usb_packet_info
*p
;
417 p
= ep
->next_packet
+ (ep
->next_packet_head
+ ep
->next_packet_queued
) %
418 ARRAY_SIZE(ep
->next_packet
);
419 ep
->next_packet_queued
++;
423 static struct snd_usb_packet_info
*
424 next_packet_fifo_dequeue(struct snd_usb_endpoint
*ep
)
426 struct snd_usb_packet_info
*p
;
428 p
= ep
->next_packet
+ ep
->next_packet_head
;
429 ep
->next_packet_head
++;
430 ep
->next_packet_head
%= ARRAY_SIZE(ep
->next_packet
);
431 ep
->next_packet_queued
--;
435 static void push_back_to_ready_list(struct snd_usb_endpoint
*ep
,
436 struct snd_urb_ctx
*ctx
)
440 spin_lock_irqsave(&ep
->lock
, flags
);
441 list_add_tail(&ctx
->ready_list
, &ep
->ready_playback_urbs
);
442 spin_unlock_irqrestore(&ep
->lock
, flags
);
446 * Send output urbs that have been prepared previously. URBs are dequeued
447 * from ep->ready_playback_urbs and in case there aren't any available
448 * or there are no packets that have been prepared, this function does
451 * The reason why the functionality of sending and preparing URBs is separated
452 * is that host controllers don't guarantee the order in which they return
453 * inbound and outbound packets to their submitters.
455 * This function is used both for implicit feedback endpoints and in low-
456 * latency playback mode.
458 int snd_usb_queue_pending_output_urbs(struct snd_usb_endpoint
*ep
,
461 bool implicit_fb
= snd_usb_endpoint_implicit_feedback_sink(ep
);
463 while (ep_state_running(ep
)) {
466 struct snd_usb_packet_info
*packet
;
467 struct snd_urb_ctx
*ctx
= NULL
;
470 spin_lock_irqsave(&ep
->lock
, flags
);
471 if ((!implicit_fb
|| ep
->next_packet_queued
> 0) &&
472 !list_empty(&ep
->ready_playback_urbs
)) {
473 /* take URB out of FIFO */
474 ctx
= list_first_entry(&ep
->ready_playback_urbs
,
475 struct snd_urb_ctx
, ready_list
);
476 list_del_init(&ctx
->ready_list
);
478 packet
= next_packet_fifo_dequeue(ep
);
480 spin_unlock_irqrestore(&ep
->lock
, flags
);
485 /* copy over the length information */
487 for (i
= 0; i
< packet
->packets
; i
++)
488 ctx
->packet_size
[i
] = packet
->packet_size
[i
];
491 /* call the data handler to fill in playback data */
492 err
= prepare_outbound_urb(ep
, ctx
, in_stream_lock
);
493 /* can be stopped during prepare callback */
494 if (unlikely(!ep_state_running(ep
)))
497 /* push back to ready list again for -EAGAIN */
498 if (err
== -EAGAIN
) {
499 push_back_to_ready_list(ep
, ctx
);
508 if (!atomic_read(&ep
->chip
->shutdown
))
509 err
= usb_submit_urb(ctx
->urb
, GFP_ATOMIC
);
513 if (!atomic_read(&ep
->chip
->shutdown
)) {
514 usb_audio_err(ep
->chip
,
515 "Unable to submit urb #%d: %d at %s\n",
516 ctx
->index
, err
, __func__
);
523 set_bit(ctx
->index
, &ep
->active_mask
);
524 atomic_inc(&ep
->submitted_urbs
);
531 * complete callback for urbs
533 static void snd_complete_urb(struct urb
*urb
)
535 struct snd_urb_ctx
*ctx
= urb
->context
;
536 struct snd_usb_endpoint
*ep
= ctx
->ep
;
539 if (unlikely(urb
->status
== -ENOENT
|| /* unlinked */
540 urb
->status
== -ENODEV
|| /* device removed */
541 urb
->status
== -ECONNRESET
|| /* unlinked */
542 urb
->status
== -ESHUTDOWN
)) /* device disabled */
544 /* device disconnected */
545 if (unlikely(atomic_read(&ep
->chip
->shutdown
)))
548 if (unlikely(!ep_state_running(ep
)))
551 if (usb_pipeout(ep
->pipe
)) {
552 retire_outbound_urb(ep
, ctx
);
553 /* can be stopped during retire callback */
554 if (unlikely(!ep_state_running(ep
)))
557 /* in low-latency and implicit-feedback modes, push back the
558 * URB to ready list at first, then process as much as possible
560 if (ep
->lowlatency_playback
||
561 snd_usb_endpoint_implicit_feedback_sink(ep
)) {
562 push_back_to_ready_list(ep
, ctx
);
563 clear_bit(ctx
->index
, &ep
->active_mask
);
564 snd_usb_queue_pending_output_urbs(ep
, false);
565 atomic_dec(&ep
->submitted_urbs
); /* decrement at last */
569 /* in non-lowlatency mode, no error handling for prepare */
570 prepare_outbound_urb(ep
, ctx
, false);
571 /* can be stopped during prepare callback */
572 if (unlikely(!ep_state_running(ep
)))
575 retire_inbound_urb(ep
, ctx
);
576 /* can be stopped during retire callback */
577 if (unlikely(!ep_state_running(ep
)))
580 prepare_inbound_urb(ep
, ctx
);
583 if (!atomic_read(&ep
->chip
->shutdown
))
584 err
= usb_submit_urb(urb
, GFP_ATOMIC
);
590 if (!atomic_read(&ep
->chip
->shutdown
)) {
591 usb_audio_err(ep
->chip
, "cannot submit urb (err = %d)\n", err
);
596 clear_bit(ctx
->index
, &ep
->active_mask
);
597 atomic_dec(&ep
->submitted_urbs
);
601 * Find or create a refcount object for the given interface
603 * The objects are released altogether in snd_usb_endpoint_free_all()
605 static struct snd_usb_iface_ref
*
606 iface_ref_find(struct snd_usb_audio
*chip
, int iface
)
608 struct snd_usb_iface_ref
*ip
;
610 list_for_each_entry(ip
, &chip
->iface_ref_list
, list
)
611 if (ip
->iface
== iface
)
614 ip
= kzalloc(sizeof(*ip
), GFP_KERNEL
);
618 list_add_tail(&ip
->list
, &chip
->iface_ref_list
);
622 /* Similarly, a refcount object for clock */
623 static struct snd_usb_clock_ref
*
624 clock_ref_find(struct snd_usb_audio
*chip
, int clock
)
626 struct snd_usb_clock_ref
*ref
;
628 list_for_each_entry(ref
, &chip
->clock_ref_list
, list
)
629 if (ref
->clock
== clock
)
632 ref
= kzalloc(sizeof(*ref
), GFP_KERNEL
);
636 atomic_set(&ref
->locked
, 0);
637 list_add_tail(&ref
->list
, &chip
->clock_ref_list
);
642 * Get the existing endpoint object corresponding EP
643 * Returns NULL if not present.
645 struct snd_usb_endpoint
*
646 snd_usb_get_endpoint(struct snd_usb_audio
*chip
, int ep_num
)
648 struct snd_usb_endpoint
*ep
;
650 list_for_each_entry(ep
, &chip
->ep_list
, list
) {
651 if (ep
->ep_num
== ep_num
)
658 #define ep_type_name(type) \
659 (type == SND_USB_ENDPOINT_TYPE_DATA ? "data" : "sync")
662 * snd_usb_add_endpoint: Add an endpoint to an USB audio chip
665 * @ep_num: The number of the endpoint to use
666 * @type: SND_USB_ENDPOINT_TYPE_DATA or SND_USB_ENDPOINT_TYPE_SYNC
668 * If the requested endpoint has not been added to the given chip before,
669 * a new instance is created.
671 * Returns zero on success or a negative error code.
673 * New endpoints will be added to chip->ep_list and freed by
674 * calling snd_usb_endpoint_free_all().
676 * For SND_USB_ENDPOINT_TYPE_SYNC, the caller needs to guarantee that
677 * bNumEndpoints > 1 beforehand.
679 int snd_usb_add_endpoint(struct snd_usb_audio
*chip
, int ep_num
, int type
)
681 struct snd_usb_endpoint
*ep
;
684 ep
= snd_usb_get_endpoint(chip
, ep_num
);
688 usb_audio_dbg(chip
, "Creating new %s endpoint #%x\n",
691 ep
= kzalloc(sizeof(*ep
), GFP_KERNEL
);
696 spin_lock_init(&ep
->lock
);
699 INIT_LIST_HEAD(&ep
->ready_playback_urbs
);
700 atomic_set(&ep
->submitted_urbs
, 0);
702 is_playback
= ((ep_num
& USB_ENDPOINT_DIR_MASK
) == USB_DIR_OUT
);
703 ep_num
&= USB_ENDPOINT_NUMBER_MASK
;
705 ep
->pipe
= usb_sndisocpipe(chip
->dev
, ep_num
);
707 ep
->pipe
= usb_rcvisocpipe(chip
->dev
, ep_num
);
709 list_add_tail(&ep
->list
, &chip
->ep_list
);
713 /* Set up syncinterval and maxsyncsize for a sync EP */
714 static void endpoint_set_syncinterval(struct snd_usb_audio
*chip
,
715 struct snd_usb_endpoint
*ep
)
717 struct usb_host_interface
*alts
;
718 struct usb_endpoint_descriptor
*desc
;
720 alts
= snd_usb_get_host_interface(chip
, ep
->iface
, ep
->altsetting
);
724 desc
= get_endpoint(alts
, ep
->ep_idx
);
725 if (desc
->bLength
>= USB_DT_ENDPOINT_AUDIO_SIZE
&&
726 desc
->bRefresh
>= 1 && desc
->bRefresh
<= 9)
727 ep
->syncinterval
= desc
->bRefresh
;
728 else if (snd_usb_get_speed(chip
->dev
) == USB_SPEED_FULL
)
729 ep
->syncinterval
= 1;
730 else if (desc
->bInterval
>= 1 && desc
->bInterval
<= 16)
731 ep
->syncinterval
= desc
->bInterval
- 1;
733 ep
->syncinterval
= 3;
735 ep
->syncmaxsize
= le16_to_cpu(desc
->wMaxPacketSize
);
738 static bool endpoint_compatible(struct snd_usb_endpoint
*ep
,
739 const struct audioformat
*fp
,
740 const struct snd_pcm_hw_params
*params
)
744 if (ep
->cur_audiofmt
!= fp
)
746 if (ep
->cur_rate
!= params_rate(params
) ||
747 ep
->cur_format
!= params_format(params
) ||
748 ep
->cur_period_frames
!= params_period_size(params
) ||
749 ep
->cur_buffer_periods
!= params_periods(params
))
755 * Check whether the given fp and hw params are compatible with the current
756 * setup of the target EP for implicit feedback sync
758 bool snd_usb_endpoint_compatible(struct snd_usb_audio
*chip
,
759 struct snd_usb_endpoint
*ep
,
760 const struct audioformat
*fp
,
761 const struct snd_pcm_hw_params
*params
)
765 mutex_lock(&chip
->mutex
);
766 ret
= endpoint_compatible(ep
, fp
, params
);
767 mutex_unlock(&chip
->mutex
);
772 * snd_usb_endpoint_open: Open the endpoint
774 * Called from hw_params to assign the endpoint to the substream.
775 * It's reference-counted, and only the first opener is allowed to set up
776 * arbitrary parameters. The later opener must be compatible with the
777 * former opened parameters.
778 * The endpoint needs to be closed via snd_usb_endpoint_close() later.
780 * Note that this function doesn't configure the endpoint. The substream
781 * needs to set it up later via snd_usb_endpoint_set_params() and
782 * snd_usb_endpoint_prepare().
784 struct snd_usb_endpoint
*
785 snd_usb_endpoint_open(struct snd_usb_audio
*chip
,
786 const struct audioformat
*fp
,
787 const struct snd_pcm_hw_params
*params
,
791 struct snd_usb_endpoint
*ep
;
792 int ep_num
= is_sync_ep
? fp
->sync_ep
: fp
->endpoint
;
794 mutex_lock(&chip
->mutex
);
795 ep
= snd_usb_get_endpoint(chip
, ep_num
);
797 usb_audio_err(chip
, "Cannot find EP 0x%x to open\n", ep_num
);
803 ep
->iface
= fp
->sync_iface
;
804 ep
->altsetting
= fp
->sync_altsetting
;
805 ep
->ep_idx
= fp
->sync_ep_idx
;
807 ep
->iface
= fp
->iface
;
808 ep
->altsetting
= fp
->altsetting
;
809 ep
->ep_idx
= fp
->ep_idx
;
811 usb_audio_dbg(chip
, "Open EP 0x%x, iface=%d:%d, idx=%d\n",
812 ep_num
, ep
->iface
, ep
->altsetting
, ep
->ep_idx
);
814 ep
->iface_ref
= iface_ref_find(chip
, ep
->iface
);
815 if (!ep
->iface_ref
) {
820 if (fp
->protocol
!= UAC_VERSION_1
) {
821 ep
->clock_ref
= clock_ref_find(chip
, fp
->clock
);
822 if (!ep
->clock_ref
) {
826 ep
->clock_ref
->opened
++;
829 ep
->cur_audiofmt
= fp
;
830 ep
->cur_channels
= fp
->channels
;
831 ep
->cur_rate
= params_rate(params
);
832 ep
->cur_format
= params_format(params
);
833 ep
->cur_frame_bytes
= snd_pcm_format_physical_width(ep
->cur_format
) *
834 ep
->cur_channels
/ 8;
835 ep
->cur_period_frames
= params_period_size(params
);
836 ep
->cur_period_bytes
= ep
->cur_period_frames
* ep
->cur_frame_bytes
;
837 ep
->cur_buffer_periods
= params_periods(params
);
839 if (ep
->type
== SND_USB_ENDPOINT_TYPE_SYNC
)
840 endpoint_set_syncinterval(chip
, ep
);
842 ep
->implicit_fb_sync
= fp
->implicit_fb
;
843 ep
->need_setup
= true;
844 ep
->need_prepare
= true;
845 ep
->fixed_rate
= fixed_rate
;
847 usb_audio_dbg(chip
, " channels=%d, rate=%d, format=%s, period_bytes=%d, periods=%d, implicit_fb=%d\n",
848 ep
->cur_channels
, ep
->cur_rate
,
849 snd_pcm_format_name(ep
->cur_format
),
850 ep
->cur_period_bytes
, ep
->cur_buffer_periods
,
851 ep
->implicit_fb_sync
);
854 if (WARN_ON(!ep
->iface_ref
)) {
859 if (!endpoint_compatible(ep
, fp
, params
)) {
860 usb_audio_err(chip
, "Incompatible EP setup for 0x%x\n",
866 usb_audio_dbg(chip
, "Reopened EP 0x%x (count %d)\n",
870 if (!ep
->iface_ref
->opened
++)
871 ep
->iface_ref
->need_setup
= true;
876 mutex_unlock(&chip
->mutex
);
881 * snd_usb_endpoint_set_sync: Link data and sync endpoints
883 * Pass NULL to sync_ep to unlink again
885 void snd_usb_endpoint_set_sync(struct snd_usb_audio
*chip
,
886 struct snd_usb_endpoint
*data_ep
,
887 struct snd_usb_endpoint
*sync_ep
)
889 data_ep
->sync_source
= sync_ep
;
893 * Set data endpoint callbacks and the assigned data stream
895 * Called at PCM trigger and cleanups.
896 * Pass NULL to deactivate each callback.
898 void snd_usb_endpoint_set_callback(struct snd_usb_endpoint
*ep
,
899 int (*prepare
)(struct snd_usb_substream
*subs
,
901 bool in_stream_lock
),
902 void (*retire
)(struct snd_usb_substream
*subs
,
904 struct snd_usb_substream
*data_subs
)
906 ep
->prepare_data_urb
= prepare
;
907 ep
->retire_data_urb
= retire
;
909 ep
->lowlatency_playback
= data_subs
->lowlatency_playback
;
911 ep
->lowlatency_playback
= false;
912 WRITE_ONCE(ep
->data_subs
, data_subs
);
915 static int endpoint_set_interface(struct snd_usb_audio
*chip
,
916 struct snd_usb_endpoint
*ep
,
919 int altset
= set
? ep
->altsetting
: 0;
922 if (ep
->iface_ref
->altset
== altset
)
924 /* already disconnected? */
925 if (unlikely(atomic_read(&chip
->shutdown
)))
928 usb_audio_dbg(chip
, "Setting usb interface %d:%d for EP 0x%x\n",
929 ep
->iface
, altset
, ep
->ep_num
);
930 err
= usb_set_interface(chip
->dev
, ep
->iface
, altset
);
932 usb_audio_err_ratelimited(
933 chip
, "%d:%d: usb_set_interface failed (%d)\n",
934 ep
->iface
, altset
, err
);
938 if (chip
->quirk_flags
& QUIRK_FLAG_IFACE_DELAY
)
940 ep
->iface_ref
->altset
= altset
;
945 * snd_usb_endpoint_close: Close the endpoint
947 * Unreference the already opened endpoint via snd_usb_endpoint_open().
949 void snd_usb_endpoint_close(struct snd_usb_audio
*chip
,
950 struct snd_usb_endpoint
*ep
)
952 mutex_lock(&chip
->mutex
);
953 usb_audio_dbg(chip
, "Closing EP 0x%x (count %d)\n",
954 ep
->ep_num
, ep
->opened
);
956 if (!--ep
->iface_ref
->opened
&&
957 !(chip
->quirk_flags
& QUIRK_FLAG_IFACE_SKIP_CLOSE
))
958 endpoint_set_interface(chip
, ep
, false);
962 if (!--ep
->clock_ref
->opened
)
963 ep
->clock_ref
->rate
= 0;
967 ep
->cur_audiofmt
= NULL
;
969 ep
->iface_ref
= NULL
;
970 ep
->clock_ref
= NULL
;
971 usb_audio_dbg(chip
, "EP 0x%x closed\n", ep
->ep_num
);
973 mutex_unlock(&chip
->mutex
);
976 /* Prepare for suspening EP, called from the main suspend handler */
977 void snd_usb_endpoint_suspend(struct snd_usb_endpoint
*ep
)
979 ep
->need_prepare
= true;
981 ep
->iface_ref
->need_setup
= true;
983 ep
->clock_ref
->rate
= 0;
987 * wait until all urbs are processed.
989 static int wait_clear_urbs(struct snd_usb_endpoint
*ep
)
991 unsigned long end_time
= jiffies
+ msecs_to_jiffies(1000);
994 if (atomic_read(&ep
->state
) != EP_STATE_STOPPING
)
998 alive
= atomic_read(&ep
->submitted_urbs
);
1002 schedule_timeout_uninterruptible(1);
1003 } while (time_before(jiffies
, end_time
));
1006 usb_audio_err(ep
->chip
,
1007 "timeout: still %d active urbs on EP #%x\n",
1010 if (ep_state_update(ep
, EP_STATE_STOPPING
, EP_STATE_STOPPED
)) {
1011 ep
->sync_sink
= NULL
;
1012 snd_usb_endpoint_set_callback(ep
, NULL
, NULL
, NULL
);
1018 /* sync the pending stop operation;
1019 * this function itself doesn't trigger the stop operation
1021 void snd_usb_endpoint_sync_pending_stop(struct snd_usb_endpoint
*ep
)
1024 wait_clear_urbs(ep
);
1030 * This function moves the EP to STOPPING state if it's being RUNNING.
1032 static int stop_urbs(struct snd_usb_endpoint
*ep
, bool force
, bool keep_pending
)
1035 unsigned long flags
;
1037 if (!force
&& atomic_read(&ep
->running
))
1040 if (!ep_state_update(ep
, EP_STATE_RUNNING
, EP_STATE_STOPPING
))
1043 spin_lock_irqsave(&ep
->lock
, flags
);
1044 INIT_LIST_HEAD(&ep
->ready_playback_urbs
);
1045 ep
->next_packet_head
= 0;
1046 ep
->next_packet_queued
= 0;
1047 spin_unlock_irqrestore(&ep
->lock
, flags
);
1052 for (i
= 0; i
< ep
->nurbs
; i
++) {
1053 if (test_bit(i
, &ep
->active_mask
)) {
1054 if (!test_and_set_bit(i
, &ep
->unlink_mask
)) {
1055 struct urb
*u
= ep
->urb
[i
].urb
;
1065 * release an endpoint's urbs
1067 static int release_urbs(struct snd_usb_endpoint
*ep
, bool force
)
1071 /* route incoming urbs to nirvana */
1072 snd_usb_endpoint_set_callback(ep
, NULL
, NULL
, NULL
);
1074 /* stop and unlink urbs */
1075 err
= stop_urbs(ep
, force
, false);
1079 wait_clear_urbs(ep
);
1081 for (i
= 0; i
< ep
->nurbs
; i
++)
1082 release_urb_ctx(&ep
->urb
[i
]);
1084 usb_free_coherent(ep
->chip
->dev
, SYNC_URBS
* 4,
1085 ep
->syncbuf
, ep
->sync_dma
);
1093 * configure a data endpoint
1095 static int data_ep_set_params(struct snd_usb_endpoint
*ep
)
1097 struct snd_usb_audio
*chip
= ep
->chip
;
1098 unsigned int maxsize
, minsize
, packs_per_ms
, max_packs_per_urb
;
1099 unsigned int max_packs_per_period
, urbs_per_period
, urb_packs
;
1100 unsigned int max_urbs
, i
;
1101 const struct audioformat
*fmt
= ep
->cur_audiofmt
;
1102 int frame_bits
= ep
->cur_frame_bytes
* 8;
1103 int tx_length_quirk
= (has_tx_length_quirk(chip
) &&
1104 usb_pipeout(ep
->pipe
));
1106 usb_audio_dbg(chip
, "Setting params for data EP 0x%x, pipe 0x%x\n",
1107 ep
->ep_num
, ep
->pipe
);
1109 if (ep
->cur_format
== SNDRV_PCM_FORMAT_DSD_U16_LE
&& fmt
->dsd_dop
) {
1111 * When operating in DSD DOP mode, the size of a sample frame
1112 * in hardware differs from the actual physical format width
1113 * because we need to make room for the DOP markers.
1115 frame_bits
+= ep
->cur_channels
<< 3;
1118 ep
->datainterval
= fmt
->datainterval
;
1119 ep
->stride
= frame_bits
>> 3;
1121 switch (ep
->cur_format
) {
1122 case SNDRV_PCM_FORMAT_U8
:
1123 ep
->silence_value
= 0x80;
1125 case SNDRV_PCM_FORMAT_DSD_U8
:
1126 case SNDRV_PCM_FORMAT_DSD_U16_LE
:
1127 case SNDRV_PCM_FORMAT_DSD_U32_LE
:
1128 case SNDRV_PCM_FORMAT_DSD_U16_BE
:
1129 case SNDRV_PCM_FORMAT_DSD_U32_BE
:
1130 ep
->silence_value
= 0x69;
1133 ep
->silence_value
= 0;
1136 /* assume max. frequency is 50% higher than nominal */
1137 ep
->freqmax
= ep
->freqn
+ (ep
->freqn
>> 1);
1138 /* Round up freqmax to nearest integer in order to calculate maximum
1139 * packet size, which must represent a whole number of frames.
1140 * This is accomplished by adding 0x0.ffff before converting the
1141 * Q16.16 format into integer.
1142 * In order to accurately calculate the maximum packet size when
1143 * the data interval is more than 1 (i.e. ep->datainterval > 0),
1144 * multiply by the data interval prior to rounding. For instance,
1145 * a freqmax of 41 kHz will result in a max packet size of 6 (5.125)
1146 * frames with a data interval of 1, but 11 (10.25) frames with a
1147 * data interval of 2.
1148 * (ep->freqmax << ep->datainterval overflows at 8.192 MHz for the
1149 * maximum datainterval value of 3, at USB full speed, higher for
1150 * USB high speed, noting that ep->freqmax is in units of
1151 * frames per packet in Q16.16 format.)
1153 maxsize
= (((ep
->freqmax
<< ep
->datainterval
) + 0xffff) >> 16) *
1155 if (tx_length_quirk
)
1156 maxsize
+= sizeof(__le32
); /* Space for length descriptor */
1157 /* but wMaxPacketSize might reduce this */
1158 if (ep
->maxpacksize
&& ep
->maxpacksize
< maxsize
) {
1159 /* whatever fits into a max. size packet */
1160 unsigned int data_maxsize
= maxsize
= ep
->maxpacksize
;
1162 if (tx_length_quirk
)
1163 /* Need to remove the length descriptor to calc freq */
1164 data_maxsize
-= sizeof(__le32
);
1165 ep
->freqmax
= (data_maxsize
/ (frame_bits
>> 3))
1166 << (16 - ep
->datainterval
);
1170 ep
->curpacksize
= ep
->maxpacksize
;
1172 ep
->curpacksize
= maxsize
;
1174 if (snd_usb_get_speed(chip
->dev
) != USB_SPEED_FULL
) {
1175 packs_per_ms
= 8 >> ep
->datainterval
;
1176 max_packs_per_urb
= MAX_PACKS_HS
;
1179 max_packs_per_urb
= MAX_PACKS
;
1181 if (ep
->sync_source
&& !ep
->implicit_fb_sync
)
1182 max_packs_per_urb
= min(max_packs_per_urb
,
1183 1U << ep
->sync_source
->syncinterval
);
1184 max_packs_per_urb
= max(1u, max_packs_per_urb
>> ep
->datainterval
);
1187 * Capture endpoints need to use small URBs because there's no way
1188 * to tell in advance where the next period will end, and we don't
1189 * want the next URB to complete much after the period ends.
1191 * Playback endpoints with implicit sync much use the same parameters
1192 * as their corresponding capture endpoint.
1194 if (usb_pipein(ep
->pipe
) || ep
->implicit_fb_sync
) {
1196 /* make capture URBs <= 1 ms and smaller than a period */
1197 urb_packs
= min(max_packs_per_urb
, packs_per_ms
);
1198 while (urb_packs
> 1 && urb_packs
* maxsize
>= ep
->cur_period_bytes
)
1200 ep
->nurbs
= MAX_URBS
;
1203 * Playback endpoints without implicit sync are adjusted so that
1204 * a period fits as evenly as possible in the smallest number of
1205 * URBs. The total number of URBs is adjusted to the size of the
1206 * ALSA buffer, subject to the MAX_URBS and MAX_QUEUE limits.
1209 /* determine how small a packet can be */
1210 minsize
= (ep
->freqn
>> (16 - ep
->datainterval
)) *
1212 /* with sync from device, assume it can be 12% lower */
1213 if (ep
->sync_source
)
1214 minsize
-= minsize
>> 3;
1215 minsize
= max(minsize
, 1u);
1217 /* how many packets will contain an entire ALSA period? */
1218 max_packs_per_period
= DIV_ROUND_UP(ep
->cur_period_bytes
, minsize
);
1220 /* how many URBs will contain a period? */
1221 urbs_per_period
= DIV_ROUND_UP(max_packs_per_period
,
1223 /* how many packets are needed in each URB? */
1224 urb_packs
= DIV_ROUND_UP(max_packs_per_period
, urbs_per_period
);
1226 /* limit the number of frames in a single URB */
1227 ep
->max_urb_frames
= DIV_ROUND_UP(ep
->cur_period_frames
,
1230 /* try to use enough URBs to contain an entire ALSA buffer */
1231 max_urbs
= min((unsigned) MAX_URBS
,
1232 MAX_QUEUE
* packs_per_ms
/ urb_packs
);
1233 ep
->nurbs
= min(max_urbs
, urbs_per_period
* ep
->cur_buffer_periods
);
1236 /* allocate and initialize data urbs */
1237 for (i
= 0; i
< ep
->nurbs
; i
++) {
1238 struct snd_urb_ctx
*u
= &ep
->urb
[i
];
1241 u
->packets
= urb_packs
;
1242 u
->buffer_size
= maxsize
* u
->packets
;
1244 if (fmt
->fmt_type
== UAC_FORMAT_TYPE_II
)
1245 u
->packets
++; /* for transfer delimiter */
1246 u
->urb
= usb_alloc_urb(u
->packets
, GFP_KERNEL
);
1250 u
->urb
->transfer_buffer
=
1251 usb_alloc_coherent(chip
->dev
, u
->buffer_size
,
1252 GFP_KERNEL
, &u
->urb
->transfer_dma
);
1253 if (!u
->urb
->transfer_buffer
)
1255 u
->urb
->pipe
= ep
->pipe
;
1256 u
->urb
->transfer_flags
= URB_NO_TRANSFER_DMA_MAP
;
1257 u
->urb
->interval
= 1 << ep
->datainterval
;
1258 u
->urb
->context
= u
;
1259 u
->urb
->complete
= snd_complete_urb
;
1260 INIT_LIST_HEAD(&u
->ready_list
);
1266 release_urbs(ep
, false);
1271 * configure a sync endpoint
1273 static int sync_ep_set_params(struct snd_usb_endpoint
*ep
)
1275 struct snd_usb_audio
*chip
= ep
->chip
;
1278 usb_audio_dbg(chip
, "Setting params for sync EP 0x%x, pipe 0x%x\n",
1279 ep
->ep_num
, ep
->pipe
);
1281 ep
->syncbuf
= usb_alloc_coherent(chip
->dev
, SYNC_URBS
* 4,
1282 GFP_KERNEL
, &ep
->sync_dma
);
1286 ep
->nurbs
= SYNC_URBS
;
1287 for (i
= 0; i
< SYNC_URBS
; i
++) {
1288 struct snd_urb_ctx
*u
= &ep
->urb
[i
];
1292 u
->urb
= usb_alloc_urb(1, GFP_KERNEL
);
1295 u
->urb
->transfer_buffer
= ep
->syncbuf
+ i
* 4;
1296 u
->urb
->transfer_dma
= ep
->sync_dma
+ i
* 4;
1297 u
->urb
->transfer_buffer_length
= 4;
1298 u
->urb
->pipe
= ep
->pipe
;
1299 u
->urb
->transfer_flags
= URB_NO_TRANSFER_DMA_MAP
;
1300 u
->urb
->number_of_packets
= 1;
1301 u
->urb
->interval
= 1 << ep
->syncinterval
;
1302 u
->urb
->context
= u
;
1303 u
->urb
->complete
= snd_complete_urb
;
1309 release_urbs(ep
, false);
1313 /* update the rate of the referred clock; return the actual rate */
1314 static int update_clock_ref_rate(struct snd_usb_audio
*chip
,
1315 struct snd_usb_endpoint
*ep
)
1317 struct snd_usb_clock_ref
*clock
= ep
->clock_ref
;
1318 int rate
= ep
->cur_rate
;
1320 if (!clock
|| clock
->rate
== rate
)
1323 if (atomic_read(&clock
->locked
))
1325 if (clock
->rate
!= rate
) {
1326 usb_audio_err(chip
, "Mismatched sample rate %d vs %d for EP 0x%x\n",
1327 clock
->rate
, rate
, ep
->ep_num
);
1332 clock
->need_setup
= true;
1337 * snd_usb_endpoint_set_params: configure an snd_usb_endpoint
1339 * It's called either from hw_params callback.
1340 * Determine the number of URBs to be used on this endpoint.
1341 * An endpoint must be configured before it can be started.
1342 * An endpoint that is already running can not be reconfigured.
1344 int snd_usb_endpoint_set_params(struct snd_usb_audio
*chip
,
1345 struct snd_usb_endpoint
*ep
)
1347 const struct audioformat
*fmt
= ep
->cur_audiofmt
;
1350 mutex_lock(&chip
->mutex
);
1351 if (!ep
->need_setup
)
1354 /* release old buffers, if any */
1355 err
= release_urbs(ep
, false);
1359 ep
->datainterval
= fmt
->datainterval
;
1360 ep
->maxpacksize
= fmt
->maxpacksize
;
1361 ep
->fill_max
= !!(fmt
->attributes
& UAC_EP_CS_ATTR_FILL_MAX
);
1363 if (snd_usb_get_speed(chip
->dev
) == USB_SPEED_FULL
) {
1364 ep
->freqn
= get_usb_full_speed_rate(ep
->cur_rate
);
1365 ep
->pps
= 1000 >> ep
->datainterval
;
1367 ep
->freqn
= get_usb_high_speed_rate(ep
->cur_rate
);
1368 ep
->pps
= 8000 >> ep
->datainterval
;
1371 ep
->sample_rem
= ep
->cur_rate
% ep
->pps
;
1372 ep
->packsize
[0] = ep
->cur_rate
/ ep
->pps
;
1373 ep
->packsize
[1] = (ep
->cur_rate
+ (ep
->pps
- 1)) / ep
->pps
;
1375 /* calculate the frequency in 16.16 format */
1376 ep
->freqm
= ep
->freqn
;
1377 ep
->freqshift
= INT_MIN
;
1382 case SND_USB_ENDPOINT_TYPE_DATA
:
1383 err
= data_ep_set_params(ep
);
1385 case SND_USB_ENDPOINT_TYPE_SYNC
:
1386 err
= sync_ep_set_params(ep
);
1392 usb_audio_dbg(chip
, "Set up %d URBS, ret=%d\n", ep
->nurbs
, err
);
1397 /* some unit conversions in runtime */
1398 ep
->maxframesize
= ep
->maxpacksize
/ ep
->cur_frame_bytes
;
1399 ep
->curframesize
= ep
->curpacksize
/ ep
->cur_frame_bytes
;
1401 err
= update_clock_ref_rate(chip
, ep
);
1403 ep
->need_setup
= false;
1408 mutex_unlock(&chip
->mutex
);
1412 static int init_sample_rate(struct snd_usb_audio
*chip
,
1413 struct snd_usb_endpoint
*ep
)
1415 struct snd_usb_clock_ref
*clock
= ep
->clock_ref
;
1418 rate
= update_clock_ref_rate(chip
, ep
);
1421 if (clock
&& !clock
->need_setup
)
1424 if (!ep
->fixed_rate
) {
1425 err
= snd_usb_init_sample_rate(chip
, ep
->cur_audiofmt
, rate
);
1428 clock
->rate
= 0; /* reset rate */
1434 clock
->need_setup
= false;
1439 * snd_usb_endpoint_prepare: Prepare the endpoint
1441 * This function sets up the EP to be fully usable state.
1442 * It's called either from prepare callback.
1443 * The function checks need_setup flag, and performs nothing unless needed,
1444 * so it's safe to call this multiple times.
1446 * This returns zero if unchanged, 1 if the configuration has changed,
1447 * or a negative error code.
1449 int snd_usb_endpoint_prepare(struct snd_usb_audio
*chip
,
1450 struct snd_usb_endpoint
*ep
)
1455 mutex_lock(&chip
->mutex
);
1456 if (WARN_ON(!ep
->iface_ref
))
1458 if (!ep
->need_prepare
)
1461 /* If the interface has been already set up, just set EP parameters */
1462 if (!ep
->iface_ref
->need_setup
) {
1463 /* sample rate setup of UAC1 is per endpoint, and we need
1464 * to update at each EP configuration
1466 if (ep
->cur_audiofmt
->protocol
== UAC_VERSION_1
) {
1467 err
= init_sample_rate(chip
, ep
);
1474 /* Need to deselect altsetting at first */
1475 endpoint_set_interface(chip
, ep
, false);
1477 /* Some UAC1 devices (e.g. Yamaha THR10) need the host interface
1478 * to be set up before parameter setups
1480 iface_first
= ep
->cur_audiofmt
->protocol
== UAC_VERSION_1
;
1481 /* Workaround for devices that require the interface setup at first like UAC1 */
1482 if (chip
->quirk_flags
& QUIRK_FLAG_SET_IFACE_FIRST
)
1485 err
= endpoint_set_interface(chip
, ep
, true);
1490 err
= snd_usb_init_pitch(chip
, ep
->cur_audiofmt
);
1494 err
= init_sample_rate(chip
, ep
);
1498 err
= snd_usb_select_mode_quirk(chip
, ep
->cur_audiofmt
);
1502 /* for UAC2/3, enable the interface altset here at last */
1504 err
= endpoint_set_interface(chip
, ep
, true);
1509 ep
->iface_ref
->need_setup
= false;
1512 ep
->need_prepare
= false;
1516 mutex_unlock(&chip
->mutex
);
1520 /* get the current rate set to the given clock by any endpoint */
1521 int snd_usb_endpoint_get_clock_rate(struct snd_usb_audio
*chip
, int clock
)
1523 struct snd_usb_clock_ref
*ref
;
1528 mutex_lock(&chip
->mutex
);
1529 list_for_each_entry(ref
, &chip
->clock_ref_list
, list
) {
1530 if (ref
->clock
== clock
) {
1535 mutex_unlock(&chip
->mutex
);
1540 * snd_usb_endpoint_start: start an snd_usb_endpoint
1542 * @ep: the endpoint to start
1544 * A call to this function will increment the running count of the endpoint.
1545 * In case it is not already running, the URBs for this endpoint will be
1546 * submitted. Otherwise, this function does nothing.
1548 * Must be balanced to calls of snd_usb_endpoint_stop().
1550 * Returns an error if the URB submission failed, 0 in all other cases.
1552 int snd_usb_endpoint_start(struct snd_usb_endpoint
*ep
)
1554 bool is_playback
= usb_pipeout(ep
->pipe
);
1558 if (atomic_read(&ep
->chip
->shutdown
))
1561 if (ep
->sync_source
)
1562 WRITE_ONCE(ep
->sync_source
->sync_sink
, ep
);
1564 usb_audio_dbg(ep
->chip
, "Starting %s EP 0x%x (running %d)\n",
1565 ep_type_name(ep
->type
), ep
->ep_num
,
1566 atomic_read(&ep
->running
));
1568 /* already running? */
1569 if (atomic_inc_return(&ep
->running
) != 1)
1573 atomic_inc(&ep
->clock_ref
->locked
);
1575 ep
->active_mask
= 0;
1576 ep
->unlink_mask
= 0;
1578 ep
->sample_accum
= 0;
1580 snd_usb_endpoint_start_quirk(ep
);
1583 * If this endpoint has a data endpoint as implicit feedback source,
1584 * don't start the urbs here. Instead, mark them all as available,
1585 * wait for the record urbs to return and queue the playback urbs
1586 * from that context.
1589 if (!ep_state_update(ep
, EP_STATE_STOPPED
, EP_STATE_RUNNING
))
1592 if (snd_usb_endpoint_implicit_feedback_sink(ep
) &&
1593 !(ep
->chip
->quirk_flags
& QUIRK_FLAG_PLAYBACK_FIRST
)) {
1594 usb_audio_dbg(ep
->chip
, "No URB submission due to implicit fb sync\n");
1599 for (i
= 0; i
< ep
->nurbs
; i
++) {
1600 struct urb
*urb
= ep
->urb
[i
].urb
;
1602 if (snd_BUG_ON(!urb
))
1606 err
= prepare_outbound_urb(ep
, urb
->context
, true);
1608 err
= prepare_inbound_urb(ep
, urb
->context
);
1610 /* stop filling at applptr */
1613 usb_audio_dbg(ep
->chip
,
1614 "EP 0x%x: failed to prepare urb: %d\n",
1619 if (!atomic_read(&ep
->chip
->shutdown
))
1620 err
= usb_submit_urb(urb
, GFP_ATOMIC
);
1624 if (!atomic_read(&ep
->chip
->shutdown
))
1625 usb_audio_err(ep
->chip
,
1626 "cannot submit urb %d, error %d: %s\n",
1627 i
, err
, usb_error_string(err
));
1630 set_bit(i
, &ep
->active_mask
);
1631 atomic_inc(&ep
->submitted_urbs
);
1635 usb_audio_dbg(ep
->chip
, "XRUN at starting EP 0x%x\n",
1640 usb_audio_dbg(ep
->chip
, "%d URBs submitted for EP 0x%x\n",
1644 /* put the remaining URBs to ready list */
1646 for (; i
< ep
->nurbs
; i
++)
1647 push_back_to_ready_list(ep
, ep
->urb
+ i
);
1653 snd_usb_endpoint_stop(ep
, false);
1658 * snd_usb_endpoint_stop: stop an snd_usb_endpoint
1660 * @ep: the endpoint to stop (may be NULL)
1661 * @keep_pending: keep in-flight URBs
1663 * A call to this function will decrement the running count of the endpoint.
1664 * In case the last user has requested the endpoint stop, the URBs will
1665 * actually be deactivated.
1667 * Must be balanced to calls of snd_usb_endpoint_start().
1669 * The caller needs to synchronize the pending stop operation via
1670 * snd_usb_endpoint_sync_pending_stop().
1672 void snd_usb_endpoint_stop(struct snd_usb_endpoint
*ep
, bool keep_pending
)
1677 usb_audio_dbg(ep
->chip
, "Stopping %s EP 0x%x (running %d)\n",
1678 ep_type_name(ep
->type
), ep
->ep_num
,
1679 atomic_read(&ep
->running
));
1681 if (snd_BUG_ON(!atomic_read(&ep
->running
)))
1684 if (!atomic_dec_return(&ep
->running
)) {
1685 if (ep
->sync_source
)
1686 WRITE_ONCE(ep
->sync_source
->sync_sink
, NULL
);
1687 stop_urbs(ep
, false, keep_pending
);
1689 atomic_dec(&ep
->clock_ref
->locked
);
1691 if (ep
->chip
->quirk_flags
& QUIRK_FLAG_FORCE_IFACE_RESET
&&
1692 usb_pipeout(ep
->pipe
)) {
1693 ep
->need_prepare
= true;
1695 ep
->iface_ref
->need_setup
= true;
1701 * snd_usb_endpoint_release: Tear down an snd_usb_endpoint
1703 * @ep: the endpoint to release
1705 * This function does not care for the endpoint's running count but will tear
1706 * down all the streaming URBs immediately.
1708 void snd_usb_endpoint_release(struct snd_usb_endpoint
*ep
)
1710 release_urbs(ep
, true);
1714 * snd_usb_endpoint_free_all: Free the resources of an snd_usb_endpoint
1717 * This free all endpoints and those resources
1719 void snd_usb_endpoint_free_all(struct snd_usb_audio
*chip
)
1721 struct snd_usb_endpoint
*ep
, *en
;
1722 struct snd_usb_iface_ref
*ip
, *in
;
1723 struct snd_usb_clock_ref
*cp
, *cn
;
1725 list_for_each_entry_safe(ep
, en
, &chip
->ep_list
, list
)
1728 list_for_each_entry_safe(ip
, in
, &chip
->iface_ref_list
, list
)
1731 list_for_each_entry_safe(cp
, cn
, &chip
->clock_ref_list
, list
)
1736 * snd_usb_handle_sync_urb: parse an USB sync packet
1738 * @ep: the endpoint to handle the packet
1739 * @sender: the sending endpoint
1740 * @urb: the received packet
1742 * This function is called from the context of an endpoint that received
1743 * the packet and is used to let another endpoint object handle the payload.
1745 static void snd_usb_handle_sync_urb(struct snd_usb_endpoint
*ep
,
1746 struct snd_usb_endpoint
*sender
,
1747 const struct urb
*urb
)
1751 unsigned long flags
;
1753 snd_BUG_ON(ep
== sender
);
1756 * In case the endpoint is operating in implicit feedback mode, prepare
1757 * a new outbound URB that has the same layout as the received packet
1758 * and add it to the list of pending urbs. queue_pending_output_urbs()
1759 * will take care of them later.
1761 if (snd_usb_endpoint_implicit_feedback_sink(ep
) &&
1762 atomic_read(&ep
->running
)) {
1764 /* implicit feedback case */
1766 struct snd_urb_ctx
*in_ctx
;
1767 struct snd_usb_packet_info
*out_packet
;
1769 in_ctx
= urb
->context
;
1771 /* Count overall packet size */
1772 for (i
= 0; i
< in_ctx
->packets
; i
++)
1773 if (urb
->iso_frame_desc
[i
].status
== 0)
1774 bytes
+= urb
->iso_frame_desc
[i
].actual_length
;
1777 * skip empty packets. At least M-Audio's Fast Track Ultra stops
1778 * streaming once it received a 0-byte OUT URB
1783 spin_lock_irqsave(&ep
->lock
, flags
);
1784 if (ep
->next_packet_queued
>= ARRAY_SIZE(ep
->next_packet
)) {
1785 spin_unlock_irqrestore(&ep
->lock
, flags
);
1786 usb_audio_err(ep
->chip
,
1787 "next package FIFO overflow EP 0x%x\n",
1793 out_packet
= next_packet_fifo_enqueue(ep
);
1796 * Iterate through the inbound packet and prepare the lengths
1797 * for the output packet. The OUT packet we are about to send
1798 * will have the same amount of payload bytes per stride as the
1799 * IN packet we just received. Since the actual size is scaled
1800 * by the stride, use the sender stride to calculate the length
1801 * in case the number of channels differ between the implicitly
1802 * fed-back endpoint and the synchronizing endpoint.
1805 out_packet
->packets
= in_ctx
->packets
;
1806 for (i
= 0; i
< in_ctx
->packets
; i
++) {
1807 if (urb
->iso_frame_desc
[i
].status
== 0)
1808 out_packet
->packet_size
[i
] =
1809 urb
->iso_frame_desc
[i
].actual_length
/ sender
->stride
;
1811 out_packet
->packet_size
[i
] = 0;
1814 spin_unlock_irqrestore(&ep
->lock
, flags
);
1815 snd_usb_queue_pending_output_urbs(ep
, false);
1821 * process after playback sync complete
1823 * Full speed devices report feedback values in 10.14 format as samples
1824 * per frame, high speed devices in 16.16 format as samples per
1827 * Because the Audio Class 1 spec was written before USB 2.0, many high
1828 * speed devices use a wrong interpretation, some others use an
1829 * entirely different format.
1831 * Therefore, we cannot predict what format any particular device uses
1832 * and must detect it automatically.
1835 if (urb
->iso_frame_desc
[0].status
!= 0 ||
1836 urb
->iso_frame_desc
[0].actual_length
< 3)
1839 f
= le32_to_cpup(urb
->transfer_buffer
);
1840 if (urb
->iso_frame_desc
[0].actual_length
== 3)
1848 if (unlikely(sender
->tenor_fb_quirk
)) {
1850 * Devices based on Tenor 8802 chipsets (TEAC UD-H01
1851 * and others) sometimes change the feedback value
1854 if (f
< ep
->freqn
- 0x8000)
1856 else if (f
> ep
->freqn
+ 0x8000)
1858 } else if (unlikely(ep
->freqshift
== INT_MIN
)) {
1860 * The first time we see a feedback value, determine its format
1861 * by shifting it left or right until it matches the nominal
1862 * frequency value. This assumes that the feedback does not
1863 * differ from the nominal value more than +50% or -25%.
1866 while (f
< ep
->freqn
- ep
->freqn
/ 4) {
1870 while (f
> ep
->freqn
+ ep
->freqn
/ 2) {
1874 ep
->freqshift
= shift
;
1875 } else if (ep
->freqshift
>= 0)
1876 f
<<= ep
->freqshift
;
1878 f
>>= -ep
->freqshift
;
1880 if (likely(f
>= ep
->freqn
- ep
->freqn
/ 8 && f
<= ep
->freqmax
)) {
1882 * If the frequency looks valid, set it.
1883 * This value is referred to in prepare_playback_urb().
1885 spin_lock_irqsave(&ep
->lock
, flags
);
1887 spin_unlock_irqrestore(&ep
->lock
, flags
);
1890 * Out of range; maybe the shift value is wrong.
1891 * Reset it so that we autodetect again the next time.
1893 ep
->freqshift
= INT_MIN
;