media: rockchip: isp: fix lsc switch for isp30

Change-Id: Ib953aadd25cf73f956197e19ccd9155173530fab
Signed-off-by: Cai YiWei <cyw@rock-chips.com>
This commit is contained in:
Cai YiWei 2024-09-24 09:16:20 +08:00
commit ea005bee31
2 changed files with 8 additions and 4 deletions

View file

@ -1067,7 +1067,7 @@ static void isp_config_clk(struct rkisp_hw_dev *dev, int on)
val = 0;
if ((dev->isp_ver == ISP_V20 || dev->isp_ver == ISP_V30) && on)
val |= CLK_CTRL_ISP_3A;
val |= CLK_CTRL_ISP_3A | CLK_CTRL_ISP_RAW;
if (dev->isp_ver == ISP_V32)
rv1106_sdmmc_get_lock();
writel(val, dev->base_addr + CTRL_VI_ISP_CLK_CTRL);

View file

@ -634,6 +634,7 @@ static void
isp_lsc_enable(struct rkisp_isp_params_vdev *params_vdev, bool en, u32 id)
{
struct isp3x_isp_params_cfg *params_rec = params_vdev->isp3x_params + id;
struct rkisp_isp_params_val_v3x *priv_val = params_vdev->priv_val;
u32 val = isp3_param_read(params_vdev, ISP3X_LSC_CTRL, id);
if (en == !!(val & ISP_LSC_EN))
@ -641,9 +642,12 @@ isp_lsc_enable(struct rkisp_isp_params_vdev *params_vdev, bool en, u32 id)
if (en) {
isp3_param_set_bits(params_vdev, ISP3X_LSC_CTRL, ISP_LSC_EN, id);
if (params_vdev->dev->hw_dev->is_single)
isp_lsc_matrix_cfg_sram(params_vdev,
&params_rec->others.lsc_cfg, false, id);
if (params_vdev->dev->hw_dev->is_single) {
if (!in_interrupt())
isp_lsc_matrix_cfg_sram(params_vdev, &params_rec->others.lsc_cfg, false, id);
else if (id == ISP3_LEFT)
tasklet_schedule(&priv_val->lsc_tasklet);
}
} else {
isp3_param_clear_bits(params_vdev, ISP3X_LSC_CTRL, ISP_LSC_EN, id);
isp3_param_clear_bits(params_vdev, ISP3X_GAIN_CTRL, BIT(8), id);