mdss: mdp: wait for pingpong done for second control

In the current implementation, we are waiting for ping pong
interrupt only for the first control. There is a possibility
that the second control takes more time than the first. As the
commit call is asynchronous next kickoff could get triggered.
This causes dsi fifo to underflow and eventually pingpong timeout
are observed.

This change fixes the issue by waiting for second control's
pingpong done interrupt, to ensure that the tx to dsi
controller is complete before the next commit is triggered.

Change-Id: Ie8caf36744b3f5860962ad30d19d61d0a6de2763
Signed-off-by: Jeevan Shriram <jshriram@codeaurora.org>
This commit is contained in:
Jeevan Shriram 2014-06-24 17:42:19 -07:00 committed by David Keitel
parent 1f4617c257
commit 314a19ad92

View file

@ -593,8 +593,7 @@ static void mdss_mdp_cmd_set_sync_ctx(
ctx = (struct mdss_mdp_cmd_ctx *)ctl->priv_data;
if (!ctl->panel_data->panel_info.partial_update_enabled || !sctl) {
/* not partial or right only at partial update */
if (!sctl) {
ctx->sync_ctx = NULL;
return;
}
@ -663,10 +662,8 @@ int mdss_mdp_cmd_kickoff(struct mdss_mdp_ctl *ctl, void *arg)
return -ENODEV;
}
if (ctl->panel_data->panel_info.partial_update_enabled) {
/* sctl will be null for right only */
sctl = mdss_mdp_get_split_ctl(ctl);
}
/* sctl will be null for right only in the case of Partial update */
sctl = mdss_mdp_get_split_ctl(ctl);
if (sctl && (sctl->roi.w == 0 || sctl->roi.h == 0)) {
/* left update only */