diff --git a/drivers/media/platform/rockchip/isp/isp_params_v21.c b/drivers/media/platform/rockchip/isp/isp_params_v21.c index eb1512296c00..8d2a92d96f71 100644 --- a/drivers/media/platform/rockchip/isp/isp_params_v21.c +++ b/drivers/media/platform/rockchip/isp/isp_params_v21.c @@ -19,7 +19,8 @@ (((a) & 0xFFFF) << 0 | ((b) & 0xFFFF) << 16) #define ISP2X_REG_WR_MASK BIT(31) //disable write protect -#define ISP2X_NOBIG_OVERFLOW_SIZE (2560 * 1440) +#define ISP2X_NOBIG_OVERFLOW_SIZE (2688 * 1536) +#define ISP2X_AUTO_BIGMODE_WIDTH 2688 static inline void rkisp_iowrite32(struct rkisp_isp_params_vdev *params_vdev, @@ -3909,6 +3910,7 @@ rkisp_params_first_cfg_v2x(struct rkisp_isp_params_vdev *params_vdev) (struct rkisp_isp_params_v21_ops *)params_vdev->priv_ops; struct rkisp_isp_params_val_v21 *priv_val = (struct rkisp_isp_params_val_v21 *)params_vdev->priv_val; + struct v4l2_rect *out_crop = ¶ms_vdev->dev->isp_sdev.out_crop; rkisp_alloc_bay3d_buf(params_vdev, params_vdev->isp21_params); spin_lock(¶ms_vdev->config_lock); @@ -3931,6 +3933,13 @@ rkisp_params_first_cfg_v2x(struct rkisp_isp_params_vdev *params_vdev) __isp_isr_other_config(params_vdev, params_vdev->isp21_params, RKISP_PARAMS_ALL); __isp_isr_meas_config(params_vdev, params_vdev->isp21_params, RKISP_PARAMS_ALL); __preisp_isr_update_hdrae_para(params_vdev, params_vdev->isp21_params); + if (out_crop->width <= ISP2X_AUTO_BIGMODE_WIDTH && + isp_param_get_insize(params_vdev) > ISP2X_NOBIG_OVERFLOW_SIZE) { + rkisp_set_bits(params_vdev->dev, ISP_CTRL1, + ISP2X_SYS_BIGMODE_MANUAL | ISP2X_SYS_BIGMODE_FORCEEN, + ISP2X_SYS_BIGMODE_MANUAL | ISP2X_SYS_BIGMODE_FORCEEN, false); + } + params_vdev->cur_hdrmge = params_vdev->isp21_params->others.hdrmge_cfg; params_vdev->cur_hdrdrc = params_vdev->isp21_params->others.drc_cfg; params_vdev->last_hdrmge = params_vdev->cur_hdrmge; diff --git a/drivers/media/platform/rockchip/isp/regs_v2x.h b/drivers/media/platform/rockchip/isp/regs_v2x.h index 3092a665a335..d61748737040 100644 --- a/drivers/media/platform/rockchip/isp/regs_v2x.h +++ b/drivers/media/platform/rockchip/isp/regs_v2x.h @@ -2236,6 +2236,8 @@ #define ISP2X_SYS_DHAZ_FST BIT(25) #define ISP2X_SYS_CNR_FST BIT(26) #define ISP2X_SYS_BAY3D_FST BIT(27) +#define ISP2X_SYS_BIGMODE_FORCEEN BIT(28) +#define ISP2X_SYS_BIGMODE_MANUAL BIT(29) /* isp interrupt */ #define ISP2X_OFF BIT(0)