From 08f87f769b595151be1afeff53e144f543faa614 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Wed, 06 Dec 2023 09:51:13 +0000
Subject: [PATCH] add dts config

---
 kernel/drivers/media/platform/rockchip/isp/capture.h |  109 ++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 97 insertions(+), 12 deletions(-)

diff --git a/kernel/drivers/media/platform/rockchip/isp/capture.h b/kernel/drivers/media/platform/rockchip/isp/capture.h
index 3fe566d..bbdcf1e 100644
--- a/kernel/drivers/media/platform/rockchip/isp/capture.h
+++ b/kernel/drivers/media/platform/rockchip/isp/capture.h
@@ -35,17 +35,57 @@
 #ifndef _RKISP_PATH_VIDEO_H
 #define _RKISP_PATH_VIDEO_H
 
+#include <linux/interrupt.h>
+
 #include "common.h"
 #include "capture_v1x.h"
 #include "capture_v2x.h"
+#include "capture_v3x.h"
 #include "isp_ispp.h"
 
-#define RDBK_MAX		3
-#define RDBK_L			0
-#define RDBK_M			1
-#define RDBK_S			2
+#define SP_VDEV_NAME DRIVER_NAME	"_selfpath"
+#define MP_VDEV_NAME DRIVER_NAME	"_mainpath"
+#define FBC_VDEV_NAME DRIVER_NAME	"_fbcpath"
+#define BP_VDEV_NAME DRIVER_NAME	"_bypasspath"
+#define MPDS_VDEV_NAME DRIVER_NAME	"_mainpath_4x4sampling"
+#define BPDS_VDEV_NAME DRIVER_NAME	"_bypasspath_4x4sampling"
+#define LUMA_VDEV_NAME DRIVER_NAME	"_lumapath"
+#define VIR_VDEV_NAME DRIVER_NAME	"_iqtool"
+
+#define DMATX0_VDEV_NAME DRIVER_NAME	"_rawwr0"
+#define DMATX1_VDEV_NAME DRIVER_NAME	"_rawwr1"
+#define DMATX2_VDEV_NAME DRIVER_NAME	"_rawwr2"
+#define DMATX3_VDEV_NAME DRIVER_NAME	"_rawwr3"
 
 struct rkisp_stream;
