mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 18:41:58 +09:00
media: rockchip: isp: fix isp35 lsc and awb error for aiisp en
Change-Id: I1bef27b5328684343f898e52f4b65e69118adb16 Signed-off-by: Cai YiWei <cyw@rock-chips.com>
This commit is contained in:
@@ -535,7 +535,7 @@ isp_lsc_config(struct rkisp_isp_params_vdev *params_vdev,
|
||||
}
|
||||
|
||||
ctrl = isp3_param_read(params_vdev, ISP3X_LSC_CTRL, id);
|
||||
ctrl &= ISP35_MODULE_EN;
|
||||
ctrl &= (ISP35_MODULE_EN | ISP3X_LSC_PRE_RD_ST_MODE);
|
||||
ctrl |= !!arg->sector_16x16 << 2;
|
||||
isp3_param_write(params_vdev, ctrl, ISP3X_LSC_CTRL, id);
|
||||
|
||||
@@ -547,15 +547,38 @@ isp_lsc_config(struct rkisp_isp_params_vdev *params_vdev,
|
||||
static void
|
||||
isp_lsc_enable(struct rkisp_isp_params_vdev *params_vdev, bool en, u32 id)
|
||||
{
|
||||
struct rkisp_device *dev = params_vdev->dev;
|
||||
u32 val = isp3_param_read(params_vdev, ISP3X_LSC_CTRL, id);
|
||||
u32 path_sel;
|
||||
|
||||
if (en == !!(val & ISP35_MODULE_EN))
|
||||
return;
|
||||
|
||||
if (en)
|
||||
if (en) {
|
||||
val |= ISP35_MODULE_EN;
|
||||
else
|
||||
if (dev->is_aiisp_en && !dev->is_aiisp_sync) {
|
||||
val &= ~ISP3X_LSC_PRE_RD_ST_MODE;
|
||||
|
||||
path_sel = isp3_param_read_cache(params_vdev, ISP3X_VI_ISP_PATH, id);
|
||||
/* drcLSC default frame end read table */
|
||||
path_sel |= ISP3X_LSC_CFG_SEL(3);
|
||||
isp3_param_write(params_vdev, path_sel, ISP3X_VI_ISP_PATH, id);
|
||||
isp3_param_write(params_vdev, val, ISP3X_LSC_CTRL, id);
|
||||
/* awbLSC default frame end read table */
|
||||
path_sel &= ~ISP3X_LSC_CFG_SEL(3);
|
||||
path_sel |= ISP3X_LSC_CFG_SEL(2);
|
||||
isp3_param_write(params_vdev, path_sel, ISP3X_VI_ISP_PATH, id);
|
||||
isp3_param_write(params_vdev, val, ISP3X_LSC_CTRL, id);
|
||||
/* mainLSC default frame start read table and change to frame end */
|
||||
path_sel &= ~ISP3X_LSC_CFG_SEL(3);
|
||||
path_sel |= ISP3X_LSC_CFG_SEL(1);
|
||||
isp3_param_write(params_vdev, path_sel, ISP3X_VI_ISP_PATH, id);
|
||||
|
||||
val |= ISP3X_LSC_PRE_RD_ST_MODE;
|
||||
}
|
||||
} else {
|
||||
val &= ~(ISP35_MODULE_EN | ISP35_SELF_FORCE_UPD);
|
||||
}
|
||||
isp3_param_write(params_vdev, val, ISP3X_LSC_CTRL, id);
|
||||
}
|
||||
|
||||
@@ -1267,6 +1290,8 @@ isp_rawawb_config(struct rkisp_isp_params_vdev *params_vdev,
|
||||
!!arg->blk_measure_xytype << 2 |
|
||||
!!arg->blk_measure_mode << 1 |
|
||||
!!arg->blk_measure_enable;
|
||||
if (dev->is_aiisp_en)
|
||||
value |= ISP35_RAWAWB_BNR_BE_SEL;
|
||||
isp3_param_write(params_vdev, value, ISP3X_RAWAWB_BLK_CTRL, id);
|
||||
|
||||
h_offs = arg->h_offs & ~0x1;
|
||||
|
||||
@@ -3358,6 +3358,8 @@
|
||||
#define ISP32_RAWAWB_2DDR_PATH_DS BIT(27)
|
||||
#define ISP32_RAWAWB_2DDR_PATH_ERR BIT(29)
|
||||
|
||||
#define ISP35_RAWAWB_BNR_BE_SEL BIT(10)
|
||||
|
||||
#define ISP33_RAWAWB_WRAM_CLR BIT(31)
|
||||
|
||||
/* AIAWB */
|
||||
|
||||
Reference in New Issue
Block a user