Ejemplo n.º 1
0
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);
}
Ejemplo n.º 3
0
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);
}