mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-03 21:45:08 -04:00
media: staging: rkisp1: set "*_data_tbl" fields in rkisp1_cif_isp_lsc_config as 2D arrays
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>
This commit is contained in:
committed by
Mauro Carvalho Chehab
parent
47ad02d12e
commit
f718f6c8b7
@@ -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);
|
||||
}
|
||||
|
||||
@@ -475,7 +475,6 @@
|
||||
#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) \
|
||||
|
||||
@@ -101,9 +101,8 @@
|
||||
/*
|
||||
* 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];
|
||||
|
||||
Reference in New Issue
Block a user