diff --git a/drivers/media/platform/rockchip/isp/hw.c b/drivers/media/platform/rockchip/isp/hw.c index 37f946a64de4..afc9dbdfce41 100644 --- a/drivers/media/platform/rockchip/isp/hw.c +++ b/drivers/media/platform/rockchip/isp/hw.c @@ -1068,6 +1068,9 @@ static void isp_config_clk(struct rkisp_hw_dev *dev, int on) if ((dev->isp_ver == ISP_V20 || dev->isp_ver == ISP_V30) && on) val |= CLK_CTRL_ISP_3A | CLK_CTRL_ISP_RAW; + /* fix mi and scale on-off no output for isp39 */ + if (dev->isp_ver == ISP_V39 && on) + val |= ISP3X_CLK_RSZM | ISP3X_CLK_RSZS; if (dev->isp_ver == ISP_V32) rv1106_sdmmc_get_lock(); writel(val, dev->base_addr + CTRL_VI_ISP_CLK_CTRL); diff --git a/drivers/media/platform/rockchip/isp/regs_v3x.h b/drivers/media/platform/rockchip/isp/regs_v3x.h index 3ad0ae284b7c..ebd4a2202fac 100644 --- a/drivers/media/platform/rockchip/isp/regs_v3x.h +++ b/drivers/media/platform/rockchip/isp/regs_v3x.h @@ -2390,6 +2390,10 @@ /* VI_ICCL */ #define ISP32_BRSZ_CLK_ENABLE BIT(13) +/* VI_ISP_CLK_CTRL */ +#define ISP3X_CLK_RSZM BIT(26) +#define ISP3X_CLK_RSZS BIT(29) + /* SWS_CFG */ #define ISP32L_ISP2ENC_CNT_MUX BIT(0) #define ISP3X_SW_ACK_FRM_PRO_DIS BIT(3)