static int mdss_mdp_rotator_kickoff(struct mdss_mdp_ctl *ctl, struct mdss_mdp_rotator_session *rot, struct mdss_mdp_data *dst_data) { int ret; struct mdss_mdp_writeback_arg wb_args = { .data = dst_data, .priv_data = rot, }; mutex_lock(&rot->lock); rot->busy = true; #ifdef CONFIG_HUAWEI_LCD /* on first kickoff, change vbif settings */ if (!count) { writel_relaxed(0x08010808, mdss_res->vbif_base + 0xB0); writel_relaxed(0x02101010, mdss_res->vbif_base + 0xC0); count++; } #endif ret = mdss_mdp_writeback_display_commit(ctl, &wb_args); if (ret) { rot->busy = false; pr_err("problem with kickoff rot pipe=%d", rot->pipe->num); } mutex_unlock(&rot->lock); return ret; }
static int mdss_mdp_rotator_kickoff(struct mdss_mdp_ctl *ctl, struct mdss_mdp_rotator_session *rot, struct mdss_mdp_data *dst_data) { int ret; struct mdss_mdp_writeback_arg wb_args = { .data = dst_data, .priv_data = rot, }; mutex_lock(&rot->lock); rot->busy = true; ret = mdss_mdp_writeback_display_commit(ctl, &wb_args); if (ret) { rot->busy = false; pr_err("problem with kickoff rot pipe=%d", rot->pipe->num); } mutex_unlock(&rot->lock); return ret; }