diff --git a/drivers/media/platform/rockchip/isp/isp_params_v2x.c b/drivers/media/platform/rockchip/isp/isp_params_v2x.c index 5bb8043cc347..b663b0e78caa 100644 --- a/drivers/media/platform/rockchip/isp/isp_params_v2x.c +++ b/drivers/media/platform/rockchip/isp/isp_params_v2x.c @@ -4333,129 +4333,6 @@ unlock: spin_unlock(¶ms_vdev->config_lock); } -static void isp_hdrtmo_palhpa_reconfig(struct rkisp_isp_params_vdev *params_vdev, u32 lgmean) -{ - u16 set_lgmin, set_lgmax, palpha_0p18; - u32 palpha, max_palpha; - u32 cur_frame_id = 0; - u32 value = 0; - - set_lgmin = params_vdev->cur_hdrtmo.set_lgmin; - set_lgmax = params_vdev->cur_hdrtmo.set_lgmax; - palpha_0p18 = params_vdev->cur_hdrtmo.palpha_0p18; - max_palpha = params_vdev->cur_hdrtmo.maxpalpha; - - palpha = palpha_0p18 * (4 * lgmean - 3 * set_lgmin - set_lgmax) / (set_lgmax - set_lgmin); - palpha = min(palpha, max_palpha); - - rkisp_dmarx_get_frame(params_vdev->dev, &cur_frame_id, NULL, NULL, true); - - value = rkisp_read(params_vdev->dev, ISP_HDRTMO_LG_CFG0, true) & 0xfffffc00; - value |= palpha; - rkisp_write(params_vdev->dev, ISP_HDRTMO_LG_CFG0, value, true); - - v4l2_dbg(5, rkisp_debug, ¶ms_vdev->dev->v4l2_dev, - "frame(%d), palpha(%d)\n", cur_frame_id, palpha); -} - -static void isp_hdrtmo_lgavgmax_reconfig(struct rkisp_isp_params_vdev *params_vdev, - s32 lgmean) -{ - u8 weight_key; - u16 set_lgmax; - s32 lgrange1 = 0, lgavgmax = 0; - u32 cur_frame_id, value; - - set_lgmax = params_vdev->cur_hdrtmo.set_lgmax; - lgrange1 = params_vdev->cur_hdrtmo.set_lgrange1; - weight_key = params_vdev->cur_hdrtmo.set_weightkey; - - if (params_vdev->cur_hdrtmo.predict.global_tmo) { - lgavgmax = lgmean; - } else { - lgavgmax = weight_key * set_lgmax + (256 - weight_key) * lgmean; - lgavgmax = min(lgavgmax / 256, lgrange1); - } - - value = rkisp_read(params_vdev->dev, ISP_HDRTMO_LG_CFG4, true) & 0xffff0000; - value |= lgavgmax; - rkisp_write(params_vdev->dev, ISP_HDRTMO_LG_CFG4, value, true); - - rkisp_dmarx_get_frame(params_vdev->dev, &cur_frame_id, NULL, NULL, true); - - v4l2_dbg(5, rkisp_debug, ¶ms_vdev->dev->v4l2_dev, - "frame(%d), global_tmo(%d), lgavgmax(%d)\n", - cur_frame_id, params_vdev->cur_hdrtmo.predict.global_tmo, lgavgmax); -} - -static void isp_hdrtmo_lgrange1_reconfig(struct rkisp_isp_params_vdev *params_vdev, - s32 lgmean) -{ - if (params_vdev->cur_hdrtmo.predict.global_tmo) { - s32 lgrange1 = 0; - u32 cur_frame_id, value; - - lgrange1 = lgmean; - value = rkisp_read(params_vdev->dev, ISP_HDRTMO_LG_CFG3, true) & 0xffff; - value |= lgrange1 << 16; - rkisp_write(params_vdev->dev, ISP_HDRTMO_LG_CFG3, value, true); - - rkisp_dmarx_get_frame(params_vdev->dev, &cur_frame_id, NULL, NULL, true); - - v4l2_dbg(5, rkisp_debug, ¶ms_vdev->dev->v4l2_dev, - "frame(%d), global_tmo(%d), lgrange1(%d)\n", - cur_frame_id, params_vdev->cur_hdrtmo.predict.global_tmo, lgrange1); - } -} - -static u16 isp_hdrtmo_lgmean_reconfig(struct rkisp_isp_params_vdev *params_vdev) -{ - u16 default_lgmean = 40000; - u16 lgmean = default_lgmean; - u32 value = 0; - s32 cur_frame_id = 0; - static s32 prev_lgmean = 40000; - - rkisp_dmarx_get_frame(params_vdev->dev, &cur_frame_id, NULL, NULL, true); - if (params_vdev->cur_hdrtmo.predict.iir < params_vdev->cur_hdrtmo.predict.iir_max) { - u32 ro_lgmean; - s32 iir = 0; - s32 global_tmo_strength = params_vdev->cur_hdrtmo.predict.global_tmo_strength; - - value = rkisp_read(params_vdev->dev, ISP_HDRTMO_LG_RO2, true); - ro_lgmean = value & 0xffff; - - iir = min(cur_frame_id + 1, params_vdev->cur_hdrtmo.predict.iir); - default_lgmean += global_tmo_strength; - ro_lgmean += global_tmo_strength; - if (params_vdev->cur_hdrtmo.predict.scene_stable) { - if (cur_frame_id == 0) - lgmean = default_lgmean; - else - lgmean = ((iir - 1) * prev_lgmean + ro_lgmean) / iir; - } else { - if (cur_frame_id == 0) - lgmean = default_lgmean; - else - lgmean = prev_lgmean; - } - } - - value = rkisp_read(params_vdev->dev, ISP_HDRTMO_LG_CFG2, true) & 0xffff0000; - value |= lgmean; - rkisp_write(params_vdev->dev, ISP_HDRTMO_LG_CFG2, value, true); - - prev_lgmean = lgmean; - - v4l2_dbg(5, rkisp_debug, ¶ms_vdev->dev->v4l2_dev, - "frame(%d), scene_stable(%d), k_rolgmean(%d), iir(%d), lgmean(%d)\n", - cur_frame_id, params_vdev->cur_hdrtmo.predict.scene_stable, - params_vdev->cur_hdrtmo.predict.k_rolgmean, - params_vdev->cur_hdrtmo.predict.iir, lgmean); - - return lgmean; -} - static void rkisp_params_isr_v2x(struct rkisp_isp_params_vdev *params_vdev, u32 isp_mis) @@ -4487,17 +4364,6 @@ rkisp_params_isr_v2x(struct rkisp_isp_params_vdev *params_vdev, } } - if (isp_mis & ISP2X_HDR_DONE) { - u16 lgmean = 0; - - lgmean = isp_hdrtmo_lgmean_reconfig(params_vdev); - isp_hdrtmo_palhpa_reconfig(params_vdev, lgmean); - isp_hdrtmo_lgrange1_reconfig(params_vdev, lgmean); - isp_hdrtmo_lgavgmax_reconfig(params_vdev, lgmean); - - writel(ISP2X_HDR_DONE, dev->base_addr + ISP_ISP_ICR); - } - if ((isp_mis & CIF_ISP_FRAME) && !IS_HDR_RDBK(dev->rd_mode)) rkisp_params_cfg_v2x(params_vdev, cur_frame_id + 1, RKISP_PARAMS_ALL); } diff --git a/drivers/media/platform/rockchip/isp/rkisp.c b/drivers/media/platform/rockchip/isp/rkisp.c index 673d05b51610..8e42e4353ae4 100644 --- a/drivers/media/platform/rockchip/isp/rkisp.c +++ b/drivers/media/platform/rockchip/isp/rkisp.c @@ -1225,8 +1225,6 @@ static int rkisp_config_isp(struct rkisp_device *dev) CIF_ISP_FRAME_IN; if (dev->isp_ver == ISP_V20 || dev->isp_ver == ISP_V21) irq_mask |= ISP2X_LSC_LUT_ERR; - if (dev->isp_ver == ISP_V20) - irq_mask |= ISP2X_HDR_DONE; rkisp_write(dev, CIF_ISP_IMSC, irq_mask, true); if ((dev->isp_ver == ISP_V20 || dev->isp_ver == ISP_V21) &&