From 2f7c68cb55ecb7331f2381deb497c27155f32faf Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Wed, 03 Jan 2024 09:43:39 +0000
Subject: [PATCH] update kernel to 5.10.198

---
 kernel/drivers/media/platform/rockchip/isp/regs.c |   62 +++++++++++++++++++------------
 1 files changed, 38 insertions(+), 24 deletions(-)

diff --git a/kernel/drivers/media/platform/rockchip/isp/regs.c b/kernel/drivers/media/platform/rockchip/isp/regs.c
index a808d34..17af5ef 100644
--- a/kernel/drivers/media/platform/rockchip/isp/regs.c
+++ b/kernel/drivers/media/platform/rockchip/isp/regs.c
@@ -45,8 +45,7 @@
 
 	if (async && dev->hw_dev->is_single)
 		val = CIF_DUAL_CROP_GEN_CFG_UPD;
-	rkisp_unite_set_bits(dev, stream->config->dual_crop.ctrl,
-			     mask, val, false, dev->hw_dev->is_unite);
+	rkisp_unite_set_bits(dev, stream->config->dual_crop.ctrl, mask, val, false);
 }
 
 void rkisp_config_dcrop(struct rkisp_stream *stream,
@@ -54,7 +53,7 @@
 {
 	struct rkisp_device *dev = stream->ispdev;
 	u32 val = stream->config->dual_crop.yuvmode_mask;
-	bool is_unite = dev->hw_dev->is_unite;
+	bool is_unite = !!dev->hw_dev->unite;
 	struct v4l2_rect tmp = *rect;
 	u32 reg;
 
@@ -69,9 +68,9 @@
 	rkisp_write(dev, reg, tmp.width, false);
 
 	reg = stream->config->dual_crop.v_offset;
-	rkisp_unite_write(dev, reg, tmp.top, false, is_unite);
+	rkisp_unite_write(dev, reg, tmp.top, false);
 	reg = stream->config->dual_crop.v_size;
-	rkisp_unite_write(dev, reg, tmp.height, false, is_unite);
+	rkisp_unite_write(dev, reg, tmp.height, false);
 
 	if (async && dev->hw_dev->is_single)
 		val |= CIF_DUAL_CROP_GEN_CFG_UPD;
@@ -149,8 +148,7 @@
 
 	if (async && dev->hw_dev->is_single)
 		val = CIF_RSZ_CTRL_CFG_UPD_AUTO;
-	rkisp_unite_set_bits(dev, stream->config->rsz.ctrl, 0,
-			     val, false, dev->hw_dev->is_unite);
+	rkisp_unite_set_bits(dev, stream->config->rsz.ctrl, 0, val, false);
 }
 
 static void set_scale(struct rkisp_stream *stream, struct v4l2_rect *in_y,
@@ -220,17 +218,8 @@
 		rkisp_write(dev, scale_vc_addr, scale_vc, false);
 	}
 
-	if (dev->hw_dev->is_unite) {
-		u32 hy_size_reg = stream->id == RKISP_STREAM_MP ?
-			ISP3X_MAIN_RESIZE_HY_SIZE : ISP3X_SELF_RESIZE_HY_SIZE;
-		u32 hc_size_reg = stream->id == RKISP_STREAM_MP ?
-			ISP3X_MAIN_RESIZE_HC_SIZE : ISP3X_SELF_RESIZE_HC_SIZE;
-		u32 hy_offs_mi_reg = stream->id == RKISP_STREAM_MP ?
-			ISP3X_MAIN_RESIZE_HY_OFFS_MI : ISP3X_SELF_RESIZE_HY_OFFS_MI;
-		u32 hc_offs_mi_reg = stream->id == RKISP_STREAM_MP ?
-			ISP3X_MAIN_RESIZE_HC_OFFS_MI : ISP3X_SELF_RESIZE_HC_OFFS_MI;
-		u32 in_crop_offs_reg = stream->id == RKISP_STREAM_MP ?
-			ISP3X_MAIN_RESIZE_IN_CROP_OFFSET : ISP3X_SELF_RESIZE_IN_CROP_OFFSET;
+	if (dev->hw_dev->unite) {
+		u32 hy_size_reg, hc_size_reg, hy_offs_mi_reg, hc_offs_mi_reg, in_crop_offs_reg;
 		u32 isp_in_w = in_y->width / 2 + RKMOUDLE_UNITE_EXTEND_PIXEL;
 		u32 scl_w = out_y->width / 2;
 		u32 left_y = scale_hy == 1 ? scl_w : DIV_ROUND_UP(scl_w * 65536, scale_hy);
@@ -248,6 +237,34 @@
 		u32 extend = RKMOUDLE_UNITE_EXTEND_PIXEL;
 		u32 right_scl_in_y;
 		u32 right_scl_in_c;
+
+		switch (stream->id) {
+		case RKISP_STREAM_MP:
+			hy_size_reg = ISP3X_MAIN_RESIZE_HY_SIZE;
+			hc_size_reg = ISP3X_MAIN_RESIZE_HC_SIZE;
+			hy_offs_mi_reg = ISP3X_MAIN_RESIZE_HY_OFFS_MI;
+			hc_offs_mi_reg = ISP3X_MAIN_RESIZE_HC_OFFS_MI;
+			in_crop_offs_reg = ISP3X_MAIN_RESIZE_IN_CROP_OFFSET;
+			break;
+		case RKISP_STREAM_SP:
+			hy_size_reg = ISP3X_SELF_RESIZE_HY_SIZE;
+			hc_size_reg = ISP3X_SELF_RESIZE_HC_SIZE;
+			hy_offs_mi_reg = ISP3X_SELF_RESIZE_HY_OFFS_MI;
+			hc_offs_mi_reg = ISP3X_SELF_RESIZE_HC_OFFS_MI;
+			in_crop_offs_reg = ISP3X_SELF_RESIZE_IN_CROP_OFFSET;
+			break;
+		case RKISP_STREAM_BP:
+			hy_size_reg = ISP32_BP_RESIZE_HY_SIZE;
+			hc_size_reg = ISP32_BP_RESIZE_HC_SIZE;
+			hy_offs_mi_reg = ISP32_BP_RESIZE_HY_OFFS_MI;
+			hc_offs_mi_reg = ISP32_BP_RESIZE_HC_OFFS_MI;
+			in_crop_offs_reg = ISP32_BP_RESIZE_IN_CROP_OFFSET;
+			break;
+		default:
+			v4l2_warn(&dev->v4l2_dev, "%s no support unite for stream:%d\n",
+				  __func__, stream->id);
+			return;
+		}
 
 		if (right_crop_y < RKMOUDLE_UNITE_EXTEND_PIXEL) {
 			u32 reg;
@@ -362,7 +379,6 @@
 {
 	struct rkisp_device *dev = stream->ispdev;
 	int i = 0;
-	bool is_unite = dev->hw_dev->is_unite;
 
 	if (dev->isp_ver == ISP_V32_L && stream->id == RKISP_STREAM_SP) {
 		set_bilinear_scale(stream, in_y, in_c, out_y, out_c, async);
@@ -377,8 +393,8 @@
 
 	/* Linear interpolation */
 	for (i = 0; i < 64; i++) {
-		rkisp_unite_write(dev, stream->config->rsz.scale_lut_addr, i, true, is_unite);
-		rkisp_unite_write(dev, stream->config->rsz.scale_lut, i, true, is_unite);
+		rkisp_unite_write(dev, stream->config->rsz.scale_lut_addr, i, true);
+		rkisp_unite_write(dev, stream->config->rsz.scale_lut, i, true);
 	}
 
 	set_scale(stream, in_y, in_c, out_y, out_c);
@@ -388,9 +404,7 @@
 
 void rkisp_disable_rsz(struct rkisp_stream *stream, bool async)
 {
-	bool is_unite = stream->ispdev->hw_dev->is_unite;
-
-	rkisp_unite_write(stream->ispdev, stream->config->rsz.ctrl, 0, false, is_unite);
+	rkisp_unite_write(stream->ispdev, stream->config->rsz.ctrl, 0, false);
 	if (stream->ispdev->isp_ver == ISP_V32_L && stream->id == RKISP_STREAM_SP)
 		return;
 	update_rsz_shadow(stream, async);

--
Gitblit v1.6.2