Esempio n. 1
0
int mdp4_dtv_off(struct platform_device *pdev)
{
	struct msm_fb_data_type *mfd;
	int ret = 0;

	mfd = (struct msm_fb_data_type *)platform_get_drvdata(pdev);

	if (dtv_pipe != NULL) {
		mdp4_mixer_stage_down(dtv_pipe);
		/*
		 * wait4vsync to make sure pipes are
		 * dis-engaged from mixer1
		 * before turn off timing generator
		 */
		mdp4_overlay_dtv_wait4vsync();
		mdp4_dtv_stop(mfd);
		mdp4_overlay_pipe_free(dtv_pipe);
		mdp4_iommu_unmap(dtv_pipe);
		dtv_pipe = NULL;
		msleep(20);
	}
	mdp4_overlay_panel_mode_unset(MDP4_MIXER1, MDP4_PANEL_DTV);

	ret = panel_next_off(pdev);
	mdp_footswitch_ctrl(FALSE);

	dev_info(&pdev->dev, "mdp4_overlay_dtv: off");
	return ret;
}
void mdp4_overlay_dtv_vsync_push(struct msm_fb_data_type *mfd,
                                 struct mdp4_overlay_pipe *pipe)
{

    mdp4_overlay_reg_flush(pipe, 1);
    if (pipe->flags & MDP_OV_PLAY_NOWAIT)
        return;

    mdp4_overlay_dtv_wait4vsync(mfd);
}
Esempio n. 3
0
void mdp4_overlay_dtv_vsync_push(struct msm_fb_data_type *mfd,
			struct mdp4_overlay_pipe *pipe)
{

	mdp4_overlay_reg_flush(pipe, 1);
	if (pipe->flags & MDP_OV_PLAY_NOWAIT)
		return;

	mdp4_overlay_dtv_wait4vsync(mfd);

	/* change mdp clk while mdp is idle` */
	mdp4_set_perf_level();
}
Esempio n. 4
0
void mdp4_overlay_dtv_vsync_push(struct msm_fb_data_type *mfd,
			struct mdp4_overlay_pipe *pipe)
{
	u32 data = inpdw(MDP_BASE + DTV_BASE);

	mdp4_overlay_reg_flush(pipe, 1);
	if (pipe->flags & MDP_OV_PLAY_NOWAIT)
		return;

	/* Return if DTV is not enabled */
	if (!(data & 0x1))
		return;

	mdp4_overlay_dtv_wait4vsync(mfd);
}