media: staging: rkisp1: set "*_data_tbl" fields in rkisp1_cif_isp_lsc_config as 2D...
authorDafna Hirschfeld <dafna.hirschfeld@collabora.com>
Thu, 25 Jun 2020 18:50:15 +0000 (20:50 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Sat, 29 Aug 2020 06:30:48 +0000 (08:30 +0200)
Currently the fields '*_data_tbl' in the struct
'rkisp1_cif_isp_lsc_config' are one dimensional arrays
of size 290. The entries are accessed in a nested
loop by summing two indexes for the rows and columns.
Therefore it fits better to define the arrays as two
dimensional arrays of size 17x17.

Signed-off-by: Dafna Hirschfeld <dafna.hirschfeld@collabora.com>
Acked-by: Helen Koike <helen.koike@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/staging/media/rkisp1/rkisp1-params.c
drivers/staging/media/rkisp1/rkisp1-regs.h
drivers/staging/media/rkisp1/uapi/rkisp1-config.h

index 1ad5dc3..ef4fd0e 100644 (file)
@@ -206,47 +206,45 @@ rkisp1_lsc_correct_matrix_config(struct rkisp1_params *params,
                     RKISP1_CIF_ISP_LSC_B_TABLE_ADDR);
 
        /* program data tables (table size is 9 * 17 = 153) */
-       for (i = 0;
-            i < RKISP1_CIF_ISP_LSC_SECTORS_MAX * RKISP1_CIF_ISP_LSC_SECTORS_MAX;
-            i += RKISP1_CIF_ISP_LSC_SECTORS_MAX) {
+       for (i = 0; i < RKISP1_CIF_ISP_LSC_SAMPLES_MAX; 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_SECTORS_MAX - 1; j += 2) {
-                       data = RKISP1_CIF_ISP_LSC_TABLE_DATA(pconfig->r_data_tbl[i + j],
-                                                            pconfig->r_data_tbl[i + j + 1]);
+               for (j = 0; j < RKISP1_CIF_ISP_LSC_SAMPLES_MAX - 1; j += 2) {
+                       data = RKISP1_CIF_ISP_LSC_TABLE_DATA(pconfig->r_data_tbl[i][j],
+                                                            pconfig->r_data_tbl[i][j + 1]);
                        rkisp1_write(params->rkisp1, data,
                                     RKISP1_CIF_ISP_LSC_R_TABLE_DATA);
 
-                       data = RKISP1_CIF_ISP_LSC_TABLE_DATA(pconfig->gr_data_tbl[i + j],
-                                                            pconfig->gr_data_tbl[i + j + 1]);
+                       data = RKISP1_CIF_ISP_LSC_TABLE_DATA(pconfig->gr_data_tbl[i][j],
+                                                            pconfig->gr_data_tbl[i][j + 1]);
                        rkisp1_write(params->rkisp1, data,
                                     RKISP1_CIF_ISP_LSC_GR_TABLE_DATA);
 
-                       data = RKISP1_CIF_ISP_LSC_TABLE_DATA(pconfig->gb_data_tbl[i + j],
-                                                            pconfig->gb_data_tbl[i + j + 1]);
+                       data = RKISP1_CIF_ISP_LSC_TABLE_DATA(pconfig->gb_data_tbl[i][j],
+                                                            pconfig->gb_data_tbl[i][j + 1]);
                        rkisp1_write(params->rkisp1, data,
                                     RKISP1_CIF_ISP_LSC_GB_TABLE_DATA);
 
-                       data = RKISP1_CIF_ISP_LSC_TABLE_DATA(pconfig->b_data_tbl[i + j],
-                                                            pconfig->b_data_tbl[i + j + 1]);
+                       data = RKISP1_CIF_ISP_LSC_TABLE_DATA(pconfig->b_data_tbl[i][j],
+                                                            pconfig->b_data_tbl[i][j + 1]);
                        rkisp1_write(params->rkisp1, data,
                                     RKISP1_CIF_ISP_LSC_B_TABLE_DATA);
                }
-               data = RKISP1_CIF_ISP_LSC_TABLE_DATA(pconfig->r_data_tbl[i + j], 0);
+               data = RKISP1_CIF_ISP_LSC_TABLE_DATA(pconfig->r_data_tbl[i][j], 0);
                rkisp1_write(params->rkisp1, data,
                             RKISP1_CIF_ISP_LSC_R_TABLE_DATA);
 
-               data = RKISP1_CIF_ISP_LSC_TABLE_DATA(pconfig->gr_data_tbl[i + j], 0);
+               data = RKISP1_CIF_ISP_LSC_TABLE_DATA(pconfig->gr_data_tbl[i][j], 0);
                rkisp1_write(params->rkisp1, data,
                             RKISP1_CIF_ISP_LSC_GR_TABLE_DATA);
 
-               data = RKISP1_CIF_ISP_LSC_TABLE_DATA(pconfig->gb_data_tbl[i + j], 0);
+               data = RKISP1_CIF_ISP_LSC_TABLE_DATA(pconfig->gb_data_tbl[i][j], 0);
                rkisp1_write(params->rkisp1, data,
                             RKISP1_CIF_ISP_LSC_GB_TABLE_DATA);
 
-               data = RKISP1_CIF_ISP_LSC_TABLE_DATA(pconfig->b_data_tbl[i + j], 0);
+               data = RKISP1_CIF_ISP_LSC_TABLE_DATA(pconfig->b_data_tbl[i][j], 0);
                rkisp1_write(params->rkisp1, data,
                             RKISP1_CIF_ISP_LSC_B_TABLE_DATA);
        }
index 9b8e616..049f6c3 100644 (file)
 #define RKISP1_CIF_ISP_LSC_SECT_SIZE_RESERVED          0xFC00FC00
 #define RKISP1_CIF_ISP_LSC_GRAD_RESERVED               0xF000F000
 #define RKISP1_CIF_ISP_LSC_SAMPLE_RESERVED             0xF000F000
-#define RKISP1_CIF_ISP_LSC_SECTORS_MAX                 17
 #define RKISP1_CIF_ISP_LSC_TABLE_DATA(v0, v1)     \
        (((v0) & 0xFFF) | (((v1) & 0xFFF) << 12))
 #define RKISP1_CIF_ISP_LSC_SECT_SIZE(v0, v1)      \
index 6894ec7..5e0ead6 100644 (file)
 /*
  * The following matches the tuning process,
  * not the max capabilities of the chip.
- * Last value unused.
  */
-#define        RKISP1_CIF_ISP_LSC_DATA_TBL_SIZE           290
+#define RKISP1_CIF_ISP_LSC_SAMPLES_MAX             17
 
 /*
  * Histogram calculation
@@ -330,10 +329,10 @@ struct rkisp1_cif_isp_sdg_config {
  * @config_height: not used at the moment
  */
 struct rkisp1_cif_isp_lsc_config {
-       __u32 r_data_tbl[RKISP1_CIF_ISP_LSC_DATA_TBL_SIZE];
-       __u32 gr_data_tbl[RKISP1_CIF_ISP_LSC_DATA_TBL_SIZE];
-       __u32 gb_data_tbl[RKISP1_CIF_ISP_LSC_DATA_TBL_SIZE];
-       __u32 b_data_tbl[RKISP1_CIF_ISP_LSC_DATA_TBL_SIZE];
+       __u32 r_data_tbl[RKISP1_CIF_ISP_LSC_SAMPLES_MAX][RKISP1_CIF_ISP_LSC_SAMPLES_MAX];
+       __u32 gr_data_tbl[RKISP1_CIF_ISP_LSC_SAMPLES_MAX][RKISP1_CIF_ISP_LSC_SAMPLES_MAX];
+       __u32 gb_data_tbl[RKISP1_CIF_ISP_LSC_SAMPLES_MAX][RKISP1_CIF_ISP_LSC_SAMPLES_MAX];
+       __u32 b_data_tbl[RKISP1_CIF_ISP_LSC_SAMPLES_MAX][RKISP1_CIF_ISP_LSC_SAMPLES_MAX];
 
        __u32 x_grad_tbl[RKISP1_CIF_ISP_LSC_GRAD_TBL_SIZE];
        __u32 y_grad_tbl[RKISP1_CIF_ISP_LSC_GRAD_TBL_SIZE];