mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 10:31:46 +09:00
media: rockchip: isp: fix bls2/bls3
Change-Id: I6729034bc03ce6ab27771af77d4dae4a7abc0314 Signed-off-by: Cai YiWei <cyw@rock-chips.com>
This commit is contained in:
@@ -1595,36 +1595,16 @@ isp_rawawb_config(struct rkisp_isp_params_vdev *params_vdev,
|
||||
u32 width = out_crop->width, height = out_crop->height;
|
||||
u32 value, val, mask, i, h_size, v_size, h_offs, v_offs;
|
||||
|
||||
/* bug no base on bayer pattern */
|
||||
isp3_param_write(params_vdev, pval->r, ISP32_BLS2_A_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gr, ISP32_BLS2_B_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gb, ISP32_BLS2_C_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->b, ISP32_BLS2_D_FIXED, id);
|
||||
|
||||
value = isp3_param_read(params_vdev, ISP3X_BLS_CTRL, id);
|
||||
value &= ~ISP32_BLS_BLS2_EN;
|
||||
if (arg->bls2_en)
|
||||
value |= ISP32_BLS_BLS2_EN;
|
||||
switch (params_vdev->raw_type) {
|
||||
case RAW_BGGR:
|
||||
isp3_param_write(params_vdev, pval->r, ISP32_BLS2_D_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gr, ISP32_BLS2_C_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gb, ISP32_BLS2_B_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->b, ISP32_BLS2_A_FIXED, id);
|
||||
break;
|
||||
case RAW_GBRG:
|
||||
isp3_param_write(params_vdev, pval->r, ISP32_BLS2_C_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gr, ISP32_BLS2_D_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gb, ISP32_BLS2_A_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->b, ISP32_BLS2_B_FIXED, id);
|
||||
break;
|
||||
case RAW_GRBG:
|
||||
isp3_param_write(params_vdev, pval->r, ISP32_BLS2_B_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gr, ISP32_BLS2_A_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gb, ISP32_BLS2_D_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->b, ISP32_BLS2_C_FIXED, id);
|
||||
break;
|
||||
case RAW_RGGB:
|
||||
default:
|
||||
isp3_param_write(params_vdev, pval->r, ISP32_BLS2_A_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gr, ISP32_BLS2_B_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gb, ISP32_BLS2_C_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->b, ISP32_BLS2_D_FIXED, id);
|
||||
}
|
||||
isp3_param_write(params_vdev, value, ISP3X_BLS_CTRL, id);
|
||||
|
||||
value = arg->in_overexposure_threshold << 16 |
|
||||
|
||||
@@ -1003,36 +1003,15 @@ isp_rawawb_config(struct rkisp_isp_params_vdev *params_vdev,
|
||||
u32 width = out_crop->width, height = out_crop->height;
|
||||
u32 value, val, mask, h_size, v_size, h_offs, v_offs;
|
||||
|
||||
isp3_param_write(params_vdev, pval->r, ISP32_BLS2_A_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gr, ISP32_BLS2_B_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gb, ISP32_BLS2_C_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->b, ISP32_BLS2_D_FIXED, id);
|
||||
|
||||
value = isp3_param_read(params_vdev, ISP3X_BLS_CTRL, id);
|
||||
value &= ~ISP32_BLS_BLS2_EN;
|
||||
if (arg->bls2_en)
|
||||
value |= ISP32_BLS_BLS2_EN;
|
||||
switch (params_vdev->raw_type) {
|
||||
case RAW_BGGR:
|
||||
isp3_param_write(params_vdev, pval->r, ISP32_BLS2_D_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gr, ISP32_BLS2_C_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gb, ISP32_BLS2_B_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->b, ISP32_BLS2_A_FIXED, id);
|
||||
break;
|
||||
case RAW_GBRG:
|
||||
isp3_param_write(params_vdev, pval->r, ISP32_BLS2_C_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gr, ISP32_BLS2_D_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gb, ISP32_BLS2_A_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->b, ISP32_BLS2_B_FIXED, id);
|
||||
break;
|
||||
case RAW_GRBG:
|
||||
isp3_param_write(params_vdev, pval->r, ISP32_BLS2_B_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gr, ISP32_BLS2_A_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gb, ISP32_BLS2_D_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->b, ISP32_BLS2_C_FIXED, id);
|
||||
break;
|
||||
case RAW_RGGB:
|
||||
default:
|
||||
isp3_param_write(params_vdev, pval->r, ISP32_BLS2_A_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gr, ISP32_BLS2_B_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gb, ISP32_BLS2_C_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->b, ISP32_BLS2_D_FIXED, id);
|
||||
}
|
||||
isp3_param_write(params_vdev, value, ISP3X_BLS_CTRL, id);
|
||||
|
||||
value = arg->in_overexposure_threshold << 16 |
|
||||
|
||||
@@ -1258,36 +1258,16 @@ isp_rawawb_config(struct rkisp_isp_params_vdev *params_vdev,
|
||||
u32 width = out_crop->width, height = out_crop->height;
|
||||
u32 value, val, mask, h_size, v_size, h_offs, v_offs;
|
||||
|
||||
/* bug no base on bayer pattern */
|
||||
isp3_param_write(params_vdev, pval->r, ISP32_BLS2_A_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gr, ISP32_BLS2_B_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gb, ISP32_BLS2_C_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->b, ISP32_BLS2_D_FIXED, id);
|
||||
|
||||
value = isp3_param_read(params_vdev, ISP3X_BLS_CTRL, id);
|
||||
value &= ~ISP32_BLS_BLS2_EN;
|
||||
if (arg->bls2_en)
|
||||
value |= ISP32_BLS_BLS2_EN;
|
||||
switch (params_vdev->raw_type) {
|
||||
case RAW_BGGR:
|
||||
isp3_param_write(params_vdev, pval->r, ISP32_BLS2_D_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gr, ISP32_BLS2_C_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gb, ISP32_BLS2_B_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->b, ISP32_BLS2_A_FIXED, id);
|
||||
break;
|
||||
case RAW_GBRG:
|
||||
isp3_param_write(params_vdev, pval->r, ISP32_BLS2_C_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gr, ISP32_BLS2_D_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gb, ISP32_BLS2_A_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->b, ISP32_BLS2_B_FIXED, id);
|
||||
break;
|
||||
case RAW_GRBG:
|
||||
isp3_param_write(params_vdev, pval->r, ISP32_BLS2_B_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gr, ISP32_BLS2_A_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gb, ISP32_BLS2_D_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->b, ISP32_BLS2_C_FIXED, id);
|
||||
break;
|
||||
case RAW_RGGB:
|
||||
default:
|
||||
isp3_param_write(params_vdev, pval->r, ISP32_BLS2_A_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gr, ISP32_BLS2_B_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gb, ISP32_BLS2_C_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->b, ISP32_BLS2_D_FIXED, id);
|
||||
}
|
||||
isp3_param_write(params_vdev, value, ISP3X_BLS_CTRL, id);
|
||||
|
||||
value = arg->in_overexposure_threshold << 16 |
|
||||
@@ -2122,32 +2102,12 @@ isp_aiawb_config(struct rkisp_isp_params_vdev *params_vdev,
|
||||
const struct isp2x_bls_fixed_val *pval = &arg->bls3_val;
|
||||
u32 value;
|
||||
|
||||
switch (params_vdev->raw_type) {
|
||||
case RAW_BGGR:
|
||||
value = ISP_PACK_2SHORT(pval->b, pval->gb);
|
||||
isp3_param_write(params_vdev, value, ISP35_BLS3_AB_FIXED, id);
|
||||
value = ISP_PACK_2SHORT(pval->gr, pval->r);
|
||||
isp3_param_write(params_vdev, value, ISP35_BLS3_CD_FIXED, id);
|
||||
break;
|
||||
case RAW_GBRG:
|
||||
value = ISP_PACK_2SHORT(pval->gb, pval->b);
|
||||
isp3_param_write(params_vdev, value, ISP35_BLS3_AB_FIXED, id);
|
||||
value = ISP_PACK_2SHORT(pval->r, pval->gr);
|
||||
isp3_param_write(params_vdev, value, ISP35_BLS3_CD_FIXED, id);
|
||||
break;
|
||||
case RAW_GRBG:
|
||||
value = ISP_PACK_2SHORT(pval->gr, pval->r);
|
||||
isp3_param_write(params_vdev, value, ISP35_BLS3_AB_FIXED, id);
|
||||
value = ISP_PACK_2SHORT(pval->b, pval->gb);
|
||||
isp3_param_write(params_vdev, value, ISP35_BLS3_CD_FIXED, id);
|
||||
break;
|
||||
case RAW_RGGB:
|
||||
default:
|
||||
value = ISP_PACK_2SHORT(pval->r, pval->gr);
|
||||
isp3_param_write(params_vdev, value, ISP35_BLS3_AB_FIXED, id);
|
||||
value = ISP_PACK_2SHORT(pval->gb, pval->b);
|
||||
isp3_param_write(params_vdev, value, ISP35_BLS3_CD_FIXED, id);
|
||||
}
|
||||
/* bug no base on bayer pattern */
|
||||
value = ISP_PACK_2SHORT(pval->r, pval->gr);
|
||||
isp3_param_write(params_vdev, value, ISP35_BLS3_AB_FIXED, id);
|
||||
value = ISP_PACK_2SHORT(pval->gb, pval->b);
|
||||
isp3_param_write(params_vdev, value, ISP35_BLS3_CD_FIXED, id);
|
||||
|
||||
value = isp3_param_read(params_vdev, ISP3X_BLS_CTRL, id);
|
||||
value &= ~ISP35_BLS_BLS3_EN;
|
||||
if (arg->bls3_en)
|
||||
|
||||
@@ -1292,36 +1292,16 @@ isp_rawawb_config(struct rkisp_isp_params_vdev *params_vdev,
|
||||
u32 width = out_crop->width, height = out_crop->height;
|
||||
u32 value, val, mask, h_size, v_size, h_offs, v_offs;
|
||||
|
||||
/* bug no base on bayer pattern */
|
||||
isp3_param_write(params_vdev, pval->r, ISP32_BLS2_A_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gr, ISP32_BLS2_B_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gb, ISP32_BLS2_C_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->b, ISP32_BLS2_D_FIXED, id);
|
||||
|
||||
value = isp3_param_read(params_vdev, ISP3X_BLS_CTRL, id);
|
||||
value &= ~ISP32_BLS_BLS2_EN;
|
||||
if (arg->bls2_en)
|
||||
value |= ISP32_BLS_BLS2_EN;
|
||||
switch (params_vdev->raw_type) {
|
||||
case RAW_BGGR:
|
||||
isp3_param_write(params_vdev, pval->r, ISP32_BLS2_D_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gr, ISP32_BLS2_C_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gb, ISP32_BLS2_B_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->b, ISP32_BLS2_A_FIXED, id);
|
||||
break;
|
||||
case RAW_GBRG:
|
||||
isp3_param_write(params_vdev, pval->r, ISP32_BLS2_C_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gr, ISP32_BLS2_D_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gb, ISP32_BLS2_A_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->b, ISP32_BLS2_B_FIXED, id);
|
||||
break;
|
||||
case RAW_GRBG:
|
||||
isp3_param_write(params_vdev, pval->r, ISP32_BLS2_B_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gr, ISP32_BLS2_A_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gb, ISP32_BLS2_D_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->b, ISP32_BLS2_C_FIXED, id);
|
||||
break;
|
||||
case RAW_RGGB:
|
||||
default:
|
||||
isp3_param_write(params_vdev, pval->r, ISP32_BLS2_A_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gr, ISP32_BLS2_B_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gb, ISP32_BLS2_C_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->b, ISP32_BLS2_D_FIXED, id);
|
||||
}
|
||||
isp3_param_write(params_vdev, value, ISP3X_BLS_CTRL, id);
|
||||
|
||||
value = arg->in_overexposure_threshold << 16 |
|
||||
|
||||
Reference in New Issue
Block a user