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

Commit c72544e4 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: mdss: Move PP reg bus vote to reg bus voting framework"

parents 34d919ac bc9c6c93
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -314,6 +314,7 @@ struct mdss_data_type {
	struct list_head reg_bus_clist;
	struct mutex reg_bus_lock;
	struct reg_bus_client *reg_bus_clt;
	struct reg_bus_client *pp_reg_bus_clt;

	u32 axi_port_cnt;
	u32 nrt_axi_port_cnt;
+21 −13
Original line number Diff line number Diff line
@@ -1960,13 +1960,12 @@ error:
int mdss_mdp_pp_setup_locked(struct mdss_mdp_ctl *ctl)
{
	struct mdss_data_type *mdata = ctl->mdata;
	int ret = 0;
	int ret = 0, i;
	u32 flags, pa_v2_flags;
	u32 max_bw_needed;
	u32 mixer_cnt;
	u32 mixer_id[MDSS_MDP_INTF_MAX_LAYERMIXER];
	u32 disp_num;
	int i, req = -1;
	bool valid_mixers = true;
	bool valid_ad_panel = true;
	if ((!ctl) || (!ctl->mfd) || (!mdss_pp_res) || (!mdata))
@@ -2009,7 +2008,6 @@ int mdss_mdp_pp_setup_locked(struct mdss_mdp_ctl *ctl)
	else
		pa_v2_flags =
			mdss_pp_res->pa_v2_disp_cfg[disp_num].pa_v2_data.flags;

	/*
	 * If a LUT based PP feature needs to be reprogrammed during resume,
	 * increase the register bus bandwidth to maximum frequency
@@ -2018,11 +2016,11 @@ int mdss_mdp_pp_setup_locked(struct mdss_mdp_ctl *ctl)
	max_bw_needed = (IS_PP_RESUME_COMMIT(flags) &&
				(IS_PP_LUT_DIRTY(flags) ||
				IS_SIX_ZONE_DIRTY(flags, pa_v2_flags)));
	if (mdata->reg_bus_hdl && max_bw_needed) {
		req = msm_bus_scale_client_update_request(mdata->reg_bus_hdl,
				REG_CLK_CFG_HIGH);
		if (req)
			pr_err("Updated reg_bus_scale failed, ret = %d", req);
	if (mdata->pp_reg_bus_clt && max_bw_needed) {
		ret = mdss_update_reg_bus_vote(mdata->pp_reg_bus_clt,
				VOTE_INDEX_80_MHZ);
		if (ret)
			pr_err("Updated reg_bus_scale failed, ret = %d", ret);
	}

	if (ctl->mixer_left) {
@@ -2040,11 +2038,11 @@ int mdss_mdp_pp_setup_locked(struct mdss_mdp_ctl *ctl)
			mdata->ad_cfgs[disp_num].reg_sts = 0;
	}

	if (mdata->reg_bus_hdl && max_bw_needed) {
		req = msm_bus_scale_client_update_request(mdata->reg_bus_hdl,
				REG_CLK_CFG_OFF);
		if (req)
			pr_err("Updated reg_bus_scale failed, ret = %d", req);
	if (mdata->pp_reg_bus_clt && max_bw_needed) {
		ret = mdss_update_reg_bus_vote(mdata->pp_reg_bus_clt,
				VOTE_INDEX_DISABLE);
		if (ret)
			pr_err("Updated reg_bus_scale failed, ret = %d", ret);
	}
	if (IS_PP_RESUME_COMMIT(flags))
		mdss_pp_res->pp_disp_flags[disp_num] &=
@@ -2303,6 +2301,11 @@ int mdss_mdp_pp_init(struct device *dev)
	if (!mdata)
		return -EPERM;


	mdata->pp_reg_bus_clt = mdss_reg_bus_vote_client_create("pp\0");
	if (IS_ERR_OR_NULL(mdata->pp_reg_bus_clt))
		pr_err("bus client register failed\n");

	mutex_lock(&mdss_pp_mutex);
	if (!mdss_pp_res) {
		mdss_pp_res = devm_kzalloc(dev, sizeof(*mdss_pp_res),
@@ -2399,6 +2402,8 @@ pp_exit:

void mdss_mdp_pp_term(struct device *dev)
{
	struct mdss_data_type *mdata = mdss_mdp_get_mdata();

	if (mdss_pp_res) {
		mutex_lock(&mdss_pp_mutex);
		devm_kfree(dev, mdss_pp_res->dspp_hist);
@@ -2406,6 +2411,9 @@ void mdss_mdp_pp_term(struct device *dev)
		mdss_pp_res = NULL;
		mutex_unlock(&mdss_pp_mutex);
	}

	mdss_reg_bus_vote_client_destroy(mdata->pp_reg_bus_clt);
	mdata->pp_reg_bus_clt = NULL;
}

int mdss_mdp_pp_overlay_init(struct msm_fb_data_type *mfd)