From 06376fa564014386ae126b58d9c19373f6bf802f Mon Sep 17 00:00:00 2001 From: Cai YiWei Date: Tue, 1 Apr 2025 16:17:27 +0800 Subject: [PATCH] media: rockchip: vpss: attach info for rockit Change-Id: I4411edb68f7cf9e3e22ffcc6aa9d53a56d0e0e73 Signed-off-by: Cai YiWei --- .../media/platform/rockchip/vpss/stream_v20.c | 3 ++- .../platform/rockchip/vpss/vpss_rockit.c | 23 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/drivers/media/platform/rockchip/vpss/stream_v20.c b/drivers/media/platform/rockchip/vpss/stream_v20.c index 8fc95b210f39..731c5dfaa6f1 100644 --- a/drivers/media/platform/rockchip/vpss/stream_v20.c +++ b/drivers/media/platform/rockchip/vpss/stream_v20.c @@ -1184,7 +1184,8 @@ static void rkvpss_frame_end(struct rkvpss_stream *stream) vb2_set_plane_payload(vb2_buf, i, payload_size); - if (stream->is_attach_info && i == fmt->mplanes - 1) { + if (stream->is_attach_info && + vb2_buf->memory && i == fmt->mplanes - 1) { struct rkvpss_frame_info *dst_info = buf->vaddr[i] + payload_size; struct rkisp_vpss_frame_info *src_info = &dev->frame_info; diff --git a/drivers/media/platform/rockchip/vpss/vpss_rockit.c b/drivers/media/platform/rockchip/vpss/vpss_rockit.c index 5d6bf1f3315f..f54655f1c6a6 100644 --- a/drivers/media/platform/rockchip/vpss/vpss_rockit.c +++ b/drivers/media/platform/rockchip/vpss/vpss_rockit.c @@ -314,6 +314,29 @@ int rkvpss_rockit_buf_done(struct rkvpss_stream *stream, int cmd, struct rkvpss_ rockit_vpss_cfg->node = stream_cfg->node; rockit_vpss_cfg->event = cmd; + if (stream->is_attach_info) { + struct rkisp_vpss_frame_info *src_info = &vpss_dev->frame_info; + + rockit_vpss_cfg->frame.u64PTS = src_info->timestamp; + rockit_vpss_cfg->frame.hdr = src_info->hdr; + rockit_vpss_cfg->frame.rolling_shutter_skew = src_info->rolling_shutter_skew; + + rockit_vpss_cfg->frame.sensor_exposure_time = src_info->sensor_exposure_time; + rockit_vpss_cfg->frame.sensor_analog_gain = src_info->sensor_analog_gain; + rockit_vpss_cfg->frame.sensor_digital_gain = src_info->sensor_digital_gain; + rockit_vpss_cfg->frame.isp_digital_gain = src_info->isp_digital_gain; + + rockit_vpss_cfg->frame.sensor_exposure_time_m = src_info->sensor_exposure_time_m; + rockit_vpss_cfg->frame.sensor_analog_gain_m = src_info->sensor_analog_gain_m; + rockit_vpss_cfg->frame.sensor_digital_gain_m = src_info->sensor_digital_gain_m; + rockit_vpss_cfg->frame.isp_digital_gain_m = src_info->isp_digital_gain_m; + + rockit_vpss_cfg->frame.sensor_exposure_time_l = src_info->sensor_exposure_time_l; + rockit_vpss_cfg->frame.sensor_analog_gain_l = src_info->sensor_analog_gain_l; + rockit_vpss_cfg->frame.sensor_digital_gain_l = src_info->sensor_digital_gain_l; + rockit_vpss_cfg->frame.isp_digital_gain_l = src_info->isp_digital_gain_l; + } + if (list_empty(&stream->buf_queue)) rockit_vpss_cfg->is_empty = true; else