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

Commit f96152a1 authored by Jayant Shekhar's avatar Jayant Shekhar
Browse files

msm: mdss: Don't schedule pp done work during on going commit



Function mdss_mdp_ctl_perf_get_transaction_status tracks mdp
status whether a commit is currently in progress. If it is
then we don't schedule the work queue, otherwise schedule it.
Cases where work queue is not scheduled, waitforpp takes care
of notify frame done. In case of last frame update, work
queue takes care of notify frame done.

Change-Id: I98c9af4ec412f06d48e0ae57e5973bf34be9110d
Signed-off-by: default avatarJayant Shekhar <jshekhar@codeaurora.org>
parent 6c644c0f
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -879,6 +879,7 @@ void mdss_mdp_ctl_notifier_register(struct mdss_mdp_ctl *ctl,
	struct notifier_block *notifier);
void mdss_mdp_ctl_notifier_unregister(struct mdss_mdp_ctl *ctl,
	struct notifier_block *notifier);
u32 mdss_mdp_ctl_perf_get_transaction_status(struct mdss_mdp_ctl *ctl);

int mdss_mdp_scan_pipes(void);

+4 −1
Original line number Diff line number Diff line
@@ -363,6 +363,7 @@ static void mdss_mdp_cmd_pingpong_done(void *arg)
	struct mdss_mdp_cmd_ctx *ctx = ctl->priv_data;
	struct mdss_mdp_vsync_handler *tmp;
	ktime_t vsync_time;
	u32 status;

	if (!ctx) {
		pr_err("%s: invalid ctx\n", __func__);
@@ -390,6 +391,8 @@ static void mdss_mdp_cmd_pingpong_done(void *arg)
			       atomic_read(&ctx->koff_cnt));
		if (mdss_mdp_cmd_do_notifier(ctx)) {
			atomic_inc(&ctx->pp_done_cnt);
			status = mdss_mdp_ctl_perf_get_transaction_status(ctl);
			if (status == 0)
				schedule_work(&ctx->pp_done_work);
		}
		wake_up_all(&ctx->pp_waitq);