media: rockchip: isp1: fix config lsc error

LSC data table size is 17x17, but when configuring data to ISP,
should be aligned to 18x17. That means every last data of last
line should be filled with 0, and not filled with the data of
next line.

BUG=b:36227021
TEST=scarlet can preview.

Change-Id: I5e923529429a1c60efff3827e594f32db7112c1f
Signed-off-by: ZhongYiChong <zyc@rock-chips.com>
Reviewed-on: https://chromium-review.googlesource.com/942600
Commit-Ready: Jeffy Chen <jeffy.chen@rock-chips.com>
Tested-by: Jeffy Chen <jeffy.chen@rock-chips.com>
Reviewed-by: Tomasz Figa <tfiga@chromium.org>
This commit is contained in:
ZhongYiChong
2018-03-01 16:07:39 +08:00
committed by Tao Huang
parent 0a58f13cfa
commit ca3a31fb5d
2 changed files with 16 additions and 16 deletions

View File

@@ -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;

View File

@@ -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) \