Loading drivers/video/msm/mdss/mdss.h +1 −0 Original line number Diff line number Diff line Loading @@ -161,6 +161,7 @@ struct mdss_data_type { struct mdss_mdp_ad *ad_off; struct mdss_ad_info *ad_cfgs; u32 nad_cfgs; u32 nmax_concurrent_ad_hw; struct workqueue_struct *ad_calc_wq; struct mdss_intr hist_intr; Loading drivers/video/msm/mdss/mdss_mdp.c +5 −0 Original line number Diff line number Diff line Loading @@ -986,6 +986,9 @@ int mdss_hw_init(struct mdss_data_type *mdata) /* swap */ writel_relaxed(1, offset + 16); } mdata->nmax_concurrent_ad_hw = (mdata->mdp_rev <= MDSS_MDP_HW_REV_102) ? 1 : 2; mdss_mdp_clk_ctrl(MDP_BLOCK_POWER_OFF, false); pr_debug("MDP hw init done\n"); Loading Loading @@ -2016,9 +2019,11 @@ static int mdss_mdp_parse_dt_ad_cfg(struct platform_device *pdev) mdata->ad_cfgs = NULL; return 0; } if (mdata->nad_cfgs > mdata->nmixers_intf) return -EINVAL; mdata->has_wb_ad = of_property_read_bool(pdev->dev.of_node, "qcom,mdss-has-wb-ad"); Loading drivers/video/msm/mdss/mdss_mdp_pp.c +6 −5 Original line number Diff line number Diff line Loading @@ -1429,7 +1429,8 @@ static int pp_dspp_setup(u32 disp_num, struct mdss_mdp_mixer *mixer) flags = 0; mixer_cnt = mdss_mdp_get_ctl_mixers(disp_num, mixer_id); if (dspp_num < mdata->nad_cfgs && (mixer_cnt != 2)) { if (dspp_num < mdata->nad_cfgs && (mixer_cnt <= mdata->nmax_concurrent_ad_hw)) { ad = &mdata->ad_cfgs[disp_num]; ad_flags = ad->reg_sts; ad_hw = &mdata->ad_off[dspp_num]; Loading Loading @@ -1572,7 +1573,7 @@ int mdss_mdp_pp_setup_locked(struct mdss_mdp_ctl *ctl) if (mixer_id[i] > mdata->nad_cfgs) valid_mixers = false; } if (valid_mixers && (mixer_cnt != 2)) { if (valid_mixers && (mixer_cnt <= mdata->nmax_concurrent_ad_hw)) { ret = mdss_mdp_ad_setup(ctl->mfd); if (ret < 0) pr_warn("ad_setup(disp%d) returns %d", disp_num, ret); Loading Loading @@ -3493,7 +3494,6 @@ static struct msm_fb_data_type *mdss_get_mfd_from_index(int index) return out; } #define MDSS_AD_MAX_MIXERS 1 static int mdss_ad_init_checks(struct msm_fb_data_type *mfd) { u32 mixer_id[MDSS_MDP_INTF_MAX_LAYERMIXER]; Loading @@ -3519,8 +3519,9 @@ static int mdss_ad_init_checks(struct msm_fb_data_type *mfd) pr_debug("no mixers connected, %d", mixer_num); return -EHOSTDOWN; } if (mixer_num > MDSS_AD_MAX_MIXERS) { pr_debug("too many mixers, not supported, %d", mixer_num); if (mixer_num > mdata->nmax_concurrent_ad_hw) { pr_debug("too many mixers, not supported, %d > %d", mixer_num, mdata->nmax_concurrent_ad_hw); return ret; } Loading Loading
drivers/video/msm/mdss/mdss.h +1 −0 Original line number Diff line number Diff line Loading @@ -161,6 +161,7 @@ struct mdss_data_type { struct mdss_mdp_ad *ad_off; struct mdss_ad_info *ad_cfgs; u32 nad_cfgs; u32 nmax_concurrent_ad_hw; struct workqueue_struct *ad_calc_wq; struct mdss_intr hist_intr; Loading
drivers/video/msm/mdss/mdss_mdp.c +5 −0 Original line number Diff line number Diff line Loading @@ -986,6 +986,9 @@ int mdss_hw_init(struct mdss_data_type *mdata) /* swap */ writel_relaxed(1, offset + 16); } mdata->nmax_concurrent_ad_hw = (mdata->mdp_rev <= MDSS_MDP_HW_REV_102) ? 1 : 2; mdss_mdp_clk_ctrl(MDP_BLOCK_POWER_OFF, false); pr_debug("MDP hw init done\n"); Loading Loading @@ -2016,9 +2019,11 @@ static int mdss_mdp_parse_dt_ad_cfg(struct platform_device *pdev) mdata->ad_cfgs = NULL; return 0; } if (mdata->nad_cfgs > mdata->nmixers_intf) return -EINVAL; mdata->has_wb_ad = of_property_read_bool(pdev->dev.of_node, "qcom,mdss-has-wb-ad"); Loading
drivers/video/msm/mdss/mdss_mdp_pp.c +6 −5 Original line number Diff line number Diff line Loading @@ -1429,7 +1429,8 @@ static int pp_dspp_setup(u32 disp_num, struct mdss_mdp_mixer *mixer) flags = 0; mixer_cnt = mdss_mdp_get_ctl_mixers(disp_num, mixer_id); if (dspp_num < mdata->nad_cfgs && (mixer_cnt != 2)) { if (dspp_num < mdata->nad_cfgs && (mixer_cnt <= mdata->nmax_concurrent_ad_hw)) { ad = &mdata->ad_cfgs[disp_num]; ad_flags = ad->reg_sts; ad_hw = &mdata->ad_off[dspp_num]; Loading Loading @@ -1572,7 +1573,7 @@ int mdss_mdp_pp_setup_locked(struct mdss_mdp_ctl *ctl) if (mixer_id[i] > mdata->nad_cfgs) valid_mixers = false; } if (valid_mixers && (mixer_cnt != 2)) { if (valid_mixers && (mixer_cnt <= mdata->nmax_concurrent_ad_hw)) { ret = mdss_mdp_ad_setup(ctl->mfd); if (ret < 0) pr_warn("ad_setup(disp%d) returns %d", disp_num, ret); Loading Loading @@ -3493,7 +3494,6 @@ static struct msm_fb_data_type *mdss_get_mfd_from_index(int index) return out; } #define MDSS_AD_MAX_MIXERS 1 static int mdss_ad_init_checks(struct msm_fb_data_type *mfd) { u32 mixer_id[MDSS_MDP_INTF_MAX_LAYERMIXER]; Loading @@ -3519,8 +3519,9 @@ static int mdss_ad_init_checks(struct msm_fb_data_type *mfd) pr_debug("no mixers connected, %d", mixer_num); return -EHOSTDOWN; } if (mixer_num > MDSS_AD_MAX_MIXERS) { pr_debug("too many mixers, not supported, %d", mixer_num); if (mixer_num > mdata->nmax_concurrent_ad_hw) { pr_debug("too many mixers, not supported, %d > %d", mixer_num, mdata->nmax_concurrent_ad_hw); return ret; } Loading