void mdp4_dsi_cmd_overlay(struct msm_fb_data_type *mfd) { mutex_lock(&mfd->dma->ov_mutex); if (mfd && mfd->panel_power_on) { mdp4_dsi_cmd_dma_busy_wait(mfd); if (dsi_pipe && dsi_pipe->blt_addr) mdp4_dsi_blt_dmap_busy_wait(mfd); mdp4_overlay_update_dsi_cmd(mfd); mdp4_dsi_cmd_kickoff_ui(mfd, dsi_pipe); mdp4_stat.kickoff_dsi++; /* signal if pan function is waiting for the update completion */ if (mfd->pan_waiting) { mfd->pan_waiting = FALSE; complete(&mfd->pan_comp); } } mdp4_overlay_resource_release(); mutex_unlock(&mfd->dma->ov_mutex); }
void mdp4_dsi_cmd_overlay(struct msm_fb_data_type *mfd) { if(dsi_pipe && dsi_pipe->is_3d) { mdp4_overlay_handle_padding(mfd, true); } mutex_lock(&mfd->dma->ov_mutex); if (mfd && mfd->panel_power_on) { mdp4_dsi_cmd_dma_busy_wait(mfd, dsi_pipe); if (dsi_pipe && dsi_pipe->blt_addr) mdp4_dsi_blt_dmap_busy_wait(mfd); mdp4_overlay_update_dsi_cmd(mfd); if (mfd->esd_fixup) { mutex_unlock(&mfd->dma->ov_mutex); mfd->esd_fixup((uint32_t)mfd); mutex_lock(&mfd->dma->ov_mutex); } mdp4_dsi_cmd_kickoff_ui(mfd, dsi_pipe); mdp4_stat.kickoff_dsi++; /* signal if pan function is waiting for the update completion */ if (mfd->pan_waiting) { mfd->pan_waiting = FALSE; complete(&mfd->pan_comp); } } /* mask to work-around to fix camera preview issue */ mdp4_overlay_resource_release(); mutex_unlock(&mfd->dma->ov_mutex); }
void mdp4_dsi_cmd_overlay(struct msm_fb_data_type *mfd) { if (atomic_read(&ov_unset)) { PR_DISP_INFO("%s(%d)found ov unset is called, skip frame update\n", __func__, __LINE__); return; } if (dsi_pipe && dsi_pipe->is_3d) { atomic_set(&ov_play, 1); if (mfd && mfd->enable_uipadding == PADDING_ENABLE) mdp4_overlay_handle_padding(mfd, true); } if (mfd->esd_fixup) mfd->esd_fixup((uint32_t)mfd); mutex_lock(&mfd->dma->ov_mutex); if (mfd && mfd->panel_power_on) { mdp4_dsi_cmd_dma_busy_wait(mfd, dsi_pipe); if (dsi_pipe && dsi_pipe->blt_addr) mdp4_dsi_blt_dmap_busy_wait(mfd); mdp4_overlay_update_dsi_cmd(mfd); mdp4_dsi_cmd_kickoff_ui(mfd, dsi_pipe); mdp4_stat.kickoff_dsi++; /* signal if pan function is waiting for the update completion */ if (mfd->pan_waiting) { mfd->pan_waiting = FALSE; complete(&mfd->pan_comp); } } /* mask to work-around to fix camera preview issue */ mdp4_overlay_resource_release(); mutex_unlock(&mfd->dma->ov_mutex); if (dsi_pipe && dsi_pipe->is_3d) { atomic_set(&ov_play, 0); if (atomic_read(&ov_unset)) { PR_DISP_INFO("%s(%d) ov play finished completion ov_comp\n", __func__, __LINE__); complete(&ov_comp); } } }
void mdp4_dsi_cmd_overlay(struct msm_fb_data_type *mfd) { if (!mfd) return; mutex_lock(&mfd->dma->ov_mutex); if (mfd->panel_power_on) { mdp4_dsi_cmd_dma_busy_wait(mfd); mdp4_overlay_update_dsi_cmd(mfd); mdp4_dsi_cmd_kickoff_ui(mfd, dsi_pipe); mdp4_iommu_unmap(dsi_pipe); /* signal if pan function is waiting for the update completion */ if (mfd->pan_waiting) { mfd->pan_waiting = FALSE; complete(&mfd->pan_comp); } } mutex_unlock(&mfd->dma->ov_mutex); }