mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 19:08:57 +09:00
media: rockchip: isp: config bls1 and bls2 black level
ob offset not equal to zero will auto enable bls1 and bls2 Change-Id: I1b0099ca1047eb05b12d8bb745646e322e093e90 Signed-off-by: Cai YiWei <cyw@rock-chips.com>
This commit is contained in:
@@ -326,36 +326,34 @@ isp_bls_config(struct rkisp_isp_params_vdev *params_vdev,
|
||||
new_control &= (ISP_BLS_ENA | ISP32_BLS_BLS2_EN);
|
||||
|
||||
pval = &arg->bls1_val;
|
||||
if (arg->bls1_en) {
|
||||
if (arg->bls1_en)
|
||||
new_control |= ISP_BLS_BLS1_EN;
|
||||
|
||||
switch (params_vdev->raw_type) {
|
||||
case RAW_BGGR:
|
||||
isp3_param_write(params_vdev, pval->r, ISP3X_BLS1_D_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gr, ISP3X_BLS1_C_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gb, ISP3X_BLS1_B_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->b, ISP3X_BLS1_A_FIXED, id);
|
||||
break;
|
||||
case RAW_GBRG:
|
||||
isp3_param_write(params_vdev, pval->r, ISP3X_BLS1_C_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gr, ISP3X_BLS1_D_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gb, ISP3X_BLS1_A_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->b, ISP3X_BLS1_B_FIXED, id);
|
||||
break;
|
||||
case RAW_GRBG:
|
||||
isp3_param_write(params_vdev, pval->r, ISP3X_BLS1_B_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gr, ISP3X_BLS1_A_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gb, ISP3X_BLS1_D_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->b, ISP3X_BLS1_C_FIXED, id);
|
||||
break;
|
||||
case RAW_RGGB:
|
||||
default:
|
||||
isp3_param_write(params_vdev, pval->r, ISP3X_BLS1_A_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gr, ISP3X_BLS1_B_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gb, ISP3X_BLS1_C_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->b, ISP3X_BLS1_D_FIXED, id);
|
||||
break;
|
||||
}
|
||||
switch (params_vdev->raw_type) {
|
||||
case RAW_BGGR:
|
||||
isp3_param_write(params_vdev, pval->r, ISP3X_BLS1_D_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gr, ISP3X_BLS1_C_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gb, ISP3X_BLS1_B_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->b, ISP3X_BLS1_A_FIXED, id);
|
||||
break;
|
||||
case RAW_GBRG:
|
||||
isp3_param_write(params_vdev, pval->r, ISP3X_BLS1_C_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gr, ISP3X_BLS1_D_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gb, ISP3X_BLS1_A_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->b, ISP3X_BLS1_B_FIXED, id);
|
||||
break;
|
||||
case RAW_GRBG:
|
||||
isp3_param_write(params_vdev, pval->r, ISP3X_BLS1_B_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gr, ISP3X_BLS1_A_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gb, ISP3X_BLS1_D_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->b, ISP3X_BLS1_C_FIXED, id);
|
||||
break;
|
||||
case RAW_RGGB:
|
||||
default:
|
||||
isp3_param_write(params_vdev, pval->r, ISP3X_BLS1_A_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gr, ISP3X_BLS1_B_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gb, ISP3X_BLS1_C_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->b, ISP3X_BLS1_D_FIXED, id);
|
||||
break;
|
||||
}
|
||||
|
||||
/* fixed subtraction values */
|
||||
@@ -1599,34 +1597,33 @@ isp_rawawb_config(struct rkisp_isp_params_vdev *params_vdev,
|
||||
|
||||
value = isp3_param_read(params_vdev, ISP3X_BLS_CTRL, id);
|
||||
value &= ~ISP32_BLS_BLS2_EN;
|
||||
if (arg->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);
|
||||
}
|
||||
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);
|
||||
|
||||
|
||||
@@ -312,36 +312,34 @@ isp_bls_config(struct rkisp_isp_params_vdev *params_vdev,
|
||||
new_control &= (ISP_BLS_ENA | ISP32_BLS_BLS2_EN);
|
||||
|
||||
pval = &arg->bls1_val;
|
||||
if (arg->bls1_en) {
|
||||
if (arg->bls1_en)
|
||||
new_control |= ISP_BLS_BLS1_EN;
|
||||
|
||||
switch (params_vdev->raw_type) {
|
||||
case RAW_BGGR:
|
||||
isp3_param_write(params_vdev, pval->r, ISP3X_BLS1_D_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gr, ISP3X_BLS1_C_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gb, ISP3X_BLS1_B_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->b, ISP3X_BLS1_A_FIXED, id);
|
||||
break;
|
||||
case RAW_GBRG:
|
||||
isp3_param_write(params_vdev, pval->r, ISP3X_BLS1_C_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gr, ISP3X_BLS1_D_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gb, ISP3X_BLS1_A_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->b, ISP3X_BLS1_B_FIXED, id);
|
||||
break;
|
||||
case RAW_GRBG:
|
||||
isp3_param_write(params_vdev, pval->r, ISP3X_BLS1_B_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gr, ISP3X_BLS1_A_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gb, ISP3X_BLS1_D_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->b, ISP3X_BLS1_C_FIXED, id);
|
||||
break;
|
||||
case RAW_RGGB:
|
||||
default:
|
||||
isp3_param_write(params_vdev, pval->r, ISP3X_BLS1_A_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gr, ISP3X_BLS1_B_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gb, ISP3X_BLS1_C_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->b, ISP3X_BLS1_D_FIXED, id);
|
||||
break;
|
||||
}
|
||||
switch (params_vdev->raw_type) {
|
||||
case RAW_BGGR:
|
||||
isp3_param_write(params_vdev, pval->r, ISP3X_BLS1_D_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gr, ISP3X_BLS1_C_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gb, ISP3X_BLS1_B_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->b, ISP3X_BLS1_A_FIXED, id);
|
||||
break;
|
||||
case RAW_GBRG:
|
||||
isp3_param_write(params_vdev, pval->r, ISP3X_BLS1_C_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gr, ISP3X_BLS1_D_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gb, ISP3X_BLS1_A_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->b, ISP3X_BLS1_B_FIXED, id);
|
||||
break;
|
||||
case RAW_GRBG:
|
||||
isp3_param_write(params_vdev, pval->r, ISP3X_BLS1_B_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gr, ISP3X_BLS1_A_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gb, ISP3X_BLS1_D_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->b, ISP3X_BLS1_C_FIXED, id);
|
||||
break;
|
||||
case RAW_RGGB:
|
||||
default:
|
||||
isp3_param_write(params_vdev, pval->r, ISP3X_BLS1_A_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gr, ISP3X_BLS1_B_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->gb, ISP3X_BLS1_C_FIXED, id);
|
||||
isp3_param_write(params_vdev, pval->b, ISP3X_BLS1_D_FIXED, id);
|
||||
break;
|
||||
}
|
||||
|
||||
/* fixed subtraction values */
|
||||
@@ -1284,34 +1282,33 @@ isp_rawawb_config(struct rkisp_isp_params_vdev *params_vdev,
|
||||
|
||||
value = isp3_param_read(params_vdev, ISP3X_BLS_CTRL, id);
|
||||
value &= ~ISP32_BLS_BLS2_EN;
|
||||
if (arg->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);
|
||||
}
|
||||
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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user