Lines Matching refs:urb

31 /* Default value used for nr of packs per urb.
50 static int nrpacks = USX2Y_NRPACKS; /* number of packets per urb */
60 struct urb *urb = subs->completed_urb;
68 cp = (unsigned char *)urb->transfer_buffer + urb->iso_frame_desc[i].offset;
69 if (urb->iso_frame_desc[i].status) { /* active? hmm, skip this */
72 urb->iso_frame_desc[i].status);
73 return urb->iso_frame_desc[i].status;
75 len = urb->iso_frame_desc[i].actual_length / usx2y->stride;
108 * prepare urb for playback data pipe
112 * since a urb can handle only a single linear buffer, if the total
115 * a temporary buffer and urb points to that.
118 struct urb *cap_urb,
119 struct urb *urb)
135 urb->iso_frame_desc[pack].offset = pack ?
136 urb->iso_frame_desc[pack - 1].offset +
137 urb->iso_frame_desc[pack - 1].length :
139 urb->iso_frame_desc[pack].length = cap_urb->iso_frame_desc[pack].actual_length;
147 urb->transfer_buffer = subs->tmpbuf;
156 urb->transfer_buffer = runtime->dma_area + subs->hwptr * usx2y->stride;
162 urb->transfer_buffer = subs->tmpbuf;
164 urb->transfer_buffer_length = count * usx2y->stride;
173 static void usx2y_urb_play_retire(struct snd_usx2y_substream *subs, struct urb *urb)
176 int len = urb->actual_length / subs->usx2y->stride;
188 static int usx2y_urb_submit(struct snd_usx2y_substream *subs, struct urb *urb, int frame)
192 if (!urb)
194 urb->start_frame = frame + NRURBS * nr_of_packs(); // let hcd do rollover sanity checks
195 urb->hcpriv = NULL;
196 urb->dev = subs->usx2y->dev; /* we need to set this at each time */
197 err = usb_submit_urb(urb, GFP_ATOMIC);
210 struct urb *urb = playbacksubs->completed_urb;
213 if (urb) {
215 usx2y_urb_play_retire(playbacksubs, urb);
221 urb = playbacksubs->urb[0];
225 urb = playbacksubs->urb[1];
230 if (urb) {
231 err = usx2y_urb_play_prepare(playbacksubs, capsubs->completed_urb, urb);
234 err = usx2y_urb_submit(playbacksubs, urb, frame);
261 struct urb *urb;
277 urb = subs->urb[u];
278 if (urb)
280 u, urb->status, urb->start_frame);
289 struct snd_usx2y_substream *subs, struct urb *urb)
291 snd_printk(KERN_ERR "ep=%i stalled with status=%i\n", subs->endpoint, urb->status);
292 urb->status = 0;
296 static void i_usx2y_urb_complete(struct urb *urb)
298 struct snd_usx2y_substream *subs = urb->context;
305 subs->endpoint, usb_pipein(urb->pipe) ? "in" : "out",
306 urb->status, urb->start_frame);
309 if (unlikely(urb->status)) {
310 usx2y_error_urb_status(usx2y, subs, urb);
314 subs->completed_urb = urb;
323 if (!usx2y_usbframe_complete(capsubs, playbacksubs, urb->start_frame)) {
333 void (*complete)(struct urb *))
336 struct urb *urb;
343 urb = subs->urb[u];
344 if (urb)
345 urb->complete = complete;
357 static void i_usx2y_subs_startup(struct urb *urb)
359 struct snd_usx2y_substream *subs = urb->context;
364 if (urb->start_frame == prepare_subs->urb[0]->start_frame) {
371 i_usx2y_urb_complete(urb);
377 subs, subs->endpoint, subs->urb[0], subs->urb[1]);
384 static void usx2y_urb_release(struct urb **urb, int free_tb)
386 if (*urb) {
387 usb_kill_urb(*urb);
389 kfree((*urb)->transfer_buffer);
390 usb_free_urb(*urb);
391 *urb = NULL;
404 usx2y_urb_release(subs->urb + i,
420 struct urb **purb;
435 purb = subs->urb + i;
446 /* allocate a capture buffer per urb */
470 subs->urb[0]->start_frame = -1;
479 struct urb *urb;
496 urb = subs->urb[i];
497 if (usb_pipein(urb->pipe)) {
500 urb->dev = usx2y->dev;
502 urb->iso_frame_desc[pack].offset = subs->maxpacksize * pack;
503 urb->iso_frame_desc[pack].length = subs->maxpacksize;
505 urb->transfer_buffer_length = subs->maxpacksize * nr_of_packs();
506 err = usb_submit_urb(urb, GFP_ATOMIC);
508 snd_printk(KERN_ERR "cannot submit datapipe for urb %d, err = %d\n", i, err);
513 usx2y->wait_iso_frame = urb->start_frame;
515 urb->transfer_flags = 0;
659 static void i_usx2y_04int(struct urb *urb)
661 struct usx2ydev *usx2y = urb->context;
663 if (urb->status)
664 snd_printk(KERN_ERR "snd_usx2y_04int() urb->status=%i\n", urb->status);
675 struct urb *urb;
678 us = kzalloc(struct_size(us, urb, NOOF_SETRATE_URBS),
691 us->urb[i] = usb_alloc_urb(0, GFP_KERNEL);
692 if (!us->urb[i]) {
698 usb_fill_bulk_urb(us->urb[i], usx2y->dev, usb_sndbulkpipe(usx2y->dev, 4),
701 err = usb_urb_ep_type_check(us->urb[0]);
715 urb = us->urb[i];
716 if (!urb)
718 if (urb->status) {
721 usb_kill_urb(urb);
723 usb_free_urb(urb);