Lines Matching refs:urb

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