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

Commit a5312f6f authored by Aravind Venkateswaran's avatar Aravind Venkateswaran
Browse files

msm: mdss: mdp: fix handling of GDSC off notifier



In the current implementation, MDP driver registers for MDSS
GDSC notifier and attempts to halt any active VBIF transactions
whenever the MDSS GDSC is turned off. This results in a call to
the bus driver to remove any active bus bandwidth vote. However,
it is possible that notifier call could be a result MDSS GDSC
being turned off by the bus driver during probe time and calling
back in to the bus driver can result in a deadlock. Avoid this
by handling GDSC off notifier only if there are any active
overlay sessions.

Change-Id: Id53a790cf67b201a4207f85604cb3472275d418a
Signed-off-by: default avatarAravind Venkateswaran <aravindh@codeaurora.org>
parent aa958278
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -1638,8 +1638,15 @@ static int mdss_mdp_gdsc_notifier_call(struct notifier_block *self,
	if (event & REGULATOR_EVENT_ENABLE) {
		__mdss_restore_sec_cfg(mdata);
	} else if (event & REGULATOR_EVENT_PRE_DISABLE) {
		pr_debug("mdss gdsc is getting disabled\n");
		/* halt the vbif transactions */
		int active_cnt = atomic_read(&mdata->active_intf_cnt);

		pr_debug("mdss gdsc is getting disabled, active_cnt=%d\n",
			active_cnt);
		/*
		 * halt the vbif transactions only if we have any active
		 * overlay session
		 */
		if (active_cnt)
			mdss_mdp_vbif_axi_halt(mdata);
	}