From 6c9150f09cd9ca4768ef55136c71c020cd11c355 Mon Sep 17 00:00:00 2001 From: Cai YiWei Date: Wed, 23 Apr 2025 09:11:13 +0800 Subject: [PATCH] media: rockchip: isp: fix resume no output for isp35 Change-Id: I68d5f94d66c3e2d15cc58c92a07db7ef89b740fb Signed-off-by: Cai YiWei --- drivers/media/platform/rockchip/isp/hw.c | 9 ++++++++- drivers/media/platform/rockchip/isp/regs_v3x.h | 2 ++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/media/platform/rockchip/isp/hw.c b/drivers/media/platform/rockchip/isp/hw.c index a361d5077551..b235d6030cf9 100644 --- a/drivers/media/platform/rockchip/isp/hw.c +++ b/drivers/media/platform/rockchip/isp/hw.c @@ -445,6 +445,8 @@ void rkisp_hw_reg_restore(struct rkisp_hw_dev *dev) *reg &= ~ISP39_W3A_FORCE_UPD; reg = reg_buf + ISP35_AIAWB_CTRL0; *reg &= ~ISP35_AIAWB_SELF_UPD; + reg = reg_buf + ISP33_BAY3D_CTRL0; + *reg &= ~ISP35_BAY3D_1ST_IIR_RD; } reg = reg_buf + ISP_CTRL; *reg &= ~(CIF_ISP_CTRL_ISP_ENABLE | @@ -455,9 +457,14 @@ void rkisp_hw_reg_restore(struct rkisp_hw_dev *dev) reg = reg_buf + CSI2RX_CTRL0; *reg &= ~SW_CSI2RX_EN; for (j = 0; j < RKISP_ISP_SW_REG_SIZE; j += 4) { + /* skip useless reg */ + reg = reg_buf + j; + if (*reg == 0xdead00) + continue; /* skip table RAM */ if ((j > ISP3X_LSC_CTRL && j < ISP3X_LSC_XGRAD_01) || - (j > ISP32_CAC_OFFSET && j < ISP3X_CAC_RO_CNT && dev->isp_ver != ISP_V33) || + (j > ISP32_CAC_OFFSET && j < ISP3X_CAC_RO_CNT && + dev->isp_ver != ISP_V33 && dev->isp_ver != ISP_V35) || (j > ISP3X_3DLUT_UPDATE && j < ISP3X_GAIN_BASE) || (j == 0x4840 || j == 0x4a80 || j == 0x4b40 || j == 0x5660) || (dev->isp_ver == ISP_V39 && diff --git a/drivers/media/platform/rockchip/isp/regs_v3x.h b/drivers/media/platform/rockchip/isp/regs_v3x.h index a70c63ab60fd..39a83678ad24 100644 --- a/drivers/media/platform/rockchip/isp/regs_v3x.h +++ b/drivers/media/platform/rockchip/isp/regs_v3x.h @@ -3191,6 +3191,8 @@ /* BAY3D */ #define ISP32_BAY3D_BWSAVING(a) (((a) & 0x1) << 13) +#define ISP35_BAY3D_1ST_IIR_RD BIT(16) + /* GIC */ /* LDCH */