media: rockchip: isp: disable tmo interrupt

remove associated configuration in TMO isr

Signed-off-by: Xu Hongfei <xuhf@rock-chips.com>
Change-Id: I610bc64aaa2549d10e4383df0d8247f161bc8048
This commit is contained in:
Xu Hongfei
2021-07-15 17:27:27 +08:00
committed by Tao Huang
parent 7e43ca389f
commit ac39fa39ef
2 changed files with 0 additions and 136 deletions

View File

@@ -4333,129 +4333,6 @@ unlock:
spin_unlock(&params_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, &params_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, &params_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, &params_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, &params_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);
}

View File

@@ -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) &&