From 7c1a00bcd300dc6c9284eae3b5445cd0fa97e985 Mon Sep 17 00:00:00 2001 From: Dhaval Patel Date: Mon, 21 Dec 2015 15:31:12 -0800 Subject: [PATCH] msm: mdss: remove clk off scheduling when commit pending There can be race condition possible between Early touch event thread and kickoff thread. For ex: -> Eary touch event: Turns on clock and schedule the off after 4 vsync cycle. -> Kickoff thread: Leaves the clock on -> Second touch event: Reschedule the clock off workque The second touch event call scheduling the clock off after 4 vsync cycle. On loaded system, kickoff thread might get intruppted and get chance to rerun after 4 vysnc cycle. The clocks will be turned off for such use cases before PP done ISR. Change-Id: I85923146645379be1e3ccc578fc795306cd987ad Signed-off-by: Dhaval Patel --- drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c b/drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c index 1c3fcba9d0f8..05a497951407 100644 --- a/drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c +++ b/drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c @@ -861,8 +861,11 @@ int mdss_mdp_resource_control(struct mdss_mdp_ctl *ctl, u32 sw_event) * 1. Early wakeup cancelled the gate work. * 2. Early wakeup cancelled the off work. * 3. Early wakeup changed the state to ON. + * + * Driver will not allow off work under one condition: + * 1. Kickoff is pending. */ - if (schedule_off) { + if (schedule_off && !ctl->mfd->validate_pending) { /* * Schedule off work after cmd mode idle timeout is * reached. This is to prevent the case where early wake