Lines Matching refs:urb
59 struct urb *urb = subs->completed_urb; in usx2y_urb_capt_retire() local
66 cp = (unsigned char*)urb->transfer_buffer + urb->iso_frame_desc[i].offset; in usx2y_urb_capt_retire()
67 if (urb->iso_frame_desc[i].status) { /* active? hmm, skip this */ in usx2y_urb_capt_retire()
70 urb->iso_frame_desc[i].status); in usx2y_urb_capt_retire()
71 return urb->iso_frame_desc[i].status; in usx2y_urb_capt_retire()
73 len = urb->iso_frame_desc[i].actual_length / usx2y->stride; in usx2y_urb_capt_retire()
114 struct urb *cap_urb, in usx2y_urb_play_prepare()
115 struct urb *urb) in usx2y_urb_play_prepare() argument
131 urb->iso_frame_desc[pack].offset = pack ? in usx2y_urb_play_prepare()
132 urb->iso_frame_desc[pack - 1].offset + in usx2y_urb_play_prepare()
133 urb->iso_frame_desc[pack - 1].length : in usx2y_urb_play_prepare()
135 urb->iso_frame_desc[pack].length = cap_urb->iso_frame_desc[pack].actual_length; in usx2y_urb_play_prepare()
144 urb->transfer_buffer = subs->tmpbuf; in usx2y_urb_play_prepare()
153 urb->transfer_buffer = runtime->dma_area + subs->hwptr * usx2y->stride; in usx2y_urb_play_prepare()
158 urb->transfer_buffer = subs->tmpbuf; in usx2y_urb_play_prepare()
159 urb->transfer_buffer_length = count * usx2y->stride; in usx2y_urb_play_prepare()
168 static void usx2y_urb_play_retire(struct snd_usx2y_substream *subs, struct urb *urb) in usx2y_urb_play_retire() argument
171 int len = urb->actual_length / subs->usx2y->stride; in usx2y_urb_play_retire()
183 static int usx2y_urb_submit(struct snd_usx2y_substream *subs, struct urb *urb, int frame) in usx2y_urb_submit() argument
186 if (!urb) in usx2y_urb_submit()
188 urb->start_frame = (frame + NRURBS * nr_of_packs()); // let hcd do rollover sanity checks in usx2y_urb_submit()
189 urb->hcpriv = NULL; in usx2y_urb_submit()
190 urb->dev = subs->usx2y->dev; /* we need to set this at each time */ in usx2y_urb_submit()
191 if ((err = usb_submit_urb(urb, GFP_ATOMIC)) < 0) { in usx2y_urb_submit()
203 struct urb *urb = playbacksubs->completed_urb; in usx2y_usbframe_complete() local
206 if (NULL != urb) { in usx2y_usbframe_complete()
208 usx2y_urb_play_retire(playbacksubs, urb); in usx2y_usbframe_complete()
214 urb = playbacksubs->urb[0]; in usx2y_usbframe_complete()
218 urb = playbacksubs->urb[1]; in usx2y_usbframe_complete()
223 if (urb) { in usx2y_usbframe_complete()
224 if ((err = usx2y_urb_play_prepare(playbacksubs, capsubs->completed_urb, urb)) || in usx2y_usbframe_complete()
225 (err = usx2y_urb_submit(playbacksubs, urb, frame))) { in usx2y_usbframe_complete()
264 struct urb *urb = subs->urb[u]; in usx2y_clients_stop() local
265 if (NULL != urb) in usx2y_clients_stop()
267 u, urb->status, urb->start_frame); in usx2y_clients_stop()
276 struct snd_usx2y_substream *subs, struct urb *urb) in usx2y_error_urb_status() argument
278 snd_printk(KERN_ERR "ep=%i stalled with status=%i\n", subs->endpoint, urb->status); in usx2y_error_urb_status()
279 urb->status = 0; in usx2y_error_urb_status()
283 static void i_usx2y_urb_complete(struct urb *urb) in i_usx2y_urb_complete() argument
285 struct snd_usx2y_substream *subs = urb->context; in i_usx2y_urb_complete()
291 subs->endpoint, usb_pipein(urb->pipe) ? "in" : "out", in i_usx2y_urb_complete()
292 urb->status, urb->start_frame); in i_usx2y_urb_complete()
295 if (unlikely(urb->status)) { in i_usx2y_urb_complete()
296 usx2y_error_urb_status(usx2y, subs, urb); in i_usx2y_urb_complete()
300 subs->completed_urb = urb; in i_usx2y_urb_complete()
309 if (!usx2y_usbframe_complete(capsubs, playbacksubs, urb->start_frame)) in i_usx2y_urb_complete()
320 void (*complete)(struct urb *)) in usx2y_urbs_set_complete() argument
327 struct urb * urb = subs->urb[u]; in usx2y_urbs_set_complete() local
328 if (NULL != urb) in usx2y_urbs_set_complete()
329 urb->complete = complete; in usx2y_urbs_set_complete()
340 static void i_usx2y_subs_startup(struct urb *urb) in i_usx2y_subs_startup() argument
342 struct snd_usx2y_substream *subs = urb->context; in i_usx2y_subs_startup()
346 if (urb->start_frame == prepare_subs->urb[0]->start_frame) { in i_usx2y_subs_startup()
352 i_usx2y_urb_complete(urb); in i_usx2y_subs_startup()
358 subs, subs->endpoint, subs->urb[0], subs->urb[1]); in usx2y_subs_prepare()
366 static void usx2y_urb_release(struct urb **urb, int free_tb) in usx2y_urb_release() argument
368 if (*urb) { in usx2y_urb_release()
369 usb_kill_urb(*urb); in usx2y_urb_release()
371 kfree((*urb)->transfer_buffer); in usx2y_urb_release()
372 usb_free_urb(*urb); in usx2y_urb_release()
373 *urb = NULL; in usx2y_urb_release()
384 usx2y_urb_release(subs->urb + i, in usx2y_urbs_release()
413 struct urb **purb = subs->urb + i; in usx2y_urbs_allocate()
447 subs->urb[0]->start_frame = -1; in usx2y_subs_startup()
469 struct urb *urb = subs->urb[i]; in usx2y_urbs_start() local
470 if (usb_pipein(urb->pipe)) { in usx2y_urbs_start()
474 urb->dev = usx2y->dev; in usx2y_urbs_start()
476 urb->iso_frame_desc[pack].offset = subs->maxpacksize * pack; in usx2y_urbs_start()
477 urb->iso_frame_desc[pack].length = subs->maxpacksize; in usx2y_urbs_start()
479 urb->transfer_buffer_length = subs->maxpacksize * nr_of_packs(); in usx2y_urbs_start()
480 if ((err = usb_submit_urb(urb, GFP_ATOMIC)) < 0) { in usx2y_urbs_start()
486 usx2y->wait_iso_frame = urb->start_frame; in usx2y_urbs_start()
487 urb->transfer_flags = 0; in usx2y_urbs_start()
630 static void i_usx2y_04int(struct urb *urb) in i_usx2y_04int() argument
632 struct usx2ydev *usx2y = urb->context; in i_usx2y_04int()
634 if (urb->status) in i_usx2y_04int()
635 snd_printk(KERN_ERR "snd_usx2y_04int() urb->status=%i\n", urb->status); in i_usx2y_04int()
648 us = kzalloc(sizeof(*us) + sizeof(struct urb*) * NOOF_SETRATE_URBS, GFP_KERNEL); in usx2y_rate_set()
660 if (NULL == (us->urb[i] = usb_alloc_urb(0, GFP_KERNEL))) { in usx2y_rate_set()
666 usb_fill_bulk_urb(us->urb[i], usx2y->dev, usb_sndbulkpipe(usx2y->dev, 4), in usx2y_rate_set()
669 err = usb_urb_ep_type_check(us->urb[0]); in usx2y_rate_set()
683 struct urb *urb = us->urb[i]; in usx2y_rate_set() local
684 if (!urb) in usx2y_rate_set()
686 if (urb->status) { in usx2y_rate_set()
689 usb_kill_urb(urb); in usx2y_rate_set()
691 usb_free_urb(urb); in usx2y_rate_set()