summaryrefslogtreecommitdiff
path: root/drivers/video/fbdev
diff options
context:
space:
mode:
authorJayant Shekhar <jshekhar@codeaurora.org>2014-11-20 12:40:32 +0530
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 20:36:25 -0700
commitd742011534d5e39282982e7d448d9e2e948ef621 (patch)
tree3ca8340868fc69e35ec2ab7f3d0161d901e1231d /drivers/video/fbdev
parent0cc38ec27bf8664ba9558b25890c499233da661f (diff)
msm: mdss: Schedule pp_done_work only for last frame update
Currently notify frame is done in wait4pingpong, and there may not be a real need for the pp_done_work workqueue. But we still keep it because to trigger the notification once the last frame sent to display is actually transferred. So, cancel the workqueue if singalling is already done within the wait4pp but keep the work queue for the idle cases. This can avoid unnecessary CPU scheduling in a lot of cases. Change-Id: I2099f18e48502fe7d0eac337f04d8e3f4711c2f2 Signed-off-by: Jayant Shekhar <jshekhar@codeaurora.org>
Diffstat (limited to 'drivers/video/fbdev')
-rw-r--r--drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c b/drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c
index 45a9c9e6bac9..2ce4ed678870 100644
--- a/drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c
+++ b/drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c
@@ -627,6 +627,8 @@ static int mdss_mdp_cmd_wait4pingpong(struct mdss_mdp_ctl *ctl, void *arg)
ctx->pp_timeout_report_cnt = 0;
}
+ cancel_work_sync(&ctx->pp_done_work);
+
/* signal any pending ping pong done events */
while (atomic_add_unless(&ctx->pp_done_cnt, -1, 0))
mdss_mdp_ctl_notify(ctx->ctl, MDP_NOTIFY_FRAME_DONE);