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