media: rockchip: isp: update gic and check params for isp39
Change-Id: I623d2f9474d744d576f919547778962891b08fa4 Signed-off-by: Cai YiWei <cyw@rock-chips.com>
This commit is contained in:
parent
6128a96972
commit
d0797df513
4 changed files with 68 additions and 10 deletions
|
|
@ -1036,6 +1036,10 @@ isp_rawaf_config(struct rkisp_isp_params_vdev *params_vdev,
|
|||
var = ISP_PACK_2SHORT(arg->v_fv_limit, arg->v_fv_slope);
|
||||
isp3_param_write(params_vdev, var, ISP32L_RAWAF_CORING_V, id);
|
||||
|
||||
if (!arg->hiir_en || !arg->viir_en || !arg->aehgl_en)
|
||||
dev_err(params_vdev->dev->dev,
|
||||
"af hiir:%d viir:%d aehgl:%d no enable together\n",
|
||||
arg->hiir_en, arg->viir_en, arg->aehgl_en);
|
||||
viir_en = arg->viir_en;
|
||||
gaus_en = arg->gaus_en;
|
||||
|
||||
|
|
@ -2187,13 +2191,18 @@ isp_hdrdrc_config(struct rkisp_isp_params_vdev *params_vdev,
|
|||
const struct isp39_drc_cfg *arg,
|
||||
enum rkisp_params_type type, u32 id)
|
||||
{
|
||||
u32 i, value;
|
||||
u32 i, value, ctrl;
|
||||
|
||||
value = isp3_param_read(params_vdev, ISP3X_DRC_CTRL0, id);
|
||||
value &= ISP39_MODULE_EN;
|
||||
value |= !!arg->raw_dly_dis << 29 | !!arg->gainx32_en << 3 |
|
||||
!!arg->cmps_byp_en << 2 | !!arg->bypass_en << 1;
|
||||
isp3_param_write(params_vdev, value, ISP3X_DRC_CTRL0, id);
|
||||
ctrl = isp3_param_read(params_vdev, ISP3X_DRC_CTRL0, id);
|
||||
ctrl &= ISP39_MODULE_EN;
|
||||
ctrl |= !!arg->gainx32_en << 3 |
|
||||
!!arg->cmps_byp_en << 2 | !!arg->bypass_en << 1;
|
||||
isp3_param_write(params_vdev, ctrl, ISP3X_DRC_CTRL0, id);
|
||||
if (ctrl & BIT(29))
|
||||
dev_warn(params_vdev->dev->dev, "drc raw_dly_dis=1\n");
|
||||
value = isp3_param_read_cache(params_vdev, ISP3X_HDRMGE_CTRL, id);
|
||||
if (ctrl & BIT(2) && (value & ISP39_MODULE_EN))
|
||||
dev_warn(params_vdev->dev->dev, "drc cmps_byp_en=1 but hdr\n");
|
||||
|
||||
if (type == RKISP_PARAMS_IMD)
|
||||
return;
|
||||
|
|
@ -2283,11 +2292,16 @@ isp_hdrdrc_enable(struct rkisp_isp_params_vdev *params_vdev, bool en, u32 id)
|
|||
|
||||
static void
|
||||
isp_gic_config(struct rkisp_isp_params_vdev *params_vdev,
|
||||
const struct isp21_gic_cfg *arg, u32 id)
|
||||
const struct isp39_gic_cfg *arg, u32 id)
|
||||
{
|
||||
u32 value;
|
||||
s32 i;
|
||||
|
||||
value = isp3_param_read(params_vdev, ISP3X_GIC_CONTROL, id);
|
||||
value &= ISP39_MODULE_EN;
|
||||
value |= arg->bypass_en << 1;
|
||||
isp3_param_write(params_vdev, value, ISP3X_GIC_CONTROL, id);
|
||||
|
||||
value = (arg->regmingradthrdark2 & 0x03FF) << 20 |
|
||||
(arg->regmingradthrdark1 & 0x03FF) << 10 |
|
||||
(arg->regminbusythre & 0x03FF);
|
||||
|
|
@ -2333,8 +2347,11 @@ isp_gic_enable(struct rkisp_isp_params_vdev *params_vdev, bool en, u32 id)
|
|||
{
|
||||
u32 value = 0;
|
||||
|
||||
value = isp3_param_read(params_vdev, ISP3X_GIC_CONTROL, id);
|
||||
if (en)
|
||||
value |= ISP39_MODULE_EN;
|
||||
else
|
||||
value &= ~ISP39_MODULE_EN;
|
||||
isp3_param_write(params_vdev, value, ISP3X_GIC_CONTROL, id);
|
||||
}
|
||||
|
||||
|
|
@ -3102,6 +3119,10 @@ isp_bay3d_config(struct rkisp_isp_params_vdev *params_vdev,
|
|||
ctrl |= !!arg->bypass_en << 1 | !!arg->iirsparse_en << 2;
|
||||
isp3_param_write(params_vdev, ctrl, ISP3X_BAY3D_CTRL, id);
|
||||
|
||||
value = isp3_param_read_cache(params_vdev, ISP3X_HDRMGE_CTRL, id);
|
||||
if (arg->transf_bypass_en && (value & ISP39_MODULE_EN))
|
||||
dev_err(params_vdev->dev->dev, "bay3d transf_bypass_en=1 but hdr\n");
|
||||
|
||||
value = !!arg->noisebal_mode << 23 |
|
||||
!!arg->curdbg_out_en << 22 |
|
||||
!!arg->lomdwgt_dbg_en << 21 |
|
||||
|
|
@ -3929,11 +3950,15 @@ void __isp_isr_other_en(struct rkisp_isp_params_vdev *params_vdev,
|
|||
struct rkisp_isp_params_val_v39 *priv_val = params_vdev->priv_val;
|
||||
u64 module_en_update = new_params->module_en_update;
|
||||
u64 module_ens = new_params->module_ens;
|
||||
u64 mask;
|
||||
u32 gain_ctrl, cnr_ctrl, val;
|
||||
|
||||
if (type == RKISP_PARAMS_SHD)
|
||||
return;
|
||||
|
||||
mask = ISP39_MODULE_YNR | ISP39_MODULE_CNR | ISP39_MODULE_SHARP;
|
||||
if ((module_ens & mask) && ((module_ens & mask) != mask))
|
||||
dev_err(params_vdev->dev->dev, "ynr cnr sharp no enable together\n");
|
||||
v4l2_dbg(4, rkisp_debug, ¶ms_vdev->dev->v4l2_dev,
|
||||
"%s id:%d seq:%d module_en_update:0x%llx module_ens:0x%llx\n",
|
||||
__func__, id, new_params->frame_id, module_en_update, module_ens);
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@ struct rkisp_isp_params_ops_v39 {
|
|||
void (*hdrmge_enable)(struct rkisp_isp_params_vdev *params_vdev,
|
||||
bool en, u32 id);
|
||||
void (*gic_config)(struct rkisp_isp_params_vdev *params_vdev,
|
||||
const struct isp21_gic_cfg *arg, u32 id);
|
||||
const struct isp39_gic_cfg *arg, u32 id);
|
||||
void (*gic_enable)(struct rkisp_isp_params_vdev *params_vdev,
|
||||
bool en, u32 id);
|
||||
void (*dhaz_config)(struct rkisp_isp_params_vdev *params_vdev,
|
||||
|
|
|
|||
|
|
@ -380,7 +380,7 @@ void rkisp_stats_first_ddr_config_v39(struct rkisp_isp_stats_vdev *stats_vdev)
|
|||
struct rkisp_pdaf_vdev *pdaf_vdev = &dev->pdaf_vdev;
|
||||
u32 val, size = 0, div = dev->unite_div;
|
||||
|
||||
if (!stats_vdev->streamon || dev->isp_sdev.in_fmt.fmt_type == FMT_YUV)
|
||||
if (dev->isp_sdev.in_fmt.fmt_type == FMT_YUV)
|
||||
return;
|
||||
|
||||
rkisp_get_stat_size_v39(stats_vdev, &size);
|
||||
|
|
|
|||
|
|
@ -177,6 +177,39 @@
|
|||
#define ISP39_BNR2AEBIG_SEL_EN 0x10
|
||||
#define ISP39_BNR2AE0_SEL_EN 0x20
|
||||
|
||||
struct isp39_gic_cfg {
|
||||
/* CONTROL */
|
||||
__u8 bypass_en;
|
||||
/* DIFF_PARA1 */
|
||||
__u16 regmingradthrdark2;
|
||||
__u16 regmingradthrdark1;
|
||||
__u16 regminbusythre;
|
||||
/* DIFF_PARA2 */
|
||||
__u16 regdarkthre;
|
||||
__u16 regmaxcorvboth;
|
||||
__u16 regdarktthrehi;
|
||||
/* DIFF_PARA3 */
|
||||
__u8 regkgrad2dark;
|
||||
__u8 regkgrad1dark;
|
||||
__u8 regstrengthglobal_fix;
|
||||
__u8 regdarkthrestep;
|
||||
__u8 regkgrad2;
|
||||
__u8 regkgrad1;
|
||||
__u8 reggbthre;
|
||||
/* DIFF_PARA4 */
|
||||
__u16 regmaxcorv;
|
||||
__u16 regmingradthr2;
|
||||
__u16 regmingradthr1;
|
||||
/* NOISE_PARA1 */
|
||||
__u8 gr_ratio;
|
||||
__u8 noise_scale;
|
||||
__u16 noise_base;
|
||||
/* NOISE_PARA2 */
|
||||
__u16 diff_clip;
|
||||
/* SIGMA */
|
||||
__u16 sigma_y[ISP39_GIC_SIGMA_Y_NUM];
|
||||
} __attribute__ ((packed));
|
||||
|
||||
struct isp39_dpcc_cfg {
|
||||
/* MODE */
|
||||
__u8 stage1_enable;
|
||||
|
|
@ -1585,7 +1618,7 @@ struct isp39_isp_other_cfg {
|
|||
struct isp39_dpcc_cfg dpcc_cfg;
|
||||
struct isp3x_lsc_cfg lsc_cfg;
|
||||
struct isp32_awb_gain_cfg awb_gain_cfg;
|
||||
struct isp21_gic_cfg gic_cfg;
|
||||
struct isp39_gic_cfg gic_cfg;
|
||||
struct isp39_debayer_cfg debayer_cfg;
|
||||
struct isp39_ccm_cfg ccm_cfg;
|
||||
struct isp3x_gammaout_cfg gammaout_cfg;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue