Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d1e1a81b authored by Carl Vanderlip's avatar Carl Vanderlip
Browse files

msm: mdss: Define number of concurrent Assertive Display HW



Define the maximum number of Assertive Display (AD) hardware blocks per
display.

Change-Id: I458400d361be7c58491d9bc44c30580e5405fb96
Signed-off-by: default avatarCarl Vanderlip <carlv@codeaurora.org>
parent f712724b
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -148,6 +148,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 ion_client *iclient;
+5 −0
Original line number Diff line number Diff line
@@ -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");

@@ -2011,9 +2014,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");

+6 −5
Original line number Diff line number Diff line
@@ -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];
@@ -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);
@@ -3343,7 +3344,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];
@@ -3369,8 +3369,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;
	}