|
@@ -103,6 +103,8 @@ struct bcap_device {
|
|
|
struct completion comp;
|
|
|
/* prepare to stop */
|
|
|
bool stop;
|
|
|
+ /* vb2 buffer sequence counter */
|
|
|
+ unsigned sequence;
|
|
|
};
|
|
|
|
|
|
static const struct bcap_format bcap_formats[] = {
|
|
@@ -333,6 +335,8 @@ static int bcap_start_streaming(struct vb2_queue *vq, unsigned int count)
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
|
+ bcap_dev->sequence = 0;
|
|
|
+
|
|
|
reinit_completion(&bcap_dev->comp);
|
|
|
bcap_dev->stop = false;
|
|
|
|
|
@@ -411,6 +415,7 @@ static irqreturn_t bcap_isr(int irq, void *dev_id)
|
|
|
vb2_buffer_done(vb, VB2_BUF_STATE_ERROR);
|
|
|
ppi->err = false;
|
|
|
} else {
|
|
|
+ vb->v4l2_buf.sequence = bcap_dev->sequence++;
|
|
|
vb2_buffer_done(vb, VB2_BUF_STATE_DONE);
|
|
|
}
|
|
|
bcap_dev->cur_frm = list_entry(bcap_dev->dma_queue.next,
|