|
@@ -361,10 +361,20 @@ static void fimc_capture_irq_handler(struct fimc_dev *fimc)
|
|
|
{
|
|
|
struct fimc_vid_cap *cap = &fimc->vid_cap;
|
|
|
struct fimc_vid_buffer *v_buf;
|
|
|
+ struct timeval *tv;
|
|
|
+ struct timespec ts;
|
|
|
|
|
|
if (!list_empty(&cap->active_buf_q) &&
|
|
|
test_bit(ST_CAPT_RUN, &fimc->state)) {
|
|
|
+ ktime_get_real_ts(&ts);
|
|
|
+
|
|
|
v_buf = active_queue_pop(cap);
|
|
|
+
|
|
|
+ tv = &v_buf->vb.v4l2_buf.timestamp;
|
|
|
+ tv->tv_sec = ts.tv_sec;
|
|
|
+ tv->tv_usec = ts.tv_nsec / NSEC_PER_USEC;
|
|
|
+ v_buf->vb.v4l2_buf.sequence = cap->frame_count++;
|
|
|
+
|
|
|
vb2_buffer_done(&v_buf->vb, VB2_BUF_STATE_DONE);
|
|
|
}
|
|
|
|