mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 20:07:46 +09:00
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:
@@ -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;
|
||||
|
||||
@@ -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) \
|
||||
|
||||
Reference in New Issue
Block a user