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

Commit 96b072e9 authored by Ujwal Patel's avatar Ujwal Patel
Browse files

msm: mdss: fix asynchronous rotation of layer bigger than line buffer



If MDSS HW has more than 2 rotators and if the layer width is greater
than line buffer width then layer is divided into two and each half
can be rotated independently and asynchronously. Current implementation
sets up the configuration of both halves independently but the rotation
of second half is triggered only after first half is finished. Fix this
issue by making writeback_kickoff unblocking call and wait for the
rotation completion after all the rotations in the current session are
queued.

Change-Id: I90ff7feab7979037e596a3b8d8c9e6c138574e94
Signed-off-by: default avatarUjwal Patel <ujwalp@codeaurora.org>
parent 47d53bf2
Loading
Loading
Loading
Loading
+1 −8
Original line number Original line Diff line number Diff line
@@ -575,8 +575,6 @@ int mdss_mdp_writeback_start(struct mdss_mdp_ctl *ctl)


int mdss_mdp_writeback_display_commit(struct mdss_mdp_ctl *ctl, void *arg)
int mdss_mdp_writeback_display_commit(struct mdss_mdp_ctl *ctl, void *arg)
{
{
	int ret = 0;

	if (ctl->shared_lock && !mutex_is_locked(ctl->shared_lock)) {
	if (ctl->shared_lock && !mutex_is_locked(ctl->shared_lock)) {
		pr_err("shared mutex is not locked before commit on ctl=%d\n",
		pr_err("shared mutex is not locked before commit on ctl=%d\n",
			ctl->num);
			ctl->num);
@@ -590,10 +588,5 @@ int mdss_mdp_writeback_display_commit(struct mdss_mdp_ctl *ctl, void *arg)
			ctl->mixer_right->params_changed++;
			ctl->mixer_right->params_changed++;
	}
	}


	ret = mdss_mdp_display_commit(ctl, arg);
	return mdss_mdp_display_commit(ctl, arg);

	if (!IS_ERR_VALUE(ret))
		mdss_mdp_display_wait4comp(ctl);

	return ret;
}
}
+1 −0
Original line number Original line Diff line number Diff line
@@ -642,6 +642,7 @@ int mdss_mdp_wb_kickoff(struct msm_fb_data_type *mfd)
		pr_err("error on commit ctl=%d\n", ctl->num);
		pr_err("error on commit ctl=%d\n", ctl->num);
		goto kickoff_fail;
		goto kickoff_fail;
	}
	}
	mdss_mdp_display_wait4comp(ctl);


	if (wb && node) {
	if (wb && node) {
		mutex_lock(&wb->lock);
		mutex_lock(&wb->lock);