Lines Matching refs:urb
2 /* usb-urb.c is part of the DVB USB library.
15 static void usb_urb_complete(struct urb *urb)
17 struct usb_data_stream *stream = urb->context;
18 int ptype = usb_pipetype(urb->pipe);
22 deb_uxfer("'%s' urb completed. status: %d, length: %d/%d, pack_num: %d, errors: %d\n",
24 urb->status,urb->actual_length,urb->transfer_buffer_length,
25 urb->number_of_packets,urb->error_count);
27 switch (urb->status) {
36 deb_ts("urb completion error %d.\n", urb->status);
40 b = (u8 *) urb->transfer_buffer;
43 for (i = 0; i < urb->number_of_packets; i++) {
45 if (urb->iso_frame_desc[i].status != 0)
46 deb_ts("iso frame descriptor has an error: %d\n",urb->iso_frame_desc[i].status);
47 else if (urb->iso_frame_desc[i].actual_length > 0)
48 stream->complete(stream, b + urb->iso_frame_desc[i].offset, urb->iso_frame_desc[i].actual_length);
50 urb->iso_frame_desc[i].status = 0;
51 urb->iso_frame_desc[i].actual_length = 0;
56 if (urb->actual_length > 0)
57 stream->complete(stream, b, urb->actual_length);
63 usb_submit_urb(urb,GFP_ATOMIC);
123 deb_mem("not enough memory for urb-buffer allocation.\n");
178 struct urb *urb;
189 urb = stream->urb_list[i];
191 urb->dev = stream->udev;
192 urb->context = stream;
193 urb->complete = usb_urb_complete;
194 urb->pipe = usb_rcvisocpipe(stream->udev,stream->props.endpoint);
195 urb->transfer_flags = URB_ISO_ASAP | URB_NO_TRANSFER_DMA_MAP;
196 urb->interval = stream->props.u.isoc.interval;
197 urb->number_of_packets = stream->props.u.isoc.framesperurb;
198 urb->transfer_buffer_length = stream->buf_size;
199 urb->transfer_buffer = stream->buf_list[i];
200 urb->transfer_dma = stream->dma_addr[i];
203 urb->iso_frame_desc[j].offset = frame_offset;
204 urb->iso_frame_desc[j].length = stream->props.u.isoc.framesize;