From d466135aefd93f28275e9bd388181361469d9975 Mon Sep 17 00:00:00 2001 From: Zefa Chen Date: Mon, 7 Mar 2022 10:53:57 +0800 Subject: [PATCH] media: rockchip: vicap: fix hdr mode timestamp bug Signed-off-by: Zefa Chen Change-Id: Ie355235dd0568b3c790c7bfca558da870edb922e --- drivers/media/platform/rockchip/cif/capture.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/drivers/media/platform/rockchip/cif/capture.c b/drivers/media/platform/rockchip/cif/capture.c index cd523e2a8b6b..0cf541651d83 100644 --- a/drivers/media/platform/rockchip/cif/capture.c +++ b/drivers/media/platform/rockchip/cif/capture.c @@ -7340,6 +7340,7 @@ void rkcif_irq_pingpong_v1(struct rkcif_device *cif_dev) struct rkcif_stream *detect_stream = &cif_dev->stream[0]; struct v4l2_mbus_config *mbus; unsigned int intstat, i = 0xff, bak_intstat = 0; + unsigned long flags; if (!cif_dev->active_sensor) return; @@ -7396,10 +7397,17 @@ void rkcif_irq_pingpong_v1(struct rkcif_device *cif_dev) return; } - if (intstat & CSI_FRAME0_START_ID0 || intstat & CSI_FRAME1_START_ID0) - rkcif_deal_sof(cif_dev); - for (i = 0; i < RKCIF_MAX_STREAM_MIPI; i++) { + if (intstat & CSI_START_INTSTAT(i)) { + stream = &cif_dev->stream[i]; + if (i == 0) { + rkcif_deal_sof(cif_dev); + } else { + spin_lock_irqsave(&stream->fps_lock, flags); + stream->readout.fs_timestamp = ktime_get_ns(); + spin_unlock_irqrestore(&stream->fps_lock, flags); + } + } if (intstat & CSI_LINE_INTSTAT(i)) { stream = &cif_dev->stream[i]; if (stream->is_line_inten) {