media: rockchip: isp: load lsc table by ddr

Signed-off-by: Hu Kejun <william.hu@rock-chips.com>
Change-Id: I6992d2f043674cbf6a780c8bdf3f3e070bc6b4cf
This commit is contained in:
Hu Kejun
2020-03-31 21:04:20 +08:00
committed by Tao Huang
parent 04d9d08ac3
commit ff6bd50712
2 changed files with 19 additions and 23 deletions

View File

@@ -564,20 +564,19 @@ isp_lsc_matrix_cfg_ddr(struct rkisp_isp_params_vdev *params_vdev,
const struct isp2x_lsc_cfg *pconfig)
{
struct rkisp_isp_params_val_v2x *priv_val;
u32 value, buf_idx;
unsigned int data;
u32 *vaddr[4];
u32 index[4];
u32 data, buf_idx, *vaddr[4], index[4];
void *buf_vaddr;
int i, j;
memset(&index[0], 0, sizeof(index));
priv_val = (struct rkisp_isp_params_val_v2x *)params_vdev->priv_val;
buf_idx = (priv_val->buf_lsclut_idx++) % RKISP_PARAM_LSC_LUT_BUF_NUM;
buf_vaddr = priv_val->buf_lsclut[buf_idx].vaddr;
memset(&index[0], 0, sizeof(index));
vaddr[0] = priv_val->buf_lsclut[buf_idx].vaddr;
vaddr[1] = vaddr[0] + RKISP_PARAM_LSC_LUT_TBL_SIZE;
vaddr[2] = vaddr[1] + RKISP_PARAM_LSC_LUT_TBL_SIZE;
vaddr[3] = vaddr[2] + RKISP_PARAM_LSC_LUT_TBL_SIZE;
vaddr[0] = buf_vaddr;
vaddr[1] = buf_vaddr + RKISP_PARAM_LSC_LUT_TBL_SIZE;
vaddr[2] = buf_vaddr + RKISP_PARAM_LSC_LUT_TBL_SIZE * 2;
vaddr[3] = buf_vaddr + RKISP_PARAM_LSC_LUT_TBL_SIZE * 3;
/* program data tables (table size is 9 * 17 = 153) */
for (i = 0; i < CIF_ISP_LSC_SECTORS_MAX * CIF_ISP_LSC_SECTORS_MAX;
@@ -598,13 +597,13 @@ isp_lsc_matrix_cfg_ddr(struct rkisp_isp_params_vdev *params_vdev,
vaddr[1][index[1]++] = data;
data = ISP_ISP_LSC_TABLE_DATA(
pconfig->gb_data_tbl[i + j],
pconfig->gb_data_tbl[i + j + 1]);
pconfig->b_data_tbl[i + j],
pconfig->b_data_tbl[i + j + 1]);
vaddr[2][index[2]++] = data;
data = ISP_ISP_LSC_TABLE_DATA(
pconfig->b_data_tbl[i + j],
pconfig->b_data_tbl[i + j + 1]);
pconfig->gb_data_tbl[i + j],
pconfig->gb_data_tbl[i + j + 1]);
vaddr[3][index[3]++] = data;
}
@@ -619,22 +618,19 @@ isp_lsc_matrix_cfg_ddr(struct rkisp_isp_params_vdev *params_vdev,
vaddr[1][index[1]++] = data;
data = ISP_ISP_LSC_TABLE_DATA(
pconfig->gb_data_tbl[i + j],
pconfig->b_data_tbl[i + j],
0);
vaddr[2][index[2]++] = data;
data = ISP_ISP_LSC_TABLE_DATA(
pconfig->b_data_tbl[i + j],
pconfig->gb_data_tbl[i + j],
0);
vaddr[3][index[3]++] = data;
}
value = priv_val->buf_lsclut[buf_idx].dma_addr;
rkisp_iowrite32(params_vdev, value, MI_LUT_LSC_RD_BASE);
data = priv_val->buf_lsclut[buf_idx].dma_addr;
rkisp_iowrite32(params_vdev, data, MI_LUT_LSC_RD_BASE);
rkisp_iowrite32(params_vdev, RKISP_PARAM_LSC_LUT_BUF_SIZE, MI_LUT_LSC_RD_WSIZE);
isp_param_set_bits(params_vdev,
ISP_LSC_CTRL,
ISP_LSC_LUT_EN);
}
static void
@@ -649,7 +645,7 @@ isp_lsc_config(struct rkisp_isp_params_vdev *params_vdev,
lsc_ctrl = rkisp_ioread32(params_vdev, ISP_LSC_CTRL);
isp_param_clear_bits(params_vdev, ISP_LSC_CTRL,
ISP_LSC_EN);
isp_lsc_matrix_cfg_sram(params_vdev, arg);
isp_lsc_matrix_cfg_ddr(params_vdev, arg);
for (i = 0; i < 4; i++) {
/* program x size tables */
@@ -696,7 +692,7 @@ isp_lsc_enable(struct rkisp_isp_params_vdev *params_vdev,
if (en) {
isp_param_set_bits(params_vdev,
ISP_LSC_CTRL,
ISP_LSC_EN);
ISP_LSC_LUT_EN | ISP_LSC_EN);
} else {
isp_param_clear_bits(params_vdev,
ISP_LSC_CTRL,

View File

@@ -176,7 +176,7 @@
#define RKISP_PARAM_LDCH_BUF_NUM 2
#define RKISP_PARAM_LSC_LUT_BUF_NUM 2
#define RKISP_PARAM_LSC_LUT_TBL_SIZE (9 * 17)
#define RKISP_PARAM_LSC_LUT_TBL_SIZE (9 * 17 * 4)
#define RKISP_PARAM_LSC_LUT_BUF_SIZE (RKISP_PARAM_LSC_LUT_TBL_SIZE * 4)
struct rkisp_isp_params_vdev;