mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 19:30:30 +09:00
media: rockchip: isp: fix awb raw data config for multi device
Change-Id: I295dcda2a0f7e1ccc40f3e9f1b9838e655238584 Signed-off-by: Cai YiWei <cyw@rock-chips.com>
This commit is contained in:
@@ -1312,11 +1312,33 @@ isp_rawae3_enable(struct rkisp_isp_params_vdev *params_vdev,
|
||||
isp_rawaebig_enable(params_vdev, en, 0);
|
||||
}
|
||||
|
||||
static void
|
||||
isp_rawawb_cfg_sram(struct rkisp_isp_params_vdev *params_vdev,
|
||||
const struct isp21_rawawb_meas_cfg *arg, bool is_check)
|
||||
{
|
||||
u32 i, val = ISP2X_RAWAWB_ENA;
|
||||
|
||||
if (is_check &&
|
||||
!(rkisp_ioread32(params_vdev, ISP21_RAWAWB_CTRL) & val))
|
||||
return;
|
||||
|
||||
for (i = 0; i < ISP21_RAWAWB_WEIGHT_NUM / 5; i++) {
|
||||
val = (arg->sw_rawawb_wp_blk_wei_w[5 * i] & 0x3f) << 0 |
|
||||
(arg->sw_rawawb_wp_blk_wei_w[5 * i + 1] & 0x3f) << 6 |
|
||||
(arg->sw_rawawb_wp_blk_wei_w[5 * i + 2] & 0x3f) << 12 |
|
||||
(arg->sw_rawawb_wp_blk_wei_w[5 * i + 3] & 0x3f) << 18 |
|
||||
(arg->sw_rawawb_wp_blk_wei_w[5 * i + 4] & 0x3f) << 24,
|
||||
rkisp_iowrite32(params_vdev, val, ISP21_RAWAWB_WRAM_DATA_BASE);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
isp_rawawb_config(struct rkisp_isp_params_vdev *params_vdev,
|
||||
const struct isp21_rawawb_meas_cfg *arg)
|
||||
{
|
||||
u32 i, value;
|
||||
struct isp21_isp_params_cfg *params_rec = params_vdev->isp21_params;
|
||||
struct isp21_rawawb_meas_cfg *arg_rec = ¶ms_rec->meas.rawawb;
|
||||
u32 value;
|
||||
|
||||
rkisp_iowrite32(params_vdev,
|
||||
(arg->sw_rawawb_blk_measure_enable & 0x1) |
|
||||
@@ -2119,15 +2141,12 @@ isp_rawawb_config(struct rkisp_isp_params_vdev *params_vdev,
|
||||
arg->sw_rawawb_exc_wp_region6_yv1),
|
||||
ISP21_RAWAWB_EXC_WP_REGION6_YV);
|
||||
|
||||
for (i = 0; i < ISP21_RAWAWB_WEIGHT_NUM / 5; i++) {
|
||||
rkisp_iowrite32(params_vdev,
|
||||
(arg->sw_rawawb_wp_blk_wei_w[5 * i] & 0x3f) << 0 |
|
||||
(arg->sw_rawawb_wp_blk_wei_w[5 * i + 1] & 0x3f) << 6 |
|
||||
(arg->sw_rawawb_wp_blk_wei_w[5 * i + 2] & 0x3f) << 12 |
|
||||
(arg->sw_rawawb_wp_blk_wei_w[5 * i + 3] & 0x3f) << 18 |
|
||||
(arg->sw_rawawb_wp_blk_wei_w[5 * i + 4] & 0x3f) << 24,
|
||||
ISP21_RAWAWB_WRAM_DATA_BASE);
|
||||
}
|
||||
if (params_vdev->dev->hw_dev->is_single)
|
||||
isp_rawawb_cfg_sram(params_vdev, arg, false);
|
||||
else
|
||||
memcpy(arg_rec->sw_rawawb_wp_blk_wei_w,
|
||||
arg->sw_rawawb_wp_blk_wei_w,
|
||||
ISP21_RAWAWB_WEIGHT_NUM);
|
||||
|
||||
/* avoid to override the old enable value */
|
||||
value = rkisp_ioread32(params_vdev, ISP21_RAWAWB_CTRL);
|
||||
@@ -3723,6 +3742,7 @@ void rkisp_params_cfgsram_v21(struct rkisp_isp_params_vdev *params_vdev)
|
||||
isp_rawhstbig_cfg_sram(params_vdev, ¶ms->meas.rawhist1, 1, true);
|
||||
isp_rawhstbig_cfg_sram(params_vdev, ¶ms->meas.rawhist2, 2, true);
|
||||
isp_rawhstbig_cfg_sram(params_vdev, ¶ms->meas.rawhist3, 0, true);
|
||||
isp_rawawb_cfg_sram(params_vdev, ¶ms->meas.rawawb, true);
|
||||
}
|
||||
|
||||
static int
|
||||
|
||||
@@ -1419,11 +1419,35 @@ isp_rawae3_enable(struct rkisp_isp_params_vdev *params_vdev, bool en, u32 id)
|
||||
isp_rawaebig_enable(params_vdev, en, 0, id);
|
||||
}
|
||||
|
||||
static void
|
||||
isp_rawawb_cfg_sram(struct rkisp_isp_params_vdev *params_vdev,
|
||||
const struct isp3x_rawawb_meas_cfg *arg,
|
||||
bool is_check, u32 id)
|
||||
{
|
||||
u32 i, val = ISP3X_MODULE_EN;
|
||||
|
||||
if (is_check &&
|
||||
!(isp3_param_read(params_vdev, ISP3X_RAWAWB_CTRL, id) & val))
|
||||
return;
|
||||
|
||||
for (i = 0; i < ISP3X_RAWAWB_WEIGHT_NUM / 5; i++) {
|
||||
isp3_param_write(params_vdev,
|
||||
(arg->sw_rawawb_wp_blk_wei_w[5 * i] & 0x3f) << 0 |
|
||||
(arg->sw_rawawb_wp_blk_wei_w[5 * i + 1] & 0x3f) << 6 |
|
||||
(arg->sw_rawawb_wp_blk_wei_w[5 * i + 2] & 0x3f) << 12 |
|
||||
(arg->sw_rawawb_wp_blk_wei_w[5 * i + 3] & 0x3f) << 18 |
|
||||
(arg->sw_rawawb_wp_blk_wei_w[5 * i + 4] & 0x3f) << 24,
|
||||
ISP3X_RAWAWB_WRAM_DATA_BASE, id);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
isp_rawawb_config(struct rkisp_isp_params_vdev *params_vdev,
|
||||
const struct isp3x_rawawb_meas_cfg *arg, u32 id)
|
||||
{
|
||||
u32 i, value;
|
||||
struct isp3x_isp_params_cfg *params_rec = params_vdev->isp3x_params + id;
|
||||
struct isp3x_rawawb_meas_cfg *arg_rec = ¶ms_rec->meas.rawawb;
|
||||
u32 value;
|
||||
|
||||
isp3_param_write(params_vdev,
|
||||
(arg->sw_rawawb_blk_measure_enable & 0x1) |
|
||||
@@ -2263,15 +2287,12 @@ isp_rawawb_config(struct rkisp_isp_params_vdev *params_vdev,
|
||||
arg->sw_rawawb_exc_wp_region6_yv1),
|
||||
ISP3X_RAWAWB_EXC_WP_REGION6_YV, id);
|
||||
|
||||
for (i = 0; i < ISP3X_RAWAWB_WEIGHT_NUM / 5; i++) {
|
||||
isp3_param_write(params_vdev,
|
||||
(arg->sw_rawawb_wp_blk_wei_w[5 * i] & 0x3f) << 0 |
|
||||
(arg->sw_rawawb_wp_blk_wei_w[5 * i + 1] & 0x3f) << 6 |
|
||||
(arg->sw_rawawb_wp_blk_wei_w[5 * i + 2] & 0x3f) << 12 |
|
||||
(arg->sw_rawawb_wp_blk_wei_w[5 * i + 3] & 0x3f) << 18 |
|
||||
(arg->sw_rawawb_wp_blk_wei_w[5 * i + 4] & 0x3f) << 24,
|
||||
ISP3X_RAWAWB_WRAM_DATA_BASE, id);
|
||||
}
|
||||
if (params_vdev->dev->hw_dev->is_single)
|
||||
isp_rawawb_cfg_sram(params_vdev, arg, false, id);
|
||||
else
|
||||
memcpy(arg_rec->sw_rawawb_wp_blk_wei_w,
|
||||
arg->sw_rawawb_wp_blk_wei_w,
|
||||
ISP3X_RAWAWB_WEIGHT_NUM);
|
||||
|
||||
/* avoid to override the old enable value */
|
||||
value = isp3_param_read(params_vdev, ISP3X_RAWAWB_CTRL, id);
|
||||
@@ -4049,12 +4070,14 @@ void rkisp_params_cfgsram_v3x(struct rkisp_isp_params_vdev *params_vdev)
|
||||
isp_rawhstbig_cfg_sram(params_vdev, ¶ms->meas.rawhist1, 1, true, 0);
|
||||
isp_rawhstbig_cfg_sram(params_vdev, ¶ms->meas.rawhist2, 2, true, 0);
|
||||
isp_rawhstbig_cfg_sram(params_vdev, ¶ms->meas.rawhist3, 0, true, 0);
|
||||
isp_rawawb_cfg_sram(params_vdev, ¶ms->meas.rawawb, true, 0);
|
||||
if (params_vdev->dev->hw_dev->is_unite) {
|
||||
params++;
|
||||
isp_lsc_matrix_cfg_sram(params_vdev, ¶ms->others.lsc_cfg, true, 1);
|
||||
isp_rawhstbig_cfg_sram(params_vdev, ¶ms->meas.rawhist1, 1, true, 1);
|
||||
isp_rawhstbig_cfg_sram(params_vdev, ¶ms->meas.rawhist2, 2, true, 1);
|
||||
isp_rawhstbig_cfg_sram(params_vdev, ¶ms->meas.rawhist3, 0, true, 1);
|
||||
isp_rawawb_cfg_sram(params_vdev, ¶ms->meas.rawawb, true, 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user