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(¶ms->v4l2_isp);
+ if (ret)
+ return ret;
+
INIT_LIST_HEAD(¶ms->pending);
spin_lock_init(¶ms->buff_lock);
mutex_init(¶ms->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 = ¶ms->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(¶ms->v4l2_isp);
+ if (ret)
+ return ret;
+
mutex_init(¶ms->lock);
INIT_LIST_HEAD(¶ms->buffers.queue);
spin_lock_init(¶ms->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(¶ms->v4l2_isp);
+ if (ret)
+ return ret;
+
mutex_init(&node->vlock);
INIT_LIST_HEAD(¶ms->buf.queue);
spin_lock_init(¶ms->buf.lock);
--
2.43.0