+
+enum {
+	ROCKIT_DVBM_END,
+	ROCKIT_DVBM_START,
+};
+
+enum {
+	RDBK_L,
+	RDBK_M,
+	RDBK_S,
+	RDBK_MAX,
+};
+
+enum {
+	RKISP_STREAM_MP,
+	RKISP_STREAM_SP,
+	RKISP_STREAM_DMATX0,
+	RKISP_STREAM_DMATX1,
+	RKISP_STREAM_DMATX2,
+	RKISP_STREAM_DMATX3,
+	RKISP_STREAM_FBC,
+	RKISP_STREAM_BP,
+	RKISP_STREAM_MPDS,
+	RKISP_STREAM_BPDS,
+	RKISP_STREAM_LUMA,
+	RKISP_STREAM_VIR,
+	RKISP_MAX_STREAM,
+};
 
 /*
  * @fourcc: pixel format
@@ -109,11 +149,10 @@
 struct stream_config {
 	const struct capture_fmt *fmts;
 	int fmt_size;
-	/* constrains */
-	const int max_rsz_width;
-	const int max_rsz_height;
-	const int min_rsz_width;
-	const int min_rsz_height;
+	int max_rsz_width;
+	int max_rsz_height;
+	int min_rsz_width;
+	int min_rsz_height;
 	const int frame_end_id;
 	/* registers */
 	struct {
@@ -161,6 +200,8 @@
 		u32 cr_offs_cnt_init;
 		u32 y_base_ad_shd;
 		u32 length;
+		u32 ctrl;
+		u32 y_pic_size;
 	} mi;
 	struct {
 		u32 ctrl;
@@ -175,10 +216,20 @@
 	void (*stop_mi)(struct rkisp_stream *stream);
 	void (*enable_mi)(struct rkisp_stream *stream);
 	void (*disable_mi)(struct rkisp_stream *stream);
-	void (*set_data_path)(void __iomem *base);
-	bool (*is_stream_stopped)(void __iomem *base);
+	void (*set_data_path)(struct rkisp_stream *stream);
+	bool (*is_stream_stopped)(struct rkisp_stream *stream);
 	void (*update_mi)(struct rkisp_stream *stream);
-	int (*frame_end)(struct rkisp_stream *stream);
+	int (*frame_end)(struct rkisp_stream *stream, u32 state);
+	int (*frame_start)(struct rkisp_stream *stream, u32 mis);
+	int (*set_wrap)(struct rkisp_stream *stream, int line);
+};
+
+struct rockit_isp_ops {
+	int (*rkisp_stream_start)(struct rkisp_stream *stream);
+	void (*rkisp_stream_stop)(struct rkisp_stream *stream);
+	int (*rkisp_set_fmt)(struct rkisp_stream *stream,
+			   struct v4l2_pix_format_mplane *pixm,
+			   bool try);
 };
 
 /*
@@ -215,17 +266,28 @@
 	struct list_head buf_queue;
 	struct rkisp_buffer *curr_buf;
 	struct rkisp_buffer *next_buf;
+	struct rkisp_dummy_buffer dummy_buf;
 	struct mutex apilock;
+	struct tasklet_struct buf_done_tasklet;
+	struct list_head buf_done_list;
 	bool streaming;
 	bool stopping;
 	bool frame_end;
 	bool linked;
 	bool start_stream;
+	bool is_mf_upd;
+	bool is_flip;
+	bool is_pause;
+	bool is_crop_upd;
+	bool is_using_resmem;
+	bool frame_early;
 	wait_queue_head_t done;
 	unsigned int burst;
 	atomic_t sequence;
 	struct frame_debug_info dbg;
+	int conn_id;
 	u32 memory;
+	u32 skip_frame;
 	union {
 		struct rkisp_stream_sp sp;
 		struct rkisp_stream_mp mp;
@@ -234,18 +296,36 @@
 	} u;
 };
 
+struct rkisp_vir_cpy {
+	struct work_struct work;
+	struct completion cmpl;
+	struct list_head queue;
+	struct rkisp_stream *stream;
+};
+
 struct rkisp_capture_device {
 	struct rkisp_device *ispdev;
 	struct rkisp_stream stream[RKISP_MAX_STREAM];
 	struct rkisp_buffer *rdbk_buf[RDBK_MAX];
+	struct rkisp_vir_cpy vir_cpy;
+	struct tasklet_struct rd_tasklet;
 	atomic_t refcnt;
 	u32 wait_line;
+	u32 wrap_width;
+	u32 wrap_line;
 	bool is_done_early;
+	bool is_mirror;
+
+	struct work_struct fast_work;
 };
 
 extern struct stream_config rkisp_mp_stream_config;
 extern struct stream_config rkisp_sp_stream_config;
+extern struct rockit_isp_ops rockit_isp_ops;
 
+void rkisp_stream_buf_done_early(struct rkisp_device *dev);
+void rkisp_stream_buf_done(struct rkisp_stream *stream,
+			   struct rkisp_buffer *buf);
 void rkisp_unregister_stream_vdev(struct rkisp_stream *stream);
 int rkisp_register_stream_vdev(struct rkisp_stream *stream);
 void rkisp_unregister_stream_vdevs(struct rkisp_device *dev);
@@ -253,8 +333,13 @@
 void rkisp_mi_isr(u32 mis_val, struct rkisp_device *dev);
 void rkisp_set_stream_def_fmt(struct rkisp_device *dev, u32 id,
 			      u32 width, u32 height, u32 pixelformat);
+int rkisp_stream_frame_start(struct rkisp_device *dev, u32 isp_mis);
 int rkisp_fcc_xysubs(u32 fcc, u32 *xsubs, u32 *ysubs);
 int rkisp_mbus_code_xysubs(u32 code, u32 *xsubs, u32 *ysubs);
 int rkisp_fh_open(struct file *filp);
 int rkisp_fop_release(struct file *file);
+
+int rkisp_get_tb_stream_info(struct rkisp_stream *stream,
+			     struct rkisp_tb_stream_info *info);
+int rkisp_free_tb_stream_buf(struct rkisp_stream *stream);
 #endif /* _RKISP_PATH_VIDEO_H */

--
Gitblit v1.6.2