From c4c06227b02a3af6274f6ea0780cce7c79530293 Mon Sep 17 00:00:00 2001 From: Cai YiWei Date: Tue, 2 Jan 2024 11:52:52 +0800 Subject: [PATCH] media: rockchip: isp: add RKISP_CMD_SET_TB_HEAD_V32 API Change-Id: I07ae10d69ae977ff5932c377e24eefbd48387946 Signed-off-by: Cai YiWei --- drivers/media/platform/rockchip/isp/rkisp.c | 8 +++++++- include/uapi/linux/rk-isp2-config.h | 1 + include/uapi/linux/rk-isp32-config.h | 3 +++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/media/platform/rockchip/isp/rkisp.c b/drivers/media/platform/rockchip/isp/rkisp.c index b90a411b4622..e09db6296f0f 100644 --- a/drivers/media/platform/rockchip/isp/rkisp.c +++ b/drivers/media/platform/rockchip/isp/rkisp.c @@ -3508,7 +3508,8 @@ static long rkisp_ioctl(struct v4l2_subdev *sd, unsigned int cmd, void *arg) rkisp_get_info(isp_dev, arg); break; case RKISP_CMD_GET_TB_HEAD_V32: - if (isp_dev->tb_head.complete != RKISP_TB_OK) { + if (isp_dev->tb_head.complete != RKISP_TB_OK || + (!isp_dev->is_rtt_suspend && !isp_dev->is_pre_on)) { ret = -EINVAL; break; } @@ -3518,6 +3519,11 @@ static long rkisp_ioctl(struct v4l2_subdev *sd, unsigned int cmd, void *arg) memcpy(&tb_head_v32->cfg, isp_dev->params_vdev.isp32_params, sizeof(struct isp32_isp_params_cfg)); break; + case RKISP_CMD_SET_TB_HEAD_V32: + tb_head_v32 = arg; + memcpy(&isp_dev->tb_head, tb_head_v32, + sizeof(struct rkisp_thunderboot_resmem_head)); + break; case RKISP_CMD_GET_SHARED_BUF: if (!IS_ENABLED(CONFIG_VIDEO_ROCKCHIP_THUNDER_BOOT_ISP)) { ret = -ENOIOCTLCMD; diff --git a/include/uapi/linux/rk-isp2-config.h b/include/uapi/linux/rk-isp2-config.h index 50949e0752bc..fc5177820177 100644 --- a/include/uapi/linux/rk-isp2-config.h +++ b/include/uapi/linux/rk-isp2-config.h @@ -52,6 +52,7 @@ _IOW('V', BASE_VIDIOC_PRIVATE + 11, long long) /* BASE_VIDIOC_PRIVATE + 12 for RKISP_CMD_GET_TB_HEAD_V32 */ +/* BASE_VIDIOC_PRIVATE + 14 for RKISP_CMD_SET_TB_HEAD_V32 */ /* for all isp device stop and no power off but resolution change */ #define RKISP_CMD_MULTI_DEV_FORCE_ENUM \ diff --git a/include/uapi/linux/rk-isp32-config.h b/include/uapi/linux/rk-isp32-config.h index ecd4eaef2cd3..218023c93f14 100644 --- a/include/uapi/linux/rk-isp32-config.h +++ b/include/uapi/linux/rk-isp32-config.h @@ -14,6 +14,9 @@ #define RKISP_CMD_GET_TB_HEAD_V32 \ _IOR('V', BASE_VIDIOC_PRIVATE + 12, struct rkisp32_thunderboot_resmem_head) +#define RKISP_CMD_SET_TB_HEAD_V32 \ + _IOW('V', BASE_VIDIOC_PRIVATE + 14, struct rkisp32_thunderboot_resmem_head) + #define ISP32_MODULE_DPCC ISP3X_MODULE_DPCC #define ISP32_MODULE_BLS ISP3X_MODULE_BLS #define ISP32_MODULE_SDG ISP3X_MODULE_SDG