diff --git a/drivers/media/platform/rockchip/isp1/isp_params.c b/drivers/media/platform/rockchip/isp1/isp_params.c index 84a1e7ffbfde..0bb564513f44 100644 --- a/drivers/media/platform/rockchip/isp1/isp_params.c +++ b/drivers/media/platform/rockchip/isp1/isp_params.c @@ -243,14 +243,13 @@ __lsc_correct_matrix_config(struct rkisp1_isp_params_vdev *params_vdev, rkisp1_iowrite32(params_vdev, sram_addr, CIF_ISP_LSC_B_TABLE_ADDR); /* program data tables (table size is 9 * 17 = 153) */ - for (i = 0; i < ((CIF_ISP_LSC_SECTORS_MAX + 1) * - (CIF_ISP_LSC_SECTORS_MAX + 1)); - i += CIF_ISP_LSC_SECTORS_MAX + 1) { + for (i = 0; i < CIF_ISP_LSC_SECTORS_MAX * CIF_ISP_LSC_SECTORS_MAX; + i += CIF_ISP_LSC_SECTORS_MAX) { /* * 17 sectors with 2 values in one DWORD = 9 * DWORDs (2nd value of last DWORD unused) */ - for (j = 0; j < (CIF_ISP_LSC_SECTORS_MAX); j += 2) { + for (j = 0; j < CIF_ISP_LSC_SECTORS_MAX - 1; j += 2) { data = CIF_ISP_LSC_TABLE_DATA( pconfig->r_data_tbl[i + j], pconfig->r_data_tbl[i + j + 1]); @@ -275,29 +274,30 @@ __lsc_correct_matrix_config(struct rkisp1_isp_params_vdev *params_vdev, rkisp1_iowrite32(params_vdev, data, CIF_ISP_LSC_B_TABLE_DATA); } - data = CIF_ISP_LSC_TABLE_DATA( - pconfig->r_data_tbl[i + CIF_ISP_LSC_SECTORS_MAX], - 0); - rkisp1_iowrite32(params_vdev, data, - CIF_ISP_LSC_R_TABLE_DATA); data = CIF_ISP_LSC_TABLE_DATA( - pconfig->gr_data_tbl[i + CIF_ISP_LSC_SECTORS_MAX], + pconfig->r_data_tbl[i + j], 0); rkisp1_iowrite32(params_vdev, data, - CIF_ISP_LSC_GR_TABLE_DATA); + CIF_ISP_LSC_R_TABLE_DATA); data = CIF_ISP_LSC_TABLE_DATA( - pconfig->gb_data_tbl[i + CIF_ISP_LSC_SECTORS_MAX], + pconfig->gr_data_tbl[i + j], 0); rkisp1_iowrite32(params_vdev, data, - CIF_ISP_LSC_GB_TABLE_DATA); + CIF_ISP_LSC_GR_TABLE_DATA); data = CIF_ISP_LSC_TABLE_DATA( - pconfig->b_data_tbl[i + CIF_ISP_LSC_SECTORS_MAX], + pconfig->gb_data_tbl[i + j], 0); rkisp1_iowrite32(params_vdev, data, - CIF_ISP_LSC_B_TABLE_DATA); + CIF_ISP_LSC_GB_TABLE_DATA); + + data = CIF_ISP_LSC_TABLE_DATA( + pconfig->b_data_tbl[i + j], + 0); + rkisp1_iowrite32(params_vdev, data, + CIF_ISP_LSC_B_TABLE_DATA); } isp_lsc_table_sel = (isp_lsc_status & CIF_ISP_LSC_ACTIVE_TABLE) ? CIF_ISP_LSC_TABLE_0 : CIF_ISP_LSC_TABLE_1; diff --git a/drivers/media/platform/rockchip/isp1/regs.h b/drivers/media/platform/rockchip/isp1/regs.h index b2495fa80ba7..53977bc7e879 100644 --- a/drivers/media/platform/rockchip/isp1/regs.h +++ b/drivers/media/platform/rockchip/isp1/regs.h @@ -504,7 +504,7 @@ #define CIF_ISP_LSC_SECT_SIZE_RESERVED 0xFC00FC00 #define CIF_ISP_LSC_GRAD_RESERVED 0xF000F000 #define CIF_ISP_LSC_SAMPLE_RESERVED 0xF000F000 -#define CIF_ISP_LSC_SECTORS_MAX 16 +#define CIF_ISP_LSC_SECTORS_MAX 17 #define CIF_ISP_LSC_TABLE_DATA(v0, v1) \ (((v0) & 0xFFF) | (((v1) & 0xFFF) << 12)) #define CIF_ISP_LSC_SECT_SIZE(v0, v1) \