From b175fe17bcb5d67750770da9220e2fedc3a8c093 Mon Sep 17 00:00:00 2001 From: Cai YiWei Date: Wed, 30 Apr 2025 10:50:28 +0800 Subject: [PATCH] media: rockchip: isp: fix bls2/bls3 Change-Id: I6729034bc03ce6ab27771af77d4dae4a7abc0314 Signed-off-by: Cai YiWei --- .../platform/rockchip/isp/isp_params_v32.c | 32 ++-------- .../platform/rockchip/isp/isp_params_v33.c | 31 ++------- .../platform/rockchip/isp/isp_params_v35.c | 64 ++++--------------- .../platform/rockchip/isp/isp_params_v39.c | 32 ++-------- 4 files changed, 29 insertions(+), 130 deletions(-) diff --git a/drivers/media/platform/rockchip/isp/isp_params_v32.c b/drivers/media/platform/rockchip/isp/isp_params_v32.c index 1237ae27cfa4..2dff0a748a4a 100644 --- a/drivers/media/platform/rockchip/isp/isp_params_v32.c +++ b/drivers/media/platform/rockchip/isp/isp_params_v32.c @@ -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 | diff --git a/drivers/media/platform/rockchip/isp/isp_params_v33.c b/drivers/media/platform/rockchip/isp/isp_params_v33.c index 2560fe4b3cf9..22a8aa6a32c2 100644 --- a/drivers/media/platform/rockchip/isp/isp_params_v33.c +++ b/drivers/media/platform/rockchip/isp/isp_params_v33.c @@ -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 | diff --git a/drivers/media/platform/rockchip/isp/isp_params_v35.c b/drivers/media/platform/rockchip/isp/isp_params_v35.c index be6146f11c62..cd9632c08490 100644 --- a/drivers/media/platform/rockchip/isp/isp_params_v35.c +++ b/drivers/media/platform/rockchip/isp/isp_params_v35.c @@ -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) diff --git a/drivers/media/platform/rockchip/isp/isp_params_v39.c b/drivers/media/platform/rockchip/isp/isp_params_v39.c index c61316a4cbe8..df1451472d63 100644 --- a/drivers/media/platform/rockchip/isp/isp_params_v39.c +++ b/drivers/media/platform/rockchip/isp/isp_params_v39.c @@ -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 |