GNU Linux-libre 5.15.82-gnu
[releases.git] / sound / usb / endpoint.c
1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /*
3  */
4
5 #include <linux/gfp.h>
6 #include <linux/init.h>
7 #include <linux/ratelimit.h>
8 #include <linux/usb.h>
9 #include <linux/usb/audio.h>
10 #include <linux/slab.h>
11
12 #include <sound/core.h>
13 #include <sound/pcm.h>
14 #include <sound/pcm_params.h>
15
16 #include "usbaudio.h"
17 #include "helper.h"
18 #include "card.h"
19 #include "endpoint.h"
20 #include "pcm.h"
21 #include "clock.h"
22 #include "quirks.h"
23
24 enum {
25         EP_STATE_STOPPED,
26         EP_STATE_RUNNING,
27         EP_STATE_STOPPING,
28 };
29
30 /* interface refcounting */
31 struct snd_usb_iface_ref {
32         unsigned char iface;
33         bool need_setup;
34         int opened;
35         struct list_head list;
36 };
37
38 /*
39  * snd_usb_endpoint is a model that abstracts everything related to an
40  * USB endpoint and its streaming.
41  *
42  * There are functions to activate and deactivate the streaming URBs and
43  * optional callbacks to let the pcm logic handle the actual content of the
44  * packets for playback and record. Thus, the bus streaming and the audio
45  * handlers are fully decoupled.
46  *
47  * There are two different types of endpoints in audio applications.
48  *
49  * SND_USB_ENDPOINT_TYPE_DATA handles full audio data payload for both
50  * inbound and outbound traffic.
51  *
52  * SND_USB_ENDPOINT_TYPE_SYNC endpoints are for inbound traffic only and
53  * expect the payload to carry Q10.14 / Q16.16 formatted sync information
54  * (3 or 4 bytes).
55  *
56  * Each endpoint has to be configured prior to being used by calling
57  * snd_usb_endpoint_set_params().
58  *
59  * The model incorporates a reference counting, so that multiple users
60  * can call snd_usb_endpoint_start() and snd_usb_endpoint_stop(), and
61  * only the first user will effectively start the URBs, and only the last
62  * one to stop it will tear the URBs down again.
63  */
64
65 /*
66  * convert a sampling rate into our full speed format (fs/1000 in Q16.16)
67  * this will overflow at approx 524 kHz
68  */
69 static inline unsigned get_usb_full_speed_rate(unsigned int rate)
70 {
71         return ((rate << 13) + 62) / 125;
72 }
73
74 /*
75  * convert a sampling rate into USB high speed format (fs/8000 in Q16.16)
76  * this will overflow at approx 4 MHz
77  */
78 static inline unsigned get_usb_high_speed_rate(unsigned int rate)
79 {
80         return ((rate << 10) + 62) / 125;
81 }
82
83 /*
84  * release a urb data
85  */
86 static void release_urb_ctx(struct snd_urb_ctx *u)
87 {
88         if (u->urb && u->buffer_size)
89                 usb_free_coherent(u->ep->chip->dev, u->buffer_size,
90                                   u->urb->transfer_buffer,
91                                   u->urb->transfer_dma);
92         usb_free_urb(u->urb);
93         u->urb = NULL;
94         u->buffer_size = 0;
95 }
96
97 static const char *usb_error_string(int err)
98 {
99         switch (err) {
100         case -ENODEV:
101                 return "no device";
102         case -ENOENT:
103                 return "endpoint not enabled";
104         case -EPIPE:
105                 return "endpoint stalled";
106         case -ENOSPC:
107                 return "not enough bandwidth";
108         case -ESHUTDOWN:
109                 return "device disabled";
110         case -EHOSTUNREACH:
111                 return "device suspended";
112         case -EINVAL:
113         case -EAGAIN:
114         case -EFBIG:
115         case -EMSGSIZE:
116                 return "internal error";
117         default:
118                 return "unknown error";
119         }
120 }
121
122 static inline bool ep_state_running(struct snd_usb_endpoint *ep)
123 {
124         return atomic_read(&ep->state) == EP_STATE_RUNNING;
125 }
126
127 static inline bool ep_state_update(struct snd_usb_endpoint *ep, int old, int new)
128 {
129         return atomic_cmpxchg(&ep->state, old, new) == old;
130 }
131
132 /**
133  * snd_usb_endpoint_implicit_feedback_sink: Report endpoint usage type
134  *
135  * @ep: The snd_usb_endpoint
136  *
137  * Determine whether an endpoint is driven by an implicit feedback
138  * data endpoint source.
139  */
140 int snd_usb_endpoint_implicit_feedback_sink(struct snd_usb_endpoint *ep)
141 {
142         return  ep->implicit_fb_sync && usb_pipeout(ep->pipe);
143 }
144
145 /*
146  * Return the number of samples to be sent in the next packet
147  * for streaming based on information derived from sync endpoints
148  *
149  * This won't be used for implicit feedback which takes the packet size
150  * returned from the sync source
151  */
152 static int slave_next_packet_size(struct snd_usb_endpoint *ep,
153                                   unsigned int avail)
154 {
155         unsigned long flags;
156         unsigned int phase;
157         int ret;
158
159         if (ep->fill_max)
160                 return ep->maxframesize;
161
162         spin_lock_irqsave(&ep->lock, flags);
163         phase = (ep->phase & 0xffff) + (ep->freqm << ep->datainterval);
164         ret = min(phase >> 16, ep->maxframesize);
165         if (avail && ret >= avail)
166                 ret = -EAGAIN;
167         else
168                 ep->phase = phase;
169         spin_unlock_irqrestore(&ep->lock, flags);
170
171         return ret;
172 }
173
174 /*
175  * Return the number of samples to be sent in the next packet
176  * for adaptive and synchronous endpoints
177  */
178 static int next_packet_size(struct snd_usb_endpoint *ep, unsigned int avail)
179 {
180         unsigned int sample_accum;
181         int ret;
182
183         if (ep->fill_max)
184                 return ep->maxframesize;
185
186         sample_accum = ep->sample_accum + ep->sample_rem;
187         if (sample_accum >= ep->pps) {
188                 sample_accum -= ep->pps;
189                 ret = ep->packsize[1];
190         } else {
191                 ret = ep->packsize[0];
192         }
193         if (avail && ret >= avail)
194                 ret = -EAGAIN;
195         else
196                 ep->sample_accum = sample_accum;
197
198         return ret;
199 }
200
201 /*
202  * snd_usb_endpoint_next_packet_size: Return the number of samples to be sent
203  * in the next packet
204  *
205  * If the size is equal or exceeds @avail, don't proceed but return -EAGAIN
206  * Exception: @avail = 0 for skipping the check.
207  */
208 int snd_usb_endpoint_next_packet_size(struct snd_usb_endpoint *ep,
209                                       struct snd_urb_ctx *ctx, int idx,
210                                       unsigned int avail)
211 {
212         unsigned int packet;
213
214         packet = ctx->packet_size[idx];
215         if (packet) {
216                 if (avail && packet >= avail)
217                         return -EAGAIN;
218                 return packet;
219         }
220
221         if (ep->sync_source)
222                 return slave_next_packet_size(ep, avail);
223         else
224                 return next_packet_size(ep, avail);
225 }
226
227 static void call_retire_callback(struct snd_usb_endpoint *ep,
228                                  struct urb *urb)
229 {
230         struct snd_usb_substream *data_subs;
231
232         data_subs = READ_ONCE(ep->data_subs);
233         if (data_subs && ep->retire_data_urb)
234                 ep->retire_data_urb(data_subs, urb);
235 }
236
237 static void retire_outbound_urb(struct snd_usb_endpoint *ep,
238                                 struct snd_urb_ctx *urb_ctx)
239 {
240         call_retire_callback(ep, urb_ctx->urb);
241 }
242
243 static void snd_usb_handle_sync_urb(struct snd_usb_endpoint *ep,
244                                     struct snd_usb_endpoint *sender,
245                                     const struct urb *urb);
246
247 static void retire_inbound_urb(struct snd_usb_endpoint *ep,
248                                struct snd_urb_ctx *urb_ctx)
249 {
250         struct urb *urb = urb_ctx->urb;
251         struct snd_usb_endpoint *sync_sink;
252
253         if (unlikely(ep->skip_packets > 0)) {
254                 ep->skip_packets--;
255                 return;
256         }
257
258         sync_sink = READ_ONCE(ep->sync_sink);
259         if (sync_sink)
260                 snd_usb_handle_sync_urb(sync_sink, ep, urb);
261
262         call_retire_callback(ep, urb);
263 }
264
265 static inline bool has_tx_length_quirk(struct snd_usb_audio *chip)
266 {
267         return chip->quirk_flags & QUIRK_FLAG_TX_LENGTH;
268 }
269
270 static void prepare_silent_urb(struct snd_usb_endpoint *ep,
271                                struct snd_urb_ctx *ctx)
272 {
273         struct urb *urb = ctx->urb;
274         unsigned int offs = 0;
275         unsigned int extra = 0;
276         __le32 packet_length;
277         int i;
278
279         /* For tx_length_quirk, put packet length at start of packet */
280         if (has_tx_length_quirk(ep->chip))
281                 extra = sizeof(packet_length);
282
283         for (i = 0; i < ctx->packets; ++i) {
284                 unsigned int offset;
285                 unsigned int length;
286                 int counts;
287
288                 counts = snd_usb_endpoint_next_packet_size(ep, ctx, i, 0);
289                 length = counts * ep->stride; /* number of silent bytes */
290                 offset = offs * ep->stride + extra * i;
291                 urb->iso_frame_desc[i].offset = offset;
292                 urb->iso_frame_desc[i].length = length + extra;
293                 if (extra) {
294                         packet_length = cpu_to_le32(length);
295                         memcpy(urb->transfer_buffer + offset,
296                                &packet_length, sizeof(packet_length));
297                 }
298                 memset(urb->transfer_buffer + offset + extra,
299                        ep->silence_value, length);
300                 offs += counts;
301         }
302
303         urb->number_of_packets = ctx->packets;
304         urb->transfer_buffer_length = offs * ep->stride + ctx->packets * extra;
305         ctx->queued = 0;
306 }
307
308 /*
309  * Prepare a PLAYBACK urb for submission to the bus.
310  */
311 static int prepare_outbound_urb(struct snd_usb_endpoint *ep,
312                                 struct snd_urb_ctx *ctx,
313                                 bool in_stream_lock)
314 {
315         struct urb *urb = ctx->urb;
316         unsigned char *cp = urb->transfer_buffer;
317         struct snd_usb_substream *data_subs;
318
319         urb->dev = ep->chip->dev; /* we need to set this at each time */
320
321         switch (ep->type) {
322         case SND_USB_ENDPOINT_TYPE_DATA:
323                 data_subs = READ_ONCE(ep->data_subs);
324                 if (data_subs && ep->prepare_data_urb)
325                         return ep->prepare_data_urb(data_subs, urb, in_stream_lock);
326                 /* no data provider, so send silence */
327                 prepare_silent_urb(ep, ctx);
328                 break;
329
330         case SND_USB_ENDPOINT_TYPE_SYNC:
331                 if (snd_usb_get_speed(ep->chip->dev) >= USB_SPEED_HIGH) {
332                         /*
333                          * fill the length and offset of each urb descriptor.
334                          * the fixed 12.13 frequency is passed as 16.16 through the pipe.
335                          */
336                         urb->iso_frame_desc[0].length = 4;
337                         urb->iso_frame_desc[0].offset = 0;
338                         cp[0] = ep->freqn;
339                         cp[1] = ep->freqn >> 8;
340                         cp[2] = ep->freqn >> 16;
341                         cp[3] = ep->freqn >> 24;
342                 } else {
343                         /*
344                          * fill the length and offset of each urb descriptor.
345                          * the fixed 10.14 frequency is passed through the pipe.
346                          */
347                         urb->iso_frame_desc[0].length = 3;
348                         urb->iso_frame_desc[0].offset = 0;
349                         cp[0] = ep->freqn >> 2;
350                         cp[1] = ep->freqn >> 10;
351                         cp[2] = ep->freqn >> 18;
352                 }
353
354                 break;
355         }
356         return 0;
357 }
358
359 /*
360  * Prepare a CAPTURE or SYNC urb for submission to the bus.
361  */
362 static int prepare_inbound_urb(struct snd_usb_endpoint *ep,
363                                struct snd_urb_ctx *urb_ctx)
364 {
365         int i, offs;
366         struct urb *urb = urb_ctx->urb;
367
368         urb->dev = ep->chip->dev; /* we need to set this at each time */
369
370         switch (ep->type) {
371         case SND_USB_ENDPOINT_TYPE_DATA:
372                 offs = 0;
373                 for (i = 0; i < urb_ctx->packets; i++) {
374                         urb->iso_frame_desc[i].offset = offs;
375                         urb->iso_frame_desc[i].length = ep->curpacksize;
376                         offs += ep->curpacksize;
377                 }
378
379                 urb->transfer_buffer_length = offs;
380                 urb->number_of_packets = urb_ctx->packets;
381                 break;
382
383         case SND_USB_ENDPOINT_TYPE_SYNC:
384                 urb->iso_frame_desc[0].length = min(4u, ep->syncmaxsize);
385                 urb->iso_frame_desc[0].offset = 0;
386                 break;
387         }
388         return 0;
389 }
390
391 /* notify an error as XRUN to the assigned PCM data substream */
392 static void notify_xrun(struct snd_usb_endpoint *ep)
393 {
394         struct snd_usb_substream *data_subs;
395
396         data_subs = READ_ONCE(ep->data_subs);
397         if (data_subs && data_subs->pcm_substream)
398                 snd_pcm_stop_xrun(data_subs->pcm_substream);
399 }
400
401 static struct snd_usb_packet_info *
402 next_packet_fifo_enqueue(struct snd_usb_endpoint *ep)
403 {
404         struct snd_usb_packet_info *p;
405
406         p = ep->next_packet + (ep->next_packet_head + ep->next_packet_queued) %
407                 ARRAY_SIZE(ep->next_packet);
408         ep->next_packet_queued++;
409         return p;
410 }
411
412 static struct snd_usb_packet_info *
413 next_packet_fifo_dequeue(struct snd_usb_endpoint *ep)
414 {
415         struct snd_usb_packet_info *p;
416
417         p = ep->next_packet + ep->next_packet_head;
418         ep->next_packet_head++;
419         ep->next_packet_head %= ARRAY_SIZE(ep->next_packet);
420         ep->next_packet_queued--;
421         return p;
422 }
423
424 static void push_back_to_ready_list(struct snd_usb_endpoint *ep,
425                                     struct snd_urb_ctx *ctx)
426 {
427         unsigned long flags;
428
429         spin_lock_irqsave(&ep->lock, flags);
430         list_add_tail(&ctx->ready_list, &ep->ready_playback_urbs);
431         spin_unlock_irqrestore(&ep->lock, flags);
432 }
433
434 /*
435  * Send output urbs that have been prepared previously. URBs are dequeued
436  * from ep->ready_playback_urbs and in case there aren't any available
437  * or there are no packets that have been prepared, this function does
438  * nothing.
439  *
440  * The reason why the functionality of sending and preparing URBs is separated
441  * is that host controllers don't guarantee the order in which they return
442  * inbound and outbound packets to their submitters.
443  *
444  * This function is used both for implicit feedback endpoints and in low-
445  * latency playback mode.
446  */
447 void snd_usb_queue_pending_output_urbs(struct snd_usb_endpoint *ep,
448                                        bool in_stream_lock)
449 {
450         bool implicit_fb = snd_usb_endpoint_implicit_feedback_sink(ep);
451
452         while (ep_state_running(ep)) {
453
454                 unsigned long flags;
455                 struct snd_usb_packet_info *packet;
456                 struct snd_urb_ctx *ctx = NULL;
457                 int err, i;
458
459                 spin_lock_irqsave(&ep->lock, flags);
460                 if ((!implicit_fb || ep->next_packet_queued > 0) &&
461                     !list_empty(&ep->ready_playback_urbs)) {
462                         /* take URB out of FIFO */
463                         ctx = list_first_entry(&ep->ready_playback_urbs,
464                                                struct snd_urb_ctx, ready_list);
465                         list_del_init(&ctx->ready_list);
466                         if (implicit_fb)
467                                 packet = next_packet_fifo_dequeue(ep);
468                 }
469                 spin_unlock_irqrestore(&ep->lock, flags);
470
471                 if (ctx == NULL)
472                         return;
473
474                 /* copy over the length information */
475                 if (implicit_fb) {
476                         for (i = 0; i < packet->packets; i++)
477                                 ctx->packet_size[i] = packet->packet_size[i];
478                 }
479
480                 /* call the data handler to fill in playback data */
481                 err = prepare_outbound_urb(ep, ctx, in_stream_lock);
482                 /* can be stopped during prepare callback */
483                 if (unlikely(!ep_state_running(ep)))
484                         break;
485                 if (err < 0) {
486                         /* push back to ready list again for -EAGAIN */
487                         if (err == -EAGAIN)
488                                 push_back_to_ready_list(ep, ctx);
489                         else
490                                 notify_xrun(ep);
491                         return;
492                 }
493
494                 err = usb_submit_urb(ctx->urb, GFP_ATOMIC);
495                 if (err < 0) {
496                         usb_audio_err(ep->chip,
497                                       "Unable to submit urb #%d: %d at %s\n",
498                                       ctx->index, err, __func__);
499                         notify_xrun(ep);
500                         return;
501                 }
502
503                 set_bit(ctx->index, &ep->active_mask);
504                 atomic_inc(&ep->submitted_urbs);
505         }
506 }
507
508 /*
509  * complete callback for urbs
510  */
511 static void snd_complete_urb(struct urb *urb)
512 {
513         struct snd_urb_ctx *ctx = urb->context;
514         struct snd_usb_endpoint *ep = ctx->ep;
515         int err;
516
517         if (unlikely(urb->status == -ENOENT ||          /* unlinked */
518                      urb->status == -ENODEV ||          /* device removed */
519                      urb->status == -ECONNRESET ||      /* unlinked */
520                      urb->status == -ESHUTDOWN))        /* device disabled */
521                 goto exit_clear;
522         /* device disconnected */
523         if (unlikely(atomic_read(&ep->chip->shutdown)))
524                 goto exit_clear;
525
526         if (unlikely(!ep_state_running(ep)))
527                 goto exit_clear;
528
529         if (usb_pipeout(ep->pipe)) {
530                 retire_outbound_urb(ep, ctx);
531                 /* can be stopped during retire callback */
532                 if (unlikely(!ep_state_running(ep)))
533                         goto exit_clear;
534
535                 /* in low-latency and implicit-feedback modes, push back the
536                  * URB to ready list at first, then process as much as possible
537                  */
538                 if (ep->lowlatency_playback ||
539                      snd_usb_endpoint_implicit_feedback_sink(ep)) {
540                         push_back_to_ready_list(ep, ctx);
541                         clear_bit(ctx->index, &ep->active_mask);
542                         snd_usb_queue_pending_output_urbs(ep, false);
543                         atomic_dec(&ep->submitted_urbs); /* decrement at last */
544                         return;
545                 }
546
547                 /* in non-lowlatency mode, no error handling for prepare */
548                 prepare_outbound_urb(ep, ctx, false);
549                 /* can be stopped during prepare callback */
550                 if (unlikely(!ep_state_running(ep)))
551                         goto exit_clear;
552         } else {
553                 retire_inbound_urb(ep, ctx);
554                 /* can be stopped during retire callback */
555                 if (unlikely(!ep_state_running(ep)))
556                         goto exit_clear;
557
558                 prepare_inbound_urb(ep, ctx);
559         }
560
561         err = usb_submit_urb(urb, GFP_ATOMIC);
562         if (err == 0)
563                 return;
564
565         usb_audio_err(ep->chip, "cannot submit urb (err = %d)\n", err);
566         notify_xrun(ep);
567
568 exit_clear:
569         clear_bit(ctx->index, &ep->active_mask);
570         atomic_dec(&ep->submitted_urbs);
571 }
572
573 /*
574  * Find or create a refcount object for the given interface
575  *
576  * The objects are released altogether in snd_usb_endpoint_free_all()
577  */
578 static struct snd_usb_iface_ref *
579 iface_ref_find(struct snd_usb_audio *chip, int iface)
580 {
581         struct snd_usb_iface_ref *ip;
582
583         list_for_each_entry(ip, &chip->iface_ref_list, list)
584                 if (ip->iface == iface)
585                         return ip;
586
587         ip = kzalloc(sizeof(*ip), GFP_KERNEL);
588         if (!ip)
589                 return NULL;
590         ip->iface = iface;
591         list_add_tail(&ip->list, &chip->iface_ref_list);
592         return ip;
593 }
594
595 /*
596  * Get the existing endpoint object corresponding EP
597  * Returns NULL if not present.
598  */
599 struct snd_usb_endpoint *
600 snd_usb_get_endpoint(struct snd_usb_audio *chip, int ep_num)
601 {
602         struct snd_usb_endpoint *ep;
603
604         list_for_each_entry(ep, &chip->ep_list, list) {
605                 if (ep->ep_num == ep_num)
606                         return ep;
607         }
608
609         return NULL;
610 }
611
612 #define ep_type_name(type) \
613         (type == SND_USB_ENDPOINT_TYPE_DATA ? "data" : "sync")
614
615 /**
616  * snd_usb_add_endpoint: Add an endpoint to an USB audio chip
617  *
618  * @chip: The chip
619  * @ep_num: The number of the endpoint to use
620  * @type: SND_USB_ENDPOINT_TYPE_DATA or SND_USB_ENDPOINT_TYPE_SYNC
621  *
622  * If the requested endpoint has not been added to the given chip before,
623  * a new instance is created.
624  *
625  * Returns zero on success or a negative error code.
626  *
627  * New endpoints will be added to chip->ep_list and freed by
628  * calling snd_usb_endpoint_free_all().
629  *
630  * For SND_USB_ENDPOINT_TYPE_SYNC, the caller needs to guarantee that
631  * bNumEndpoints > 1 beforehand.
632  */
633 int snd_usb_add_endpoint(struct snd_usb_audio *chip, int ep_num, int type)
634 {
635         struct snd_usb_endpoint *ep;
636         bool is_playback;
637
638         ep = snd_usb_get_endpoint(chip, ep_num);
639         if (ep)
640                 return 0;
641
642         usb_audio_dbg(chip, "Creating new %s endpoint #%x\n",
643                       ep_type_name(type),
644                       ep_num);
645         ep = kzalloc(sizeof(*ep), GFP_KERNEL);
646         if (!ep)
647                 return -ENOMEM;
648
649         ep->chip = chip;
650         spin_lock_init(&ep->lock);
651         ep->type = type;
652         ep->ep_num = ep_num;
653         INIT_LIST_HEAD(&ep->ready_playback_urbs);
654         atomic_set(&ep->submitted_urbs, 0);
655
656         is_playback = ((ep_num & USB_ENDPOINT_DIR_MASK) == USB_DIR_OUT);
657         ep_num &= USB_ENDPOINT_NUMBER_MASK;
658         if (is_playback)
659                 ep->pipe = usb_sndisocpipe(chip->dev, ep_num);
660         else
661                 ep->pipe = usb_rcvisocpipe(chip->dev, ep_num);
662
663         list_add_tail(&ep->list, &chip->ep_list);
664         return 0;
665 }
666
667 /* Set up syncinterval and maxsyncsize for a sync EP */
668 static void endpoint_set_syncinterval(struct snd_usb_audio *chip,
669                                       struct snd_usb_endpoint *ep)
670 {
671         struct usb_host_interface *alts;
672         struct usb_endpoint_descriptor *desc;
673
674         alts = snd_usb_get_host_interface(chip, ep->iface, ep->altsetting);
675         if (!alts)
676                 return;
677
678         desc = get_endpoint(alts, ep->ep_idx);
679         if (desc->bLength >= USB_DT_ENDPOINT_AUDIO_SIZE &&
680             desc->bRefresh >= 1 && desc->bRefresh <= 9)
681                 ep->syncinterval = desc->bRefresh;
682         else if (snd_usb_get_speed(chip->dev) == USB_SPEED_FULL)
683                 ep->syncinterval = 1;
684         else if (desc->bInterval >= 1 && desc->bInterval <= 16)
685                 ep->syncinterval = desc->bInterval - 1;
686         else
687                 ep->syncinterval = 3;
688
689         ep->syncmaxsize = le16_to_cpu(desc->wMaxPacketSize);
690 }
691
692 static bool endpoint_compatible(struct snd_usb_endpoint *ep,
693                                 const struct audioformat *fp,
694                                 const struct snd_pcm_hw_params *params)
695 {
696         if (!ep->opened)
697                 return false;
698         if (ep->cur_audiofmt != fp)
699                 return false;
700         if (ep->cur_rate != params_rate(params) ||
701             ep->cur_format != params_format(params) ||
702             ep->cur_period_frames != params_period_size(params) ||
703             ep->cur_buffer_periods != params_periods(params))
704                 return false;
705         return true;
706 }
707
708 /*
709  * Check whether the given fp and hw params are compatible with the current
710  * setup of the target EP for implicit feedback sync
711  */
712 bool snd_usb_endpoint_compatible(struct snd_usb_audio *chip,
713                                  struct snd_usb_endpoint *ep,
714                                  const struct audioformat *fp,
715                                  const struct snd_pcm_hw_params *params)
716 {
717         bool ret;
718
719         mutex_lock(&chip->mutex);
720         ret = endpoint_compatible(ep, fp, params);
721         mutex_unlock(&chip->mutex);
722         return ret;
723 }
724
725 /*
726  * snd_usb_endpoint_open: Open the endpoint
727  *
728  * Called from hw_params to assign the endpoint to the substream.
729  * It's reference-counted, and only the first opener is allowed to set up
730  * arbitrary parameters.  The later opener must be compatible with the
731  * former opened parameters.
732  * The endpoint needs to be closed via snd_usb_endpoint_close() later.
733  *
734  * Note that this function doesn't configure the endpoint.  The substream
735  * needs to set it up later via snd_usb_endpoint_configure().
736  */
737 struct snd_usb_endpoint *
738 snd_usb_endpoint_open(struct snd_usb_audio *chip,
739                       const struct audioformat *fp,
740                       const struct snd_pcm_hw_params *params,
741                       bool is_sync_ep)
742 {
743         struct snd_usb_endpoint *ep;
744         int ep_num = is_sync_ep ? fp->sync_ep : fp->endpoint;
745
746         mutex_lock(&chip->mutex);
747         ep = snd_usb_get_endpoint(chip, ep_num);
748         if (!ep) {
749                 usb_audio_err(chip, "Cannot find EP 0x%x to open\n", ep_num);
750                 goto unlock;
751         }
752
753         if (!ep->opened) {
754                 if (is_sync_ep) {
755                         ep->iface = fp->sync_iface;
756                         ep->altsetting = fp->sync_altsetting;
757                         ep->ep_idx = fp->sync_ep_idx;
758                 } else {
759                         ep->iface = fp->iface;
760                         ep->altsetting = fp->altsetting;
761                         ep->ep_idx = fp->ep_idx;
762                 }
763                 usb_audio_dbg(chip, "Open EP 0x%x, iface=%d:%d, idx=%d\n",
764                               ep_num, ep->iface, ep->altsetting, ep->ep_idx);
765
766                 ep->iface_ref = iface_ref_find(chip, ep->iface);
767                 if (!ep->iface_ref) {
768                         ep = NULL;
769                         goto unlock;
770                 }
771
772                 ep->cur_audiofmt = fp;
773                 ep->cur_channels = fp->channels;
774                 ep->cur_rate = params_rate(params);
775                 ep->cur_format = params_format(params);
776                 ep->cur_frame_bytes = snd_pcm_format_physical_width(ep->cur_format) *
777                         ep->cur_channels / 8;
778                 ep->cur_period_frames = params_period_size(params);
779                 ep->cur_period_bytes = ep->cur_period_frames * ep->cur_frame_bytes;
780                 ep->cur_buffer_periods = params_periods(params);
781                 ep->cur_clock = fp->clock;
782
783                 if (ep->type == SND_USB_ENDPOINT_TYPE_SYNC)
784                         endpoint_set_syncinterval(chip, ep);
785
786                 ep->implicit_fb_sync = fp->implicit_fb;
787                 ep->need_setup = true;
788
789                 usb_audio_dbg(chip, "  channels=%d, rate=%d, format=%s, period_bytes=%d, periods=%d, implicit_fb=%d\n",
790                               ep->cur_channels, ep->cur_rate,
791                               snd_pcm_format_name(ep->cur_format),
792                               ep->cur_period_bytes, ep->cur_buffer_periods,
793                               ep->implicit_fb_sync);
794
795         } else {
796                 if (WARN_ON(!ep->iface_ref)) {
797                         ep = NULL;
798                         goto unlock;
799                 }
800
801                 if (!endpoint_compatible(ep, fp, params)) {
802                         usb_audio_err(chip, "Incompatible EP setup for 0x%x\n",
803                                       ep_num);
804                         ep = NULL;
805                         goto unlock;
806                 }
807
808                 usb_audio_dbg(chip, "Reopened EP 0x%x (count %d)\n",
809                               ep_num, ep->opened);
810         }
811
812         if (!ep->iface_ref->opened++)
813                 ep->iface_ref->need_setup = true;
814
815         ep->opened++;
816
817  unlock:
818         mutex_unlock(&chip->mutex);
819         return ep;
820 }
821
822 /*
823  * snd_usb_endpoint_set_sync: Link data and sync endpoints
824  *
825  * Pass NULL to sync_ep to unlink again
826  */
827 void snd_usb_endpoint_set_sync(struct snd_usb_audio *chip,
828                                struct snd_usb_endpoint *data_ep,
829                                struct snd_usb_endpoint *sync_ep)
830 {
831         data_ep->sync_source = sync_ep;
832 }
833
834 /*
835  * Set data endpoint callbacks and the assigned data stream
836  *
837  * Called at PCM trigger and cleanups.
838  * Pass NULL to deactivate each callback.
839  */
840 void snd_usb_endpoint_set_callback(struct snd_usb_endpoint *ep,
841                                    int (*prepare)(struct snd_usb_substream *subs,
842                                                   struct urb *urb,
843                                                   bool in_stream_lock),
844                                    void (*retire)(struct snd_usb_substream *subs,
845                                                   struct urb *urb),
846                                    struct snd_usb_substream *data_subs)
847 {
848         ep->prepare_data_urb = prepare;
849         ep->retire_data_urb = retire;
850         if (data_subs)
851                 ep->lowlatency_playback = data_subs->lowlatency_playback;
852         else
853                 ep->lowlatency_playback = false;
854         WRITE_ONCE(ep->data_subs, data_subs);
855 }
856
857 static int endpoint_set_interface(struct snd_usb_audio *chip,
858                                   struct snd_usb_endpoint *ep,
859                                   bool set)
860 {
861         int altset = set ? ep->altsetting : 0;
862         int err;
863
864         usb_audio_dbg(chip, "Setting usb interface %d:%d for EP 0x%x\n",
865                       ep->iface, altset, ep->ep_num);
866         err = usb_set_interface(chip->dev, ep->iface, altset);
867         if (err < 0) {
868                 usb_audio_err(chip, "%d:%d: usb_set_interface failed (%d)\n",
869                               ep->iface, altset, err);
870                 return err;
871         }
872
873         if (chip->quirk_flags & QUIRK_FLAG_IFACE_DELAY)
874                 msleep(50);
875         return 0;
876 }
877
878 /*
879  * snd_usb_endpoint_close: Close the endpoint
880  *
881  * Unreference the already opened endpoint via snd_usb_endpoint_open().
882  */
883 void snd_usb_endpoint_close(struct snd_usb_audio *chip,
884                             struct snd_usb_endpoint *ep)
885 {
886         mutex_lock(&chip->mutex);
887         usb_audio_dbg(chip, "Closing EP 0x%x (count %d)\n",
888                       ep->ep_num, ep->opened);
889
890         if (!--ep->iface_ref->opened &&
891                 !(chip->quirk_flags & QUIRK_FLAG_IFACE_SKIP_CLOSE))
892                 endpoint_set_interface(chip, ep, false);
893
894         if (!--ep->opened) {
895                 ep->iface = 0;
896                 ep->altsetting = 0;
897                 ep->cur_audiofmt = NULL;
898                 ep->cur_rate = 0;
899                 ep->cur_clock = 0;
900                 ep->iface_ref = NULL;
901                 usb_audio_dbg(chip, "EP 0x%x closed\n", ep->ep_num);
902         }
903         mutex_unlock(&chip->mutex);
904 }
905
906 /* Prepare for suspening EP, called from the main suspend handler */
907 void snd_usb_endpoint_suspend(struct snd_usb_endpoint *ep)
908 {
909         ep->need_setup = true;
910         if (ep->iface_ref)
911                 ep->iface_ref->need_setup = true;
912 }
913
914 /*
915  *  wait until all urbs are processed.
916  */
917 static int wait_clear_urbs(struct snd_usb_endpoint *ep)
918 {
919         unsigned long end_time = jiffies + msecs_to_jiffies(1000);
920         int alive;
921
922         if (atomic_read(&ep->state) != EP_STATE_STOPPING)
923                 return 0;
924
925         do {
926                 alive = atomic_read(&ep->submitted_urbs);
927                 if (!alive)
928                         break;
929
930                 schedule_timeout_uninterruptible(1);
931         } while (time_before(jiffies, end_time));
932
933         if (alive)
934                 usb_audio_err(ep->chip,
935                         "timeout: still %d active urbs on EP #%x\n",
936                         alive, ep->ep_num);
937
938         if (ep_state_update(ep, EP_STATE_STOPPING, EP_STATE_STOPPED)) {
939                 ep->sync_sink = NULL;
940                 snd_usb_endpoint_set_callback(ep, NULL, NULL, NULL);
941         }
942
943         return 0;
944 }
945
946 /* sync the pending stop operation;
947  * this function itself doesn't trigger the stop operation
948  */
949 void snd_usb_endpoint_sync_pending_stop(struct snd_usb_endpoint *ep)
950 {
951         if (ep)
952                 wait_clear_urbs(ep);
953 }
954
955 /*
956  * Stop active urbs
957  *
958  * This function moves the EP to STOPPING state if it's being RUNNING.
959  */
960 static int stop_urbs(struct snd_usb_endpoint *ep, bool force, bool keep_pending)
961 {
962         unsigned int i;
963         unsigned long flags;
964
965         if (!force && atomic_read(&ep->running))
966                 return -EBUSY;
967
968         if (!ep_state_update(ep, EP_STATE_RUNNING, EP_STATE_STOPPING))
969                 return 0;
970
971         spin_lock_irqsave(&ep->lock, flags);
972         INIT_LIST_HEAD(&ep->ready_playback_urbs);
973         ep->next_packet_head = 0;
974         ep->next_packet_queued = 0;
975         spin_unlock_irqrestore(&ep->lock, flags);
976
977         if (keep_pending)
978                 return 0;
979
980         for (i = 0; i < ep->nurbs; i++) {
981                 if (test_bit(i, &ep->active_mask)) {
982                         if (!test_and_set_bit(i, &ep->unlink_mask)) {
983                                 struct urb *u = ep->urb[i].urb;
984                                 usb_unlink_urb(u);
985                         }
986                 }
987         }
988
989         return 0;
990 }
991
992 /*
993  * release an endpoint's urbs
994  */
995 static int release_urbs(struct snd_usb_endpoint *ep, bool force)
996 {
997         int i, err;
998
999         /* route incoming urbs to nirvana */
1000         snd_usb_endpoint_set_callback(ep, NULL, NULL, NULL);
1001
1002         /* stop and unlink urbs */
1003         err = stop_urbs(ep, force, false);
1004         if (err)
1005                 return err;
1006
1007         wait_clear_urbs(ep);
1008
1009         for (i = 0; i < ep->nurbs; i++)
1010                 release_urb_ctx(&ep->urb[i]);
1011
1012         usb_free_coherent(ep->chip->dev, SYNC_URBS * 4,
1013                           ep->syncbuf, ep->sync_dma);
1014
1015         ep->syncbuf = NULL;
1016         ep->nurbs = 0;
1017         return 0;
1018 }
1019
1020 /*
1021  * configure a data endpoint
1022  */
1023 static int data_ep_set_params(struct snd_usb_endpoint *ep)
1024 {
1025         struct snd_usb_audio *chip = ep->chip;
1026         unsigned int maxsize, minsize, packs_per_ms, max_packs_per_urb;
1027         unsigned int max_packs_per_period, urbs_per_period, urb_packs;
1028         unsigned int max_urbs, i;
1029         const struct audioformat *fmt = ep->cur_audiofmt;
1030         int frame_bits = ep->cur_frame_bytes * 8;
1031         int tx_length_quirk = (has_tx_length_quirk(chip) &&
1032                                usb_pipeout(ep->pipe));
1033
1034         usb_audio_dbg(chip, "Setting params for data EP 0x%x, pipe 0x%x\n",
1035                       ep->ep_num, ep->pipe);
1036
1037         if (ep->cur_format == SNDRV_PCM_FORMAT_DSD_U16_LE && fmt->dsd_dop) {
1038                 /*
1039                  * When operating in DSD DOP mode, the size of a sample frame
1040                  * in hardware differs from the actual physical format width
1041                  * because we need to make room for the DOP markers.
1042                  */
1043                 frame_bits += ep->cur_channels << 3;
1044         }
1045
1046         ep->datainterval = fmt->datainterval;
1047         ep->stride = frame_bits >> 3;
1048
1049         switch (ep->cur_format) {
1050         case SNDRV_PCM_FORMAT_U8:
1051                 ep->silence_value = 0x80;
1052                 break;
1053         case SNDRV_PCM_FORMAT_DSD_U8:
1054         case SNDRV_PCM_FORMAT_DSD_U16_LE:
1055         case SNDRV_PCM_FORMAT_DSD_U32_LE:
1056         case SNDRV_PCM_FORMAT_DSD_U16_BE:
1057         case SNDRV_PCM_FORMAT_DSD_U32_BE:
1058                 ep->silence_value = 0x69;
1059                 break;
1060         default:
1061                 ep->silence_value = 0;
1062         }
1063
1064         /* assume max. frequency is 50% higher than nominal */
1065         ep->freqmax = ep->freqn + (ep->freqn >> 1);
1066         /* Round up freqmax to nearest integer in order to calculate maximum
1067          * packet size, which must represent a whole number of frames.
1068          * This is accomplished by adding 0x0.ffff before converting the
1069          * Q16.16 format into integer.
1070          * In order to accurately calculate the maximum packet size when
1071          * the data interval is more than 1 (i.e. ep->datainterval > 0),
1072          * multiply by the data interval prior to rounding. For instance,
1073          * a freqmax of 41 kHz will result in a max packet size of 6 (5.125)
1074          * frames with a data interval of 1, but 11 (10.25) frames with a
1075          * data interval of 2.
1076          * (ep->freqmax << ep->datainterval overflows at 8.192 MHz for the
1077          * maximum datainterval value of 3, at USB full speed, higher for
1078          * USB high speed, noting that ep->freqmax is in units of
1079          * frames per packet in Q16.16 format.)
1080          */
1081         maxsize = (((ep->freqmax << ep->datainterval) + 0xffff) >> 16) *
1082                          (frame_bits >> 3);
1083         if (tx_length_quirk)
1084                 maxsize += sizeof(__le32); /* Space for length descriptor */
1085         /* but wMaxPacketSize might reduce this */
1086         if (ep->maxpacksize && ep->maxpacksize < maxsize) {
1087                 /* whatever fits into a max. size packet */
1088                 unsigned int data_maxsize = maxsize = ep->maxpacksize;
1089
1090                 if (tx_length_quirk)
1091                         /* Need to remove the length descriptor to calc freq */
1092                         data_maxsize -= sizeof(__le32);
1093                 ep->freqmax = (data_maxsize / (frame_bits >> 3))
1094                                 << (16 - ep->datainterval);
1095         }
1096
1097         if (ep->fill_max)
1098                 ep->curpacksize = ep->maxpacksize;
1099         else
1100                 ep->curpacksize = maxsize;
1101
1102         if (snd_usb_get_speed(chip->dev) != USB_SPEED_FULL) {
1103                 packs_per_ms = 8 >> ep->datainterval;
1104                 max_packs_per_urb = MAX_PACKS_HS;
1105         } else {
1106                 packs_per_ms = 1;
1107                 max_packs_per_urb = MAX_PACKS;
1108         }
1109         if (ep->sync_source && !ep->implicit_fb_sync)
1110                 max_packs_per_urb = min(max_packs_per_urb,
1111                                         1U << ep->sync_source->syncinterval);
1112         max_packs_per_urb = max(1u, max_packs_per_urb >> ep->datainterval);
1113
1114         /*
1115          * Capture endpoints need to use small URBs because there's no way
1116          * to tell in advance where the next period will end, and we don't
1117          * want the next URB to complete much after the period ends.
1118          *
1119          * Playback endpoints with implicit sync much use the same parameters
1120          * as their corresponding capture endpoint.
1121          */
1122         if (usb_pipein(ep->pipe) || ep->implicit_fb_sync) {
1123
1124                 urb_packs = packs_per_ms;
1125                 /*
1126                  * Wireless devices can poll at a max rate of once per 4ms.
1127                  * For dataintervals less than 5, increase the packet count to
1128                  * allow the host controller to use bursting to fill in the
1129                  * gaps.
1130                  */
1131                 if (snd_usb_get_speed(chip->dev) == USB_SPEED_WIRELESS) {
1132                         int interval = ep->datainterval;
1133                         while (interval < 5) {
1134                                 urb_packs <<= 1;
1135                                 ++interval;
1136                         }
1137                 }
1138                 /* make capture URBs <= 1 ms and smaller than a period */
1139                 urb_packs = min(max_packs_per_urb, urb_packs);
1140                 while (urb_packs > 1 && urb_packs * maxsize >= ep->cur_period_bytes)
1141                         urb_packs >>= 1;
1142                 ep->nurbs = MAX_URBS;
1143
1144         /*
1145          * Playback endpoints without implicit sync are adjusted so that
1146          * a period fits as evenly as possible in the smallest number of
1147          * URBs.  The total number of URBs is adjusted to the size of the
1148          * ALSA buffer, subject to the MAX_URBS and MAX_QUEUE limits.
1149          */
1150         } else {
1151                 /* determine how small a packet can be */
1152                 minsize = (ep->freqn >> (16 - ep->datainterval)) *
1153                                 (frame_bits >> 3);
1154                 /* with sync from device, assume it can be 12% lower */
1155                 if (ep->sync_source)
1156                         minsize -= minsize >> 3;
1157                 minsize = max(minsize, 1u);
1158
1159                 /* how many packets will contain an entire ALSA period? */
1160                 max_packs_per_period = DIV_ROUND_UP(ep->cur_period_bytes, minsize);
1161
1162                 /* how many URBs will contain a period? */
1163                 urbs_per_period = DIV_ROUND_UP(max_packs_per_period,
1164                                 max_packs_per_urb);
1165                 /* how many packets are needed in each URB? */
1166                 urb_packs = DIV_ROUND_UP(max_packs_per_period, urbs_per_period);
1167
1168                 /* limit the number of frames in a single URB */
1169                 ep->max_urb_frames = DIV_ROUND_UP(ep->cur_period_frames,
1170                                                   urbs_per_period);
1171
1172                 /* try to use enough URBs to contain an entire ALSA buffer */
1173                 max_urbs = min((unsigned) MAX_URBS,
1174                                 MAX_QUEUE * packs_per_ms / urb_packs);
1175                 ep->nurbs = min(max_urbs, urbs_per_period * ep->cur_buffer_periods);
1176         }
1177
1178         /* allocate and initialize data urbs */
1179         for (i = 0; i < ep->nurbs; i++) {
1180                 struct snd_urb_ctx *u = &ep->urb[i];
1181                 u->index = i;
1182                 u->ep = ep;
1183                 u->packets = urb_packs;
1184                 u->buffer_size = maxsize * u->packets;
1185
1186                 if (fmt->fmt_type == UAC_FORMAT_TYPE_II)
1187                         u->packets++; /* for transfer delimiter */
1188                 u->urb = usb_alloc_urb(u->packets, GFP_KERNEL);
1189                 if (!u->urb)
1190                         goto out_of_memory;
1191
1192                 u->urb->transfer_buffer =
1193                         usb_alloc_coherent(chip->dev, u->buffer_size,
1194                                            GFP_KERNEL, &u->urb->transfer_dma);
1195                 if (!u->urb->transfer_buffer)
1196                         goto out_of_memory;
1197                 u->urb->pipe = ep->pipe;
1198                 u->urb->transfer_flags = URB_NO_TRANSFER_DMA_MAP;
1199                 u->urb->interval = 1 << ep->datainterval;
1200                 u->urb->context = u;
1201                 u->urb->complete = snd_complete_urb;
1202                 INIT_LIST_HEAD(&u->ready_list);
1203         }
1204
1205         return 0;
1206
1207 out_of_memory:
1208         release_urbs(ep, false);
1209         return -ENOMEM;
1210 }
1211
1212 /*
1213  * configure a sync endpoint
1214  */
1215 static int sync_ep_set_params(struct snd_usb_endpoint *ep)
1216 {
1217         struct snd_usb_audio *chip = ep->chip;
1218         int i;
1219
1220         usb_audio_dbg(chip, "Setting params for sync EP 0x%x, pipe 0x%x\n",
1221                       ep->ep_num, ep->pipe);
1222
1223         ep->syncbuf = usb_alloc_coherent(chip->dev, SYNC_URBS * 4,
1224                                          GFP_KERNEL, &ep->sync_dma);
1225         if (!ep->syncbuf)
1226                 return -ENOMEM;
1227
1228         ep->nurbs = SYNC_URBS;
1229         for (i = 0; i < SYNC_URBS; i++) {
1230                 struct snd_urb_ctx *u = &ep->urb[i];
1231                 u->index = i;
1232                 u->ep = ep;
1233                 u->packets = 1;
1234                 u->urb = usb_alloc_urb(1, GFP_KERNEL);
1235                 if (!u->urb)
1236                         goto out_of_memory;
1237                 u->urb->transfer_buffer = ep->syncbuf + i * 4;
1238                 u->urb->transfer_dma = ep->sync_dma + i * 4;
1239                 u->urb->transfer_buffer_length = 4;
1240                 u->urb->pipe = ep->pipe;
1241                 u->urb->transfer_flags = URB_NO_TRANSFER_DMA_MAP;
1242                 u->urb->number_of_packets = 1;
1243                 u->urb->interval = 1 << ep->syncinterval;
1244                 u->urb->context = u;
1245                 u->urb->complete = snd_complete_urb;
1246         }
1247
1248         return 0;
1249
1250 out_of_memory:
1251         release_urbs(ep, false);
1252         return -ENOMEM;
1253 }
1254
1255 /*
1256  * snd_usb_endpoint_set_params: configure an snd_usb_endpoint
1257  *
1258  * Determine the number of URBs to be used on this endpoint.
1259  * An endpoint must be configured before it can be started.
1260  * An endpoint that is already running can not be reconfigured.
1261  */
1262 static int snd_usb_endpoint_set_params(struct snd_usb_audio *chip,
1263                                        struct snd_usb_endpoint *ep)
1264 {
1265         const struct audioformat *fmt = ep->cur_audiofmt;
1266         int err;
1267
1268         /* release old buffers, if any */
1269         err = release_urbs(ep, false);
1270         if (err < 0)
1271                 return err;
1272
1273         ep->datainterval = fmt->datainterval;
1274         ep->maxpacksize = fmt->maxpacksize;
1275         ep->fill_max = !!(fmt->attributes & UAC_EP_CS_ATTR_FILL_MAX);
1276
1277         if (snd_usb_get_speed(chip->dev) == USB_SPEED_FULL) {
1278                 ep->freqn = get_usb_full_speed_rate(ep->cur_rate);
1279                 ep->pps = 1000 >> ep->datainterval;
1280         } else {
1281                 ep->freqn = get_usb_high_speed_rate(ep->cur_rate);
1282                 ep->pps = 8000 >> ep->datainterval;
1283         }
1284
1285         ep->sample_rem = ep->cur_rate % ep->pps;
1286         ep->packsize[0] = ep->cur_rate / ep->pps;
1287         ep->packsize[1] = (ep->cur_rate + (ep->pps - 1)) / ep->pps;
1288
1289         /* calculate the frequency in 16.16 format */
1290         ep->freqm = ep->freqn;
1291         ep->freqshift = INT_MIN;
1292
1293         ep->phase = 0;
1294
1295         switch (ep->type) {
1296         case  SND_USB_ENDPOINT_TYPE_DATA:
1297                 err = data_ep_set_params(ep);
1298                 break;
1299         case  SND_USB_ENDPOINT_TYPE_SYNC:
1300                 err = sync_ep_set_params(ep);
1301                 break;
1302         default:
1303                 err = -EINVAL;
1304         }
1305
1306         usb_audio_dbg(chip, "Set up %d URBS, ret=%d\n", ep->nurbs, err);
1307
1308         if (err < 0)
1309                 return err;
1310
1311         /* some unit conversions in runtime */
1312         ep->maxframesize = ep->maxpacksize / ep->cur_frame_bytes;
1313         ep->curframesize = ep->curpacksize / ep->cur_frame_bytes;
1314
1315         return 0;
1316 }
1317
1318 /*
1319  * snd_usb_endpoint_configure: Configure the endpoint
1320  *
1321  * This function sets up the EP to be fully usable state.
1322  * It's called either from hw_params or prepare callback.
1323  * The function checks need_setup flag, and performs nothing unless needed,
1324  * so it's safe to call this multiple times.
1325  *
1326  * This returns zero if unchanged, 1 if the configuration has changed,
1327  * or a negative error code.
1328  */
1329 int snd_usb_endpoint_configure(struct snd_usb_audio *chip,
1330                                struct snd_usb_endpoint *ep)
1331 {
1332         bool iface_first;
1333         int err = 0;
1334
1335         mutex_lock(&chip->mutex);
1336         if (WARN_ON(!ep->iface_ref))
1337                 goto unlock;
1338         if (!ep->need_setup)
1339                 goto unlock;
1340
1341         /* If the interface has been already set up, just set EP parameters */
1342         if (!ep->iface_ref->need_setup) {
1343                 /* sample rate setup of UAC1 is per endpoint, and we need
1344                  * to update at each EP configuration
1345                  */
1346                 if (ep->cur_audiofmt->protocol == UAC_VERSION_1) {
1347                         err = snd_usb_init_sample_rate(chip, ep->cur_audiofmt,
1348                                                        ep->cur_rate);
1349                         if (err < 0)
1350                                 goto unlock;
1351                 }
1352                 err = snd_usb_endpoint_set_params(chip, ep);
1353                 if (err < 0)
1354                         goto unlock;
1355                 goto done;
1356         }
1357
1358         /* Need to deselect altsetting at first */
1359         endpoint_set_interface(chip, ep, false);
1360
1361         /* Some UAC1 devices (e.g. Yamaha THR10) need the host interface
1362          * to be set up before parameter setups
1363          */
1364         iface_first = ep->cur_audiofmt->protocol == UAC_VERSION_1;
1365         /* Workaround for devices that require the interface setup at first like UAC1 */
1366         if (chip->quirk_flags & QUIRK_FLAG_SET_IFACE_FIRST)
1367                 iface_first = true;
1368         if (iface_first) {
1369                 err = endpoint_set_interface(chip, ep, true);
1370                 if (err < 0)
1371                         goto unlock;
1372         }
1373
1374         err = snd_usb_init_pitch(chip, ep->cur_audiofmt);
1375         if (err < 0)
1376                 goto unlock;
1377
1378         err = snd_usb_init_sample_rate(chip, ep->cur_audiofmt, ep->cur_rate);
1379         if (err < 0)
1380                 goto unlock;
1381
1382         err = snd_usb_endpoint_set_params(chip, ep);
1383         if (err < 0)
1384                 goto unlock;
1385
1386         err = snd_usb_select_mode_quirk(chip, ep->cur_audiofmt);
1387         if (err < 0)
1388                 goto unlock;
1389
1390         /* for UAC2/3, enable the interface altset here at last */
1391         if (!iface_first) {
1392                 err = endpoint_set_interface(chip, ep, true);
1393                 if (err < 0)
1394                         goto unlock;
1395         }
1396
1397         ep->iface_ref->need_setup = false;
1398
1399  done:
1400         ep->need_setup = false;
1401         err = 1;
1402
1403 unlock:
1404         mutex_unlock(&chip->mutex);
1405         return err;
1406 }
1407
1408 /* get the current rate set to the given clock by any endpoint */
1409 int snd_usb_endpoint_get_clock_rate(struct snd_usb_audio *chip, int clock)
1410 {
1411         struct snd_usb_endpoint *ep;
1412         int rate = 0;
1413
1414         if (!clock)
1415                 return 0;
1416         mutex_lock(&chip->mutex);
1417         list_for_each_entry(ep, &chip->ep_list, list) {
1418                 if (ep->cur_clock == clock && ep->cur_rate) {
1419                         rate = ep->cur_rate;
1420                         break;
1421                 }
1422         }
1423         mutex_unlock(&chip->mutex);
1424         return rate;
1425 }
1426
1427 /**
1428  * snd_usb_endpoint_start: start an snd_usb_endpoint
1429  *
1430  * @ep: the endpoint to start
1431  *
1432  * A call to this function will increment the running count of the endpoint.
1433  * In case it is not already running, the URBs for this endpoint will be
1434  * submitted. Otherwise, this function does nothing.
1435  *
1436  * Must be balanced to calls of snd_usb_endpoint_stop().
1437  *
1438  * Returns an error if the URB submission failed, 0 in all other cases.
1439  */
1440 int snd_usb_endpoint_start(struct snd_usb_endpoint *ep)
1441 {
1442         bool is_playback = usb_pipeout(ep->pipe);
1443         int err;
1444         unsigned int i;
1445
1446         if (atomic_read(&ep->chip->shutdown))
1447                 return -EBADFD;
1448
1449         if (ep->sync_source)
1450                 WRITE_ONCE(ep->sync_source->sync_sink, ep);
1451
1452         usb_audio_dbg(ep->chip, "Starting %s EP 0x%x (running %d)\n",
1453                       ep_type_name(ep->type), ep->ep_num,
1454                       atomic_read(&ep->running));
1455
1456         /* already running? */
1457         if (atomic_inc_return(&ep->running) != 1)
1458                 return 0;
1459
1460         ep->active_mask = 0;
1461         ep->unlink_mask = 0;
1462         ep->phase = 0;
1463         ep->sample_accum = 0;
1464
1465         snd_usb_endpoint_start_quirk(ep);
1466
1467         /*
1468          * If this endpoint has a data endpoint as implicit feedback source,
1469          * don't start the urbs here. Instead, mark them all as available,
1470          * wait for the record urbs to return and queue the playback urbs
1471          * from that context.
1472          */
1473
1474         if (!ep_state_update(ep, EP_STATE_STOPPED, EP_STATE_RUNNING))
1475                 goto __error;
1476
1477         if (snd_usb_endpoint_implicit_feedback_sink(ep) &&
1478             !(ep->chip->quirk_flags & QUIRK_FLAG_PLAYBACK_FIRST)) {
1479                 usb_audio_dbg(ep->chip, "No URB submission due to implicit fb sync\n");
1480                 i = 0;
1481                 goto fill_rest;
1482         }
1483
1484         for (i = 0; i < ep->nurbs; i++) {
1485                 struct urb *urb = ep->urb[i].urb;
1486
1487                 if (snd_BUG_ON(!urb))
1488                         goto __error;
1489
1490                 if (is_playback)
1491                         err = prepare_outbound_urb(ep, urb->context, true);
1492                 else
1493                         err = prepare_inbound_urb(ep, urb->context);
1494                 if (err < 0) {
1495                         /* stop filling at applptr */
1496                         if (err == -EAGAIN)
1497                                 break;
1498                         usb_audio_dbg(ep->chip,
1499                                       "EP 0x%x: failed to prepare urb: %d\n",
1500                                       ep->ep_num, err);
1501                         goto __error;
1502                 }
1503
1504                 err = usb_submit_urb(urb, GFP_ATOMIC);
1505                 if (err < 0) {
1506                         usb_audio_err(ep->chip,
1507                                 "cannot submit urb %d, error %d: %s\n",
1508                                 i, err, usb_error_string(err));
1509                         goto __error;
1510                 }
1511                 set_bit(i, &ep->active_mask);
1512                 atomic_inc(&ep->submitted_urbs);
1513         }
1514
1515         if (!i) {
1516                 usb_audio_dbg(ep->chip, "XRUN at starting EP 0x%x\n",
1517                               ep->ep_num);
1518                 goto __error;
1519         }
1520
1521         usb_audio_dbg(ep->chip, "%d URBs submitted for EP 0x%x\n",
1522                       i, ep->ep_num);
1523
1524  fill_rest:
1525         /* put the remaining URBs to ready list */
1526         if (is_playback) {
1527                 for (; i < ep->nurbs; i++)
1528                         push_back_to_ready_list(ep, ep->urb + i);
1529         }
1530
1531         return 0;
1532
1533 __error:
1534         snd_usb_endpoint_stop(ep, false);
1535         return -EPIPE;
1536 }
1537
1538 /**
1539  * snd_usb_endpoint_stop: stop an snd_usb_endpoint
1540  *
1541  * @ep: the endpoint to stop (may be NULL)
1542  * @keep_pending: keep in-flight URBs
1543  *
1544  * A call to this function will decrement the running count of the endpoint.
1545  * In case the last user has requested the endpoint stop, the URBs will
1546  * actually be deactivated.
1547  *
1548  * Must be balanced to calls of snd_usb_endpoint_start().
1549  *
1550  * The caller needs to synchronize the pending stop operation via
1551  * snd_usb_endpoint_sync_pending_stop().
1552  */
1553 void snd_usb_endpoint_stop(struct snd_usb_endpoint *ep, bool keep_pending)
1554 {
1555         if (!ep)
1556                 return;
1557
1558         usb_audio_dbg(ep->chip, "Stopping %s EP 0x%x (running %d)\n",
1559                       ep_type_name(ep->type), ep->ep_num,
1560                       atomic_read(&ep->running));
1561
1562         if (snd_BUG_ON(!atomic_read(&ep->running)))
1563                 return;
1564
1565         if (!atomic_dec_return(&ep->running)) {
1566                 if (ep->sync_source)
1567                         WRITE_ONCE(ep->sync_source->sync_sink, NULL);
1568                 stop_urbs(ep, false, keep_pending);
1569         }
1570 }
1571
1572 /**
1573  * snd_usb_endpoint_release: Tear down an snd_usb_endpoint
1574  *
1575  * @ep: the endpoint to release
1576  *
1577  * This function does not care for the endpoint's running count but will tear
1578  * down all the streaming URBs immediately.
1579  */
1580 void snd_usb_endpoint_release(struct snd_usb_endpoint *ep)
1581 {
1582         release_urbs(ep, true);
1583 }
1584
1585 /**
1586  * snd_usb_endpoint_free_all: Free the resources of an snd_usb_endpoint
1587  * @chip: The chip
1588  *
1589  * This free all endpoints and those resources
1590  */
1591 void snd_usb_endpoint_free_all(struct snd_usb_audio *chip)
1592 {
1593         struct snd_usb_endpoint *ep, *en;
1594         struct snd_usb_iface_ref *ip, *in;
1595
1596         list_for_each_entry_safe(ep, en, &chip->ep_list, list)
1597                 kfree(ep);
1598
1599         list_for_each_entry_safe(ip, in, &chip->iface_ref_list, list)
1600                 kfree(ip);
1601 }
1602
1603 /*
1604  * snd_usb_handle_sync_urb: parse an USB sync packet
1605  *
1606  * @ep: the endpoint to handle the packet
1607  * @sender: the sending endpoint
1608  * @urb: the received packet
1609  *
1610  * This function is called from the context of an endpoint that received
1611  * the packet and is used to let another endpoint object handle the payload.
1612  */
1613 static void snd_usb_handle_sync_urb(struct snd_usb_endpoint *ep,
1614                                     struct snd_usb_endpoint *sender,
1615                                     const struct urb *urb)
1616 {
1617         int shift;
1618         unsigned int f;
1619         unsigned long flags;
1620
1621         snd_BUG_ON(ep == sender);
1622
1623         /*
1624          * In case the endpoint is operating in implicit feedback mode, prepare
1625          * a new outbound URB that has the same layout as the received packet
1626          * and add it to the list of pending urbs. queue_pending_output_urbs()
1627          * will take care of them later.
1628          */
1629         if (snd_usb_endpoint_implicit_feedback_sink(ep) &&
1630             atomic_read(&ep->running)) {
1631
1632                 /* implicit feedback case */
1633                 int i, bytes = 0;
1634                 struct snd_urb_ctx *in_ctx;
1635                 struct snd_usb_packet_info *out_packet;
1636
1637                 in_ctx = urb->context;
1638
1639                 /* Count overall packet size */
1640                 for (i = 0; i < in_ctx->packets; i++)
1641                         if (urb->iso_frame_desc[i].status == 0)
1642                                 bytes += urb->iso_frame_desc[i].actual_length;
1643
1644                 /*
1645                  * skip empty packets. At least M-Audio's Fast Track Ultra stops
1646                  * streaming once it received a 0-byte OUT URB
1647                  */
1648                 if (bytes == 0)
1649                         return;
1650
1651                 spin_lock_irqsave(&ep->lock, flags);
1652                 if (ep->next_packet_queued >= ARRAY_SIZE(ep->next_packet)) {
1653                         spin_unlock_irqrestore(&ep->lock, flags);
1654                         usb_audio_err(ep->chip,
1655                                       "next package FIFO overflow EP 0x%x\n",
1656                                       ep->ep_num);
1657                         notify_xrun(ep);
1658                         return;
1659                 }
1660
1661                 out_packet = next_packet_fifo_enqueue(ep);
1662
1663                 /*
1664                  * Iterate through the inbound packet and prepare the lengths
1665                  * for the output packet. The OUT packet we are about to send
1666                  * will have the same amount of payload bytes per stride as the
1667                  * IN packet we just received. Since the actual size is scaled
1668                  * by the stride, use the sender stride to calculate the length
1669                  * in case the number of channels differ between the implicitly
1670                  * fed-back endpoint and the synchronizing endpoint.
1671                  */
1672
1673                 out_packet->packets = in_ctx->packets;
1674                 for (i = 0; i < in_ctx->packets; i++) {
1675                         if (urb->iso_frame_desc[i].status == 0)
1676                                 out_packet->packet_size[i] =
1677                                         urb->iso_frame_desc[i].actual_length / sender->stride;
1678                         else
1679                                 out_packet->packet_size[i] = 0;
1680                 }
1681
1682                 spin_unlock_irqrestore(&ep->lock, flags);
1683                 snd_usb_queue_pending_output_urbs(ep, false);
1684
1685                 return;
1686         }
1687
1688         /*
1689          * process after playback sync complete
1690          *
1691          * Full speed devices report feedback values in 10.14 format as samples
1692          * per frame, high speed devices in 16.16 format as samples per
1693          * microframe.
1694          *
1695          * Because the Audio Class 1 spec was written before USB 2.0, many high
1696          * speed devices use a wrong interpretation, some others use an
1697          * entirely different format.
1698          *
1699          * Therefore, we cannot predict what format any particular device uses
1700          * and must detect it automatically.
1701          */
1702
1703         if (urb->iso_frame_desc[0].status != 0 ||
1704             urb->iso_frame_desc[0].actual_length < 3)
1705                 return;
1706
1707         f = le32_to_cpup(urb->transfer_buffer);
1708         if (urb->iso_frame_desc[0].actual_length == 3)
1709                 f &= 0x00ffffff;
1710         else
1711                 f &= 0x0fffffff;
1712
1713         if (f == 0)
1714                 return;
1715
1716         if (unlikely(sender->tenor_fb_quirk)) {
1717                 /*
1718                  * Devices based on Tenor 8802 chipsets (TEAC UD-H01
1719                  * and others) sometimes change the feedback value
1720                  * by +/- 0x1.0000.
1721                  */
1722                 if (f < ep->freqn - 0x8000)
1723                         f += 0xf000;
1724                 else if (f > ep->freqn + 0x8000)
1725                         f -= 0xf000;
1726         } else if (unlikely(ep->freqshift == INT_MIN)) {
1727                 /*
1728                  * The first time we see a feedback value, determine its format
1729                  * by shifting it left or right until it matches the nominal
1730                  * frequency value.  This assumes that the feedback does not
1731                  * differ from the nominal value more than +50% or -25%.
1732                  */
1733                 shift = 0;
1734                 while (f < ep->freqn - ep->freqn / 4) {
1735                         f <<= 1;
1736                         shift++;
1737                 }
1738                 while (f > ep->freqn + ep->freqn / 2) {
1739                         f >>= 1;
1740                         shift--;
1741                 }
1742                 ep->freqshift = shift;
1743         } else if (ep->freqshift >= 0)
1744                 f <<= ep->freqshift;
1745         else
1746                 f >>= -ep->freqshift;
1747
1748         if (likely(f >= ep->freqn - ep->freqn / 8 && f <= ep->freqmax)) {
1749                 /*
1750                  * If the frequency looks valid, set it.
1751                  * This value is referred to in prepare_playback_urb().
1752                  */
1753                 spin_lock_irqsave(&ep->lock, flags);
1754                 ep->freqm = f;
1755                 spin_unlock_irqrestore(&ep->lock, flags);
1756         } else {
1757                 /*
1758                  * Out of range; maybe the shift value is wrong.
1759                  * Reset it so that we autodetect again the next time.
1760                  */
1761                 ep->freqshift = INT_MIN;
1762         }
1763 }
1764