[PATCH 3/7] media: v4l2-isp: Update users to initialise and validate new struct

Daniel Scally dan.scally at ideasonboard.com
Wed Nov 4 04:28:18 PST 2026


Update users of the v4l2-isp framework to initialise and validate the
new struct v4l2_isp. This has no practical effect for now, but will
reduce the churn in follow-on patches.

Signed-off-by: Daniel Scally <dan.scally at ideasonboard.com>
---
 drivers/media/platform/amlogic/c3/isp/c3-isp-common.h  |  2 ++
 drivers/media/platform/amlogic/c3/isp/c3-isp-params.c  | 10 ++++++++++
 drivers/media/platform/arm/mali-c55/mali-c55-common.h  |  1 +
 drivers/media/platform/arm/mali-c55/mali-c55-params.c  |  9 +++++++++
 drivers/media/platform/dreamchip/rppx1/rpp_params.c    | 10 ++++++++++
 drivers/media/platform/dreamchip/rppx1/rppx1.c         |  8 ++++++++
 drivers/media/platform/dreamchip/rppx1/rppx1.h         |  5 +++++
 drivers/media/platform/rockchip/rkisp1/rkisp1-common.h |  3 +++
 drivers/media/platform/rockchip/rkisp1/rkisp1-params.c |  9 +++++++++
 9 files changed, 57 insertions(+)

diff --git a/drivers/media/platform/amlogic/c3/isp/c3-isp-common.h b/drivers/media/platform/amlogic/c3/isp/c3-isp-common.h
index cb470802e61e85426c5a41150372753a405a2d32..222c2e91ce429904a50a702a9d38f286dfd7c5a6 100644
--- a/drivers/media/platform/amlogic/c3/isp/c3-isp-common.h
+++ b/drivers/media/platform/amlogic/c3/isp/c3-isp-common.h
@@ -11,6 +11,7 @@
 #include <media/media-device.h>
 #include <media/videobuf2-core.h>
 #include <media/v4l2-device.h>
+#include <media/v4l2-isp.h>
 #include <media/v4l2-subdev.h>
 #include <media/videobuf2-v4l2.h>
 
