static int mdss_mdp_rotator_busy_wait(struct mdss_mdp_rotator_session *rot) { mutex_lock(&rot->lock); if (!rot->pipe || !rot->pipe->mixer || !rot->pipe->mixer->ctl) { mutex_unlock(&rot->lock); return -ENODEV; } if (rot->busy) { struct mdss_mdp_ctl *ctl = rot->pipe->mixer->ctl; mdss_mdp_display_wait4comp(ctl); rot->busy = false; if (ctl->shared_lock) mutex_unlock(ctl->shared_lock); } mutex_unlock(&rot->lock); return 0; }
static int mdss_mdp_rotator_busy_wait(struct mdss_mdp_rotator_session *rot) { struct mdss_mdp_pipe *rot_pipe = NULL; struct mdss_mdp_ctl *ctl = NULL; rot_pipe = rot->pipe; if (!rot_pipe) return -ENODEV; ctl = rot_pipe->mixer->ctl; mutex_lock(&rot->lock); if (rot->busy) { pr_debug("waiting for rot=%d to complete\n", rot->pipe->num); mdss_mdp_display_wait4comp(ctl); rot->busy = false; } mutex_unlock(&rot->lock); return 0; }
static int mdss_mdp_rotator_busy_wait(struct mdss_mdp_rotator_session *rot) { struct mdss_mdp_pipe *rot_pipe = NULL; struct mdss_mdp_ctl *ctl = NULL; rot_pipe = rot->pipe; if (!rot_pipe) return -ENODEV; ctl = rot_pipe->mixer->ctl; mutex_lock(&rot->lock); if (rot->busy) { mdss_mdp_display_wait4comp(ctl); rot->busy = false; if (ctl->shared_lock) mutex_unlock(ctl->shared_lock); } mdss_mdp_smp_release(rot->pipe); mutex_unlock(&rot->lock); return 0; }