int mdp4_overlay_dtv_set(struct msm_fb_data_type *mfd, struct mdp4_overlay_pipe *pipe) { int cndx = 0; struct vsycn_ctrl *vctrl; vctrl = &vsync_ctrl_db[cndx]; if (vctrl->base_pipe != NULL) return 0; if (pipe != NULL && pipe->mixer_stage == MDP4_MIXER_STAGE_BASE && pipe->pipe_type == OVERLAY_TYPE_RGB) vctrl->base_pipe = pipe; /* keep it */ else if (!hdmi_prim_display && mdp4_overlay_borderfill_supported()) mdp4_overlay_dtv_alloc_pipe(mfd, OVERLAY_TYPE_BF, vctrl); else mdp4_overlay_dtv_alloc_pipe(mfd, OVERLAY_TYPE_RGB, vctrl); if (vctrl->base_pipe == NULL) return -ENODEV; mdp4_init_writeback_buf(mfd, MDP4_MIXER1); vctrl->base_pipe->ov_blt_addr = 0; vctrl->base_pipe->dma_blt_addr = 0; return mdp4_dtv_start(mfd); }
int mdp4_dtv_on(struct platform_device *pdev) { struct msm_fb_data_type *mfd; int ret = 0; mfd = (struct msm_fb_data_type *)platform_get_drvdata(pdev); if (!mfd) return -ENODEV; if (mfd->key != MFD_KEY) return -EINVAL; mdp_footswitch_ctrl(TRUE); mdp4_overlay_panel_mode(MDP4_MIXER1, MDP4_PANEL_DTV); if (dtv_pipe != NULL) ret = mdp4_dtv_start(mfd); ret = panel_next_on(pdev); if (ret != 0) dev_warn(&pdev->dev, "mdp4_overlay_dtv: panel_next_on failed"); dev_info(&pdev->dev, "mdp4_overlay_dtv: on"); return ret; }
int mdp4_overlay_dtv_set(struct msm_fb_data_type *mfd, struct mdp4_overlay_pipe *pipe) { if (dtv_pipe != NULL) return 0; if (pipe != NULL && pipe->mixer_stage == MDP4_MIXER_STAGE_BASE && pipe->pipe_type == OVERLAY_TYPE_RGB) dtv_pipe = pipe; /* keep it */ else if (!hdmi_prim_display && mdp4_overlay_borderfill_supported()) mdp4_overlay_dtv_alloc_pipe(mfd, OVERLAY_TYPE_BF); else mdp4_overlay_dtv_alloc_pipe(mfd, OVERLAY_TYPE_RGB); if (dtv_pipe == NULL) return -ENODEV; return mdp4_dtv_start(mfd); }