[PATCH 1/5] media: rkisp1: Clean up LSC configuration code

Dafna Hirschfeld dafna at fastmail.com
Wed Aug 17 19:32:49 PDT 2022


On 17.08.2022 05:18, Laurent Pinchart wrote:
>Clean up the LSC configuration code to improve its readability by
>shortening lines, using extra local variables and renaming long
>variables. No functional change intended.
>
>Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

Reviewed-by: Dafna Hirschfeld <dafna at fastmail.com>

>---
> .../platform/rockchip/rkisp1/rkisp1-params.c  | 199 ++++++++----------
> 1 file changed, 86 insertions(+), 113 deletions(-)
>
>diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-params.c b/drivers/media/platform/rockchip/rkisp1/rkisp1-params.c
>index 246a6faa1fc1..fbbaf5505291 100644
>--- a/drivers/media/platform/rockchip/rkisp1/rkisp1-params.c
>+++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-params.c
>@@ -198,149 +198,129 @@ static void
> rkisp1_lsc_matrix_config_v10(struct rkisp1_params *params,
> 			     const struct rkisp1_cif_isp_lsc_config *pconfig)
> {
>-	unsigned int isp_lsc_status, sram_addr, isp_lsc_table_sel, i, j, data;
>+	struct rkisp1_device *rkisp1 = params->rkisp1;
>+	unsigned int lsc_status, sram_addr, lsc_table_sel, i, j;
>
>-	isp_lsc_status = rkisp1_read(params->rkisp1, RKISP1_CIF_ISP_LSC_STATUS);
>+	lsc_status = rkisp1_read(rkisp1, RKISP1_CIF_ISP_LSC_STATUS);
>
> 	/* RKISP1_CIF_ISP_LSC_TABLE_ADDRESS_153 = ( 17 * 18 ) >> 1 */
>-	sram_addr = (isp_lsc_status & RKISP1_CIF_ISP_LSC_ACTIVE_TABLE) ?
>+	sram_addr = lsc_status & RKISP1_CIF_ISP_LSC_ACTIVE_TABLE ?
> 		    RKISP1_CIF_ISP_LSC_TABLE_ADDRESS_0 :
> 		    RKISP1_CIF_ISP_LSC_TABLE_ADDRESS_153;
>-	rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_LSC_R_TABLE_ADDR, sram_addr);
>-	rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_LSC_GR_TABLE_ADDR, sram_addr);
>-	rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_LSC_GB_TABLE_ADDR, sram_addr);
>-	rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_LSC_B_TABLE_ADDR, sram_addr);
>+	rkisp1_write(rkisp1, RKISP1_CIF_ISP_LSC_R_TABLE_ADDR, sram_addr);
>+	rkisp1_write(rkisp1, RKISP1_CIF_ISP_LSC_GR_TABLE_ADDR, sram_addr);
>+	rkisp1_write(rkisp1, RKISP1_CIF_ISP_LSC_GB_TABLE_ADDR, sram_addr);
>+	rkisp1_write(rkisp1, RKISP1_CIF_ISP_LSC_B_TABLE_ADDR, sram_addr);
>
> 	/* program data tables (table size is 9 * 17 = 153) */
> 	for (i = 0; i < RKISP1_CIF_ISP_LSC_SAMPLES_MAX; i++) {
>+		const __u16 *r_tbl = pconfig->r_data_tbl[i];
>+		const __u16 *gr_tbl = pconfig->gr_data_tbl[i];
>+		const __u16 *gb_tbl = pconfig->gb_data_tbl[i];
>+		const __u16 *b_tbl = pconfig->b_data_tbl[i];
>+
> 		/*
> 		 * 17 sectors with 2 values in one DWORD = 9
> 		 * DWORDs (2nd value of last DWORD unused)
> 		 */
> 		for (j = 0; j < RKISP1_CIF_ISP_LSC_SAMPLES_MAX - 1; j += 2) {
>-			data = RKISP1_CIF_ISP_LSC_TABLE_DATA_V10(pconfig->r_data_tbl[i][j],
>-								 pconfig->r_data_tbl[i][j + 1]);
>-			rkisp1_write(params->rkisp1,
>-				     RKISP1_CIF_ISP_LSC_R_TABLE_DATA, data);
>-
>-			data = RKISP1_CIF_ISP_LSC_TABLE_DATA_V10(pconfig->gr_data_tbl[i][j],
>-								 pconfig->gr_data_tbl[i][j + 1]);
>-			rkisp1_write(params->rkisp1,
>-				     RKISP1_CIF_ISP_LSC_GR_TABLE_DATA, data);
>-
>-			data = RKISP1_CIF_ISP_LSC_TABLE_DATA_V10(pconfig->gb_data_tbl[i][j],
>-								 pconfig->gb_data_tbl[i][j + 1]);
>-			rkisp1_write(params->rkisp1,
>-				     RKISP1_CIF_ISP_LSC_GB_TABLE_DATA, data);
>-
>-			data = RKISP1_CIF_ISP_LSC_TABLE_DATA_V10(pconfig->b_data_tbl[i][j],
>-								 pconfig->b_data_tbl[i][j + 1]);
>-			rkisp1_write(params->rkisp1,
>-				     RKISP1_CIF_ISP_LSC_B_TABLE_DATA, data);
>+			rkisp1_write(rkisp1, RKISP1_CIF_ISP_LSC_R_TABLE_DATA,
>+				     RKISP1_CIF_ISP_LSC_TABLE_DATA_V10(
>+					r_tbl[j], r_tbl[j + 1]));
>+			rkisp1_write(rkisp1, RKISP1_CIF_ISP_LSC_GR_TABLE_DATA,
>+				     RKISP1_CIF_ISP_LSC_TABLE_DATA_V10(
>+					gr_tbl[j], gr_tbl[j + 1]));
>+			rkisp1_write(rkisp1, RKISP1_CIF_ISP_LSC_GB_TABLE_DATA,
>+				     RKISP1_CIF_ISP_LSC_TABLE_DATA_V10(
>+					gb_tbl[j], gb_tbl[j + 1]));
>+			rkisp1_write(rkisp1, RKISP1_CIF_ISP_LSC_B_TABLE_DATA,
>+				     RKISP1_CIF_ISP_LSC_TABLE_DATA_V10(
>+					b_tbl[j], b_tbl[j + 1]));
> 		}
>-		data = RKISP1_CIF_ISP_LSC_TABLE_DATA_V10(pconfig->r_data_tbl[i][j], 0);
>-		rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_LSC_R_TABLE_DATA,
>-			     data);
>
>-		data = RKISP1_CIF_ISP_LSC_TABLE_DATA_V10(pconfig->gr_data_tbl[i][j], 0);
>-		rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_LSC_GR_TABLE_DATA,
>-			     data);
>-
>-		data = RKISP1_CIF_ISP_LSC_TABLE_DATA_V10(pconfig->gb_data_tbl[i][j], 0);
>-		rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_LSC_GB_TABLE_DATA,
>-			     data);
>-
>-		data = RKISP1_CIF_ISP_LSC_TABLE_DATA_V10(pconfig->b_data_tbl[i][j], 0);
>-		rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_LSC_B_TABLE_DATA,
>-			     data);
>+		rkisp1_write(rkisp1, RKISP1_CIF_ISP_LSC_R_TABLE_DATA,
>+			     RKISP1_CIF_ISP_LSC_TABLE_DATA_V10(r_tbl[j], 0));
>+		rkisp1_write(rkisp1, RKISP1_CIF_ISP_LSC_GR_TABLE_DATA,
>+			     RKISP1_CIF_ISP_LSC_TABLE_DATA_V10(gr_tbl[j], 0));
>+		rkisp1_write(rkisp1, RKISP1_CIF_ISP_LSC_GB_TABLE_DATA,
>+			     RKISP1_CIF_ISP_LSC_TABLE_DATA_V10(gb_tbl[j], 0));
>+		rkisp1_write(rkisp1, RKISP1_CIF_ISP_LSC_B_TABLE_DATA,
>+			     RKISP1_CIF_ISP_LSC_TABLE_DATA_V10(b_tbl[j], 0));
> 	}
>-	isp_lsc_table_sel = (isp_lsc_status & RKISP1_CIF_ISP_LSC_ACTIVE_TABLE) ?
>-			    RKISP1_CIF_ISP_LSC_TABLE_0 :
>-			    RKISP1_CIF_ISP_LSC_TABLE_1;
>-	rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_LSC_TABLE_SEL,
>-		     isp_lsc_table_sel);
>+
>+	lsc_table_sel = lsc_status & RKISP1_CIF_ISP_LSC_ACTIVE_TABLE ?
>+			RKISP1_CIF_ISP_LSC_TABLE_0 : RKISP1_CIF_ISP_LSC_TABLE_1;
>+	rkisp1_write(rkisp1, RKISP1_CIF_ISP_LSC_TABLE_SEL, lsc_table_sel);
> }
>
> static void
> rkisp1_lsc_matrix_config_v12(struct rkisp1_params *params,
> 			     const struct rkisp1_cif_isp_lsc_config *pconfig)
> {
>-	unsigned int isp_lsc_status, sram_addr, isp_lsc_table_sel, i, j, data;
>+	struct rkisp1_device *rkisp1 = params->rkisp1;
>+	unsigned int lsc_status, sram_addr, lsc_table_sel, i, j;
>
>-	isp_lsc_status = rkisp1_read(params->rkisp1, RKISP1_CIF_ISP_LSC_STATUS);
>+	lsc_status = rkisp1_read(rkisp1, RKISP1_CIF_ISP_LSC_STATUS);
>
> 	/* RKISP1_CIF_ISP_LSC_TABLE_ADDRESS_153 = ( 17 * 18 ) >> 1 */
>-	sram_addr = (isp_lsc_status & RKISP1_CIF_ISP_LSC_ACTIVE_TABLE) ?
>-		     RKISP1_CIF_ISP_LSC_TABLE_ADDRESS_0 :
>-		     RKISP1_CIF_ISP_LSC_TABLE_ADDRESS_153;
>-	rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_LSC_R_TABLE_ADDR, sram_addr);
>-	rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_LSC_GR_TABLE_ADDR, sram_addr);
>-	rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_LSC_GB_TABLE_ADDR, sram_addr);
>-	rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_LSC_B_TABLE_ADDR, sram_addr);
>+	sram_addr = lsc_status & RKISP1_CIF_ISP_LSC_ACTIVE_TABLE ?
>+		    RKISP1_CIF_ISP_LSC_TABLE_ADDRESS_0 :
>+		    RKISP1_CIF_ISP_LSC_TABLE_ADDRESS_153;
>+	rkisp1_write(rkisp1, RKISP1_CIF_ISP_LSC_R_TABLE_ADDR, sram_addr);
>+	rkisp1_write(rkisp1, RKISP1_CIF_ISP_LSC_GR_TABLE_ADDR, sram_addr);
>+	rkisp1_write(rkisp1, RKISP1_CIF_ISP_LSC_GB_TABLE_ADDR, sram_addr);
>+	rkisp1_write(rkisp1, RKISP1_CIF_ISP_LSC_B_TABLE_ADDR, sram_addr);
>
> 	/* program data tables (table size is 9 * 17 = 153) */
> 	for (i = 0; i < RKISP1_CIF_ISP_LSC_SAMPLES_MAX; i++) {
>+		const __u16 *r_tbl = pconfig->r_data_tbl[i];
>+		const __u16 *gr_tbl = pconfig->gr_data_tbl[i];
>+		const __u16 *gb_tbl = pconfig->gb_data_tbl[i];
>+		const __u16 *b_tbl = pconfig->b_data_tbl[i];
>+
> 		/*
> 		 * 17 sectors with 2 values in one DWORD = 9
> 		 * DWORDs (2nd value of last DWORD unused)
> 		 */
> 		for (j = 0; j < RKISP1_CIF_ISP_LSC_SAMPLES_MAX - 1; j += 2) {
>-			data = RKISP1_CIF_ISP_LSC_TABLE_DATA_V12(
>-					pconfig->r_data_tbl[i][j],
>-					pconfig->r_data_tbl[i][j + 1]);
>-			rkisp1_write(params->rkisp1,
>-				     RKISP1_CIF_ISP_LSC_R_TABLE_DATA, data);
>-
>-			data = RKISP1_CIF_ISP_LSC_TABLE_DATA_V12(
>-					pconfig->gr_data_tbl[i][j],
>-					pconfig->gr_data_tbl[i][j + 1]);
>-			rkisp1_write(params->rkisp1,
>-				     RKISP1_CIF_ISP_LSC_GR_TABLE_DATA, data);
>-
>-			data = RKISP1_CIF_ISP_LSC_TABLE_DATA_V12(
>-					pconfig->gb_data_tbl[i][j],
>-					pconfig->gb_data_tbl[i][j + 1]);
>-			rkisp1_write(params->rkisp1,
>-				     RKISP1_CIF_ISP_LSC_GB_TABLE_DATA, data);
>-
>-			data = RKISP1_CIF_ISP_LSC_TABLE_DATA_V12(
>-					pconfig->b_data_tbl[i][j],
>-					pconfig->b_data_tbl[i][j + 1]);
>-			rkisp1_write(params->rkisp1,
>-				     RKISP1_CIF_ISP_LSC_B_TABLE_DATA, data);
>+			rkisp1_write(rkisp1, RKISP1_CIF_ISP_LSC_R_TABLE_DATA,
>+				     RKISP1_CIF_ISP_LSC_TABLE_DATA_V12(
>+					r_tbl[j], r_tbl[j + 1]));
>+			rkisp1_write(rkisp1, RKISP1_CIF_ISP_LSC_GR_TABLE_DATA,
>+				     RKISP1_CIF_ISP_LSC_TABLE_DATA_V12(
>+					gr_tbl[j], gr_tbl[j + 1]));
>+			rkisp1_write(rkisp1, RKISP1_CIF_ISP_LSC_GB_TABLE_DATA,
>+				     RKISP1_CIF_ISP_LSC_TABLE_DATA_V12(
>+					gb_tbl[j], gb_tbl[j + 1]));
>+			rkisp1_write(rkisp1, RKISP1_CIF_ISP_LSC_B_TABLE_DATA,
>+				     RKISP1_CIF_ISP_LSC_TABLE_DATA_V12(
>+					b_tbl[j], b_tbl[j + 1]));
> 		}
>
>-		data = RKISP1_CIF_ISP_LSC_TABLE_DATA_V12(pconfig->r_data_tbl[i][j], 0);
>-		rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_LSC_R_TABLE_DATA,
>-			     data);
>-
>-		data = RKISP1_CIF_ISP_LSC_TABLE_DATA_V12(pconfig->gr_data_tbl[i][j], 0);
>-		rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_LSC_GR_TABLE_DATA,
>-			     data);
>-
>-		data = RKISP1_CIF_ISP_LSC_TABLE_DATA_V12(pconfig->gb_data_tbl[i][j], 0);
>-		rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_LSC_GB_TABLE_DATA,
>-			     data);
>-
>-		data = RKISP1_CIF_ISP_LSC_TABLE_DATA_V12(pconfig->b_data_tbl[i][j], 0);
>-		rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_LSC_B_TABLE_DATA,
>-			     data);
>+		rkisp1_write(rkisp1, RKISP1_CIF_ISP_LSC_R_TABLE_DATA,
>+			     RKISP1_CIF_ISP_LSC_TABLE_DATA_V12(r_tbl[j], 0));
>+		rkisp1_write(rkisp1, RKISP1_CIF_ISP_LSC_GR_TABLE_DATA,
>+			     RKISP1_CIF_ISP_LSC_TABLE_DATA_V12(gr_tbl[j], 0));
>+		rkisp1_write(rkisp1, RKISP1_CIF_ISP_LSC_GB_TABLE_DATA,
>+			     RKISP1_CIF_ISP_LSC_TABLE_DATA_V12(gb_tbl[j], 0));
>+		rkisp1_write(rkisp1, RKISP1_CIF_ISP_LSC_B_TABLE_DATA,
>+			     RKISP1_CIF_ISP_LSC_TABLE_DATA_V12(b_tbl[j], 0));
> 	}
>-	isp_lsc_table_sel = (isp_lsc_status & RKISP1_CIF_ISP_LSC_ACTIVE_TABLE) ?
>-			    RKISP1_CIF_ISP_LSC_TABLE_0 :
>-			    RKISP1_CIF_ISP_LSC_TABLE_1;
>-	rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_LSC_TABLE_SEL,
>-		     isp_lsc_table_sel);
>+
>+	lsc_table_sel = lsc_status & RKISP1_CIF_ISP_LSC_ACTIVE_TABLE ?
>+			RKISP1_CIF_ISP_LSC_TABLE_0 : RKISP1_CIF_ISP_LSC_TABLE_1;
>+	rkisp1_write(rkisp1, RKISP1_CIF_ISP_LSC_TABLE_SEL, lsc_table_sel);
> }
>
> static void rkisp1_lsc_config(struct rkisp1_params *params,
> 			      const struct rkisp1_cif_isp_lsc_config *arg)
> {
>+	struct rkisp1_device *rkisp1 = params->rkisp1;
> 	unsigned int i, data;
> 	u32 lsc_ctrl;
>
> 	/* To config must be off , store the current status firstly */
>-	lsc_ctrl = rkisp1_read(params->rkisp1, RKISP1_CIF_ISP_LSC_CTRL);
>+	lsc_ctrl = rkisp1_read(rkisp1, RKISP1_CIF_ISP_LSC_CTRL);
> 	rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_LSC_CTRL,
> 				RKISP1_CIF_ISP_LSC_CTRL_ENA);
> 	params->ops->lsc_matrix_config(params, arg);
>@@ -349,38 +329,31 @@ static void rkisp1_lsc_config(struct rkisp1_params *params,
> 		/* program x size tables */
> 		data = RKISP1_CIF_ISP_LSC_SECT_SIZE(arg->x_size_tbl[i * 2],
> 						    arg->x_size_tbl[i * 2 + 1]);
>-		rkisp1_write(params->rkisp1,
>-			     RKISP1_CIF_ISP_LSC_XSIZE_01 + i * 4, data);
>+		rkisp1_write(rkisp1, RKISP1_CIF_ISP_LSC_XSIZE_01 + i * 4, data);
>
> 		/* program x grad tables */
> 		data = RKISP1_CIF_ISP_LSC_SECT_SIZE(arg->x_grad_tbl[i * 2],
> 						    arg->x_grad_tbl[i * 2 + 1]);
>-		rkisp1_write(params->rkisp1,
>-			     RKISP1_CIF_ISP_LSC_XGRAD_01 + i * 4, data);
>+		rkisp1_write(rkisp1, RKISP1_CIF_ISP_LSC_XGRAD_01 + i * 4, data);
>
> 		/* program y size tables */
> 		data = RKISP1_CIF_ISP_LSC_SECT_SIZE(arg->y_size_tbl[i * 2],
> 						    arg->y_size_tbl[i * 2 + 1]);
>-		rkisp1_write(params->rkisp1,
>-			     RKISP1_CIF_ISP_LSC_YSIZE_01 + i * 4, data);
>+		rkisp1_write(rkisp1, RKISP1_CIF_ISP_LSC_YSIZE_01 + i * 4, data);
>
> 		/* program y grad tables */
> 		data = RKISP1_CIF_ISP_LSC_SECT_SIZE(arg->y_grad_tbl[i * 2],
> 						    arg->y_grad_tbl[i * 2 + 1]);
>-		rkisp1_write(params->rkisp1,
>-			     RKISP1_CIF_ISP_LSC_YGRAD_01 + i * 4, data);
>+		rkisp1_write(rkisp1, RKISP1_CIF_ISP_LSC_YGRAD_01 + i * 4, data);
> 	}
>
> 	/* restore the lsc ctrl status */
>-	if (lsc_ctrl & RKISP1_CIF_ISP_LSC_CTRL_ENA) {
>-		rkisp1_param_set_bits(params,
>-				      RKISP1_CIF_ISP_LSC_CTRL,
>+	if (lsc_ctrl & RKISP1_CIF_ISP_LSC_CTRL_ENA)
>+		rkisp1_param_set_bits(params, RKISP1_CIF_ISP_LSC_CTRL,
> 				      RKISP1_CIF_ISP_LSC_CTRL_ENA);
>-	} else {
>-		rkisp1_param_clear_bits(params,
>-					RKISP1_CIF_ISP_LSC_CTRL,
>+	else
>+		rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_LSC_CTRL,
> 					RKISP1_CIF_ISP_LSC_CTRL_ENA);
>-	}
> }
>
> /* ISP Filtering function */
>-- 
>Regards,
>
>Laurent Pinchart
>



More information about the Linux-rockchip mailing list