buf->vb.field_count++;
do_gettimeofday(&buf->vb.ts);
+ dev->isoc_ctl.buf = NULL;
+
list_del(&buf->vb.queue);
wake_up(&buf->vb.done);
}
{
struct em28xx *dev = container_of(dma_q, struct em28xx, vidq);
+ /* If the previous buffer were not filled yet, continue */
+ *buf = dev->isoc_ctl.buf;
+ if (*buf)
+ return 1;
+
if (list_empty(&dma_q->active)) {
em28xx_isocdbg("No active queue to serve\n");
return 0;
*buf = list_entry(dma_q->active.next, struct em28xx_buffer, vb.queue);
+
+ dev->isoc_ctl.buf = *buf;
+
return 1;
}
return 0;
}
- buf = dev->isoc_ctl.buf;
-
- if (!buf) {
- rc = get_next_buf(dma_q, &buf);
- if (rc <= 0)
- return rc;
- }
+ rc = get_next_buf(dma_q, &buf);
+ if (rc <= 0)
+ return rc;
outp = videobuf_to_vmalloc(&buf->vb);
rc = get_next_buf(dma_q, &buf);
if (rc <= 0)
return rc;
-
outp = videobuf_to_vmalloc(&buf->vb);
}
em28xx_isocdbg("em28xx: called em28xx_uninit_isoc\n");
dev->isoc_ctl.nfields = -1;
- dev->isoc_ctl.buf = NULL;
for (i = 0; i < dev->isoc_ctl.num_bufs; i++) {
urb = dev->isoc_ctl.urb[i];
if (urb) {
}
dev->isoc_ctl.max_pkt_size = dev->max_pkt_size;
+ dev->isoc_ctl.buf = NULL;
sb_size = max_packets * dev->isoc_ctl.max_pkt_size;