int mdp4_dsi_video_off(struct platform_device *pdev) { int ret = 0; /* MDP cmd block enable */ mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_ON, FALSE); mdp4_mixer_pipe_cleanup(dsi_pipe->mixer_num); MDP_OUTP(MDP_BASE + DSI_VIDEO_BASE, 0); dsi_video_enabled = 0; /* MDP cmd block disable */ mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_OFF, FALSE); mdp_pipe_ctrl(MDP_OVERLAY0_BLOCK, MDP_BLOCK_POWER_OFF, FALSE); mdp_histogram_ctrl_all(FALSE); ret = panel_next_off(pdev); /* delay to make sure the last frame finishes */ msleep(20); /* dis-engage rgb0 from mixer0 */ if (dsi_pipe) { mdp4_mixer_stage_down(dsi_pipe); mdp4_iommu_unmap(dsi_pipe); } return ret; }
static int mdp4_dtv_stop(struct msm_fb_data_type *mfd) { if (dtv_pipe == NULL) return -EINVAL; /* MDP cmd block enable */ mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_ON, FALSE); mdp4_mixer_pipe_cleanup(dtv_pipe->mixer_num); msleep(20); MDP_OUTP(MDP_BASE + DTV_BASE, 0); dtv_enabled = 0; /* MDP cmd block disable */ mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_OFF, FALSE); mdp_pipe_ctrl(MDP_OVERLAY1_BLOCK, MDP_BLOCK_POWER_OFF, FALSE); return 0; }
int mdp_lcdc_off(struct platform_device *pdev) { int ret = 0; struct msm_fb_data_type *mfd; mfd = (struct msm_fb_data_type *)platform_get_drvdata(pdev); mutex_lock(&mfd->dma->ov_mutex); /* MDP cmd block enable */ mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_ON, FALSE); mdp4_mixer_pipe_cleanup(lcdc_pipe->mixer_num); MDP_OUTP(MDP_BASE + LCDC_BASE, 0); lcdc_enabled = 0; /* MDP cmd block disable */ mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_OFF, FALSE); mdp_pipe_ctrl(MDP_OVERLAY0_BLOCK, MDP_BLOCK_POWER_OFF, FALSE); mdp_histogram_ctrl_all(FALSE); ret = panel_next_off(pdev); mutex_unlock(&mfd->dma->ov_mutex); /* delay to make sure the last frame finishes */ msleep(20); /* dis-engage rgb0 from mixer0 */ if (lcdc_pipe) { mdp4_mixer_stage_down(lcdc_pipe); mdp4_iommu_unmap(lcdc_pipe); } #ifdef CONFIG_MSM_BUS_SCALING mdp_bus_scale_update_request(0); #endif mdp4_iommu_detach(); return ret; }