@@ -222,6 +223,7 @@ struct c3_isp_params {
 	struct video_device vdev;
 	struct v4l2_format vfmt;
 	struct media_pad pad;
+	struct v4l2_isp v4l2_isp;
 
 	struct mutex lock; /* Protects vb2_q, vdev */
 	struct c3_isp_device *isp;
diff --git a/drivers/media/platform/amlogic/c3/isp/c3-isp-params.c b/drivers/media/platform/amlogic/c3/isp/c3-isp-params.c
index ae0777a20bdaff822657c310e20b2011fc1e8ff2..25f6a7d9bad9d61d641690f43faceaae0f938da5 100644
--- a/drivers/media/platform/amlogic/c3/isp/c3-isp-params.c
+++ b/drivers/media/platform/amlogic/c3/isp/c3-isp-params.c
@@ -883,6 +883,16 @@ int c3_isp_params_register(struct c3_isp_device *isp)
 	params->vfmt.fmt.meta.dataformat = V4L2_META_FMT_C3ISP_PARAMS;
 	params->vfmt.fmt.meta.buffersize = sizeof(struct c3_isp_params_cfg);
 	params->isp = isp;
+
+	params->v4l2_isp.dev = isp->dev;
+	params->v4l2_isp.params.max_size = sizeof(struct c3_isp_params_cfg);
+	params->v4l2_isp.params.num_block_types = ARRAY_SIZE(c3_isp_params_block_types_info);
+	params->v4l2_isp.params.types_info = c3_isp_params_block_types_info;
+
+	ret = v4l2_isp_validate(&params->v4l2_isp);
+	if (ret)
+		return ret;
+
 	INIT_LIST_HEAD(&params->pending);
 	spin_lock_init(&params->buff_lock);
 	mutex_init(&params->lock);
diff --git a/drivers/media/platform/arm/mali-c55/mali-c55-common.h b/drivers/media/platform/arm/mali-c55/mali-c55-common.h
index 13a3e9dc424311869af581061190bf38c08fb469..c4cd200b89d12a539adb55a02a936280490dfca3 100644
--- a/drivers/media/platform/arm/mali-c55/mali-c55-common.h
+++ b/drivers/media/platform/arm/mali-c55/mali-c55-common.h
@@ -196,6 +196,7 @@ struct mali_c55_stats {
 
 struct mali_c55_params {
 	struct mali_c55 *mali_c55;
+	struct v4l2_isp v4l2_isp;
 	struct video_device vdev;
 	struct vb2_queue queue;
 	struct media_pad pad;
diff --git a/drivers/media/platform/arm/mali-c55/mali-c55-params.c b/drivers/media/platform/arm/mali-c55/mali-c55-params.c
index 16e895e3488ecc3ddb3808281a309901fd44103d..06509152a51a1d47355d3c7c9985112ce3c20450 100644
--- a/drivers/media/platform/arm/mali-c55/mali-c55-params.c
+++ b/drivers/media/platform/arm/mali-c55/mali-c55-params.c
@@ -1010,6 +1010,15 @@ int mali_c55_register_params(struct mali_c55 *mali_c55)
 	struct vb2_queue *vb2q = &params->queue;
 	int ret;
 
+	params->v4l2_isp.dev = mali_c55->dev;
+	params->v4l2_isp.params.max_size = v4l2_isp_buffer_size(MALI_C55_PARAMS_MAX_SIZE);
+	params->v4l2_isp.params.num_block_types = ARRAY_SIZE(mali_c55_params_block_types_info);
+	params->v4l2_isp.params.types_info = mali_c55_params_block_types_info;
+
+	ret = v4l2_isp_validate(&params->v4l2_isp);
+	if (ret)
+		return ret;
+
 	mutex_init(&params->lock);
 	INIT_LIST_HEAD(&params->buffers.queue);
 	spin_lock_init(&params->buffers.lock);
diff --git a/drivers/media/platform/dreamchip/rppx1/rpp_params.c b/drivers/media/platform/dreamchip/rppx1/rpp_params.c
index e804440f369b7bd6d85cc1a23a2610c1cca307fa..5b8b471198ec1d540f31c0ac1b15d0d54bd808fc 100644
--- a/drivers/media/platform/dreamchip/rppx1/rpp_params.c
+++ b/drivers/media/platform/dreamchip/rppx1/rpp_params.c
@@ -39,6 +39,16 @@ rppx1_ext_params_blocks_info[] = {
 	RPPX1_PARAMS_BLOCK_INFO(GA_MV, ga),
 };
 
+int rppx1_params_init(struct rppx1 *rpp)
+{
+	rpp->isp.dev = rpp->dev;
+	rpp->isp.params.max_size = v4l2_isp_buffer_size(RPPX1_PARAMS_MAX_SIZE);
+	rpp->isp.params.num_block_types = ARRAY_SIZE(rppx1_ext_params_blocks_info);
+	rpp->isp.params.types_info = rppx1_ext_params_blocks_info;
+
+	return v4l2_isp_validate(&rpp->isp);
+}
+
 int rppx1_params(struct rppx1 *rpp, struct vb2_buffer *vb,
 		 rppx1_reg_write write, void *priv)
 {
diff --git a/drivers/media/platform/dreamchip/rppx1/rppx1.c b/drivers/media/platform/dreamchip/rppx1/rppx1.c
index c502be797914653d1fe6e69d6065995742255d6b..bbeb94099395edffc4b7a0ce741523a05e23b858 100644
--- a/drivers/media/platform/dreamchip/rppx1/rppx1.c
+++ b/drivers/media/platform/dreamchip/rppx1/rppx1.c
@@ -153,6 +153,7 @@ EXPORT_SYMBOL_GPL(rppx1_destroy);
 struct rppx1 *rppx1_create(void __iomem *base, struct device *dev)
 {
 	struct rppx1 *rpp;
+	int ret;
 	u32 reg;
 
 	/* Allocate library structure */
@@ -163,6 +164,13 @@ struct rppx1 *rppx1_create(void __iomem *base, struct device *dev)
 	rpp->base = base;
 	rpp->dev = dev;
 
+	ret = rppx1_params_init(rpp);
+	if (ret) {
+		dev_err(dev, "failed to initialise V4L2 ISP\n");
+		rppx1_destroy(rpp);
+		return NULL;
+	}
+
 	/* Check communication with RPP and verify it truly is a X1. */
 	reg = rppx1_read(rpp, RPPX1_RPP_HDRREGS_VERSION_REG);
 	if (reg != 3) {
diff --git a/drivers/media/platform/dreamchip/rppx1/rppx1.h b/drivers/media/platform/dreamchip/rppx1/rppx1.h
index 3bf3955afbaedeaaacdf83802d8f7af7368f039f..28dc2740509d9d89fad321ea2461368685ca154c 100644
--- a/drivers/media/platform/dreamchip/rppx1/rppx1.h
+++ b/drivers/media/platform/dreamchip/rppx1/rppx1.h
@@ -11,6 +11,8 @@
 #include <linux/device.h>
 #include <linux/types.h>
 
+#include <media/v4l2-isp.h>
+
 #include "rpp_module.h"
 
 #define RPPX1_IRQ_ID_256HIST			BIT(27)
@@ -97,9 +99,12 @@ struct rppx1 {
 
 	struct rpp_module rmap;
 	struct rpp_module rmapmeas;
+
+	struct v4l2_isp isp;
 };
 
 void rppx1_write(struct rppx1 *rpp, u32 offset, u32 value);
 u32 rppx1_read(struct rppx1 *rpp, u32 offset);
+int rppx1_params_init(struct rppx1 *rpp);
 
 #endif /* __MEDIA_RPPX1_H__ */
diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h b/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
index 94f03310e92f110062313bf2a34afb0692d9122c..2e75372727a86dbffcfaa0666e02e201ef260395 100644
--- a/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
+++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
@@ -19,6 +19,7 @@
 #include <media/media-entity.h>
 #include <media/v4l2-ctrls.h>
 #include <media/v4l2-device.h>
+#include <media/v4l2-isp.h>
 #include <media/videobuf2-v4l2.h>
 
 #include "rkisp1-regs.h"
@@ -410,6 +411,7 @@ struct rkisp1_params_ops {
  * @buf.curr:		pointer to the current rkisp1_params_buffer
  * @config_lock:	locks the buffer list 'params'
  * @params:		queue of rkisp1_buffer
+ * @v4l2_isp:		pointer to the v4l2-isp central struct
  * @metafmt		the currently enabled metadata format
  * @quantization:	the quantization configured on the isp's src pad
  * @ycbcr_encoding	the YCbCr encoding
@@ -428,6 +430,7 @@ struct rkisp1_params {
 	} buf;
 
 	struct v4l2_ctrl_handler ctrls;
+	struct v4l2_isp v4l2_isp;
 
 	const struct v4l2_meta_format *metafmt;
 
diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-params.c b/drivers/media/platform/rockchip/rkisp1/rkisp1-params.c
index f440e15afc74c029510e0777a9ec2f6ea4d5be88..756332d8bd154c3175ad5d563f6e5cf615f42499 100644
--- a/drivers/media/platform/rockchip/rkisp1/rkisp1-params.c
+++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-params.c
@@ -2887,6 +2887,15 @@ int rkisp1_params_register(struct rkisp1_device *rkisp1)
 	int ret;
 
 	params->rkisp1 = rkisp1;
+	params->v4l2_isp.dev = rkisp1->dev;
+	params->v4l2_isp.params.max_size = sizeof(struct rkisp1_ext_params_cfg);
+	params->v4l2_isp.params.num_block_types = ARRAY_SIZE(rkisp1_ext_params_block_types_info);
+	params->v4l2_isp.params.types_info = rkisp1_ext_params_block_types_info;
+
+	ret = v4l2_isp_validate(&params->v4l2_isp);
+	if (ret)
+		return ret;
+
 	mutex_init(&node->vlock);
 	INIT_LIST_HEAD(&params->buf.queue);
 	spin_lock_init(&params->buf.lock);

-- 
2.43.0




More information about the Linux-rockchip mailing list