int msm_display_off(void) { int ret = NO_ERROR; struct msm_panel_info *pinfo; if (!panel) return ERR_INVALID_ARGS; pinfo = &(panel->panel_info); switch (pinfo->type) { case LVDS_PANEL: dprintf(INFO, "Turn off LVDS PANEL.\n"); mdp_lcdc_off(); break; case MIPI_VIDEO_PANEL: dprintf(INFO, "Turn off MIPI_VIDEO_PANEL.\n"); ret = mdp_dsi_video_off(pinfo); if (ret) goto msm_display_off_out; ret = mipi_dsi_off(); if (ret) goto msm_display_off_out; break; case MIPI_CMD_PANEL: dprintf(INFO, "Turn off MIPI_CMD_PANEL.\n"); ret = mdp_dsi_cmd_off(); if (ret) goto msm_display_off_out; ret = mipi_dsi_off(); if (ret) goto msm_display_off_out; break; case LCDC_PANEL: dprintf(INFO, "Turn off LCDC PANEL.\n"); mdp_lcdc_off(); break; default: return ERR_INVALID_ARGS; }; if (pinfo->off) ret = pinfo->off(); /* Disable clock */ if (panel->clk_func) ret = panel->clk_func(0); if (ret) goto msm_display_off_out; /* Disable panel */ if (panel->power_func) ret = panel->power_func(0); msm_display_off_out: return ret; }
static ssize_t attr_orise_lcdoff(struct device *dev, struct device_attribute *attr, char *buf) { if(flag_lcd_node_onoff) return 0; flag_lcd_node_onoff = true; prevent_suspend(); mipi_dsi_off(g_mdp_dev); allow_suspend(); return 0; }
static ssize_t attr_orise_reinit(struct device *dev, struct device_attribute *attr, char *buf) { if(flag_lcd_off) { printk("%s: system is suspending, don't do this!\n",__func__); return 0; } prevent_suspend(); flag_lcd_resume = true; mipi_dsi_off(g_mdp_dev); mdelay(100); mipi_dsi_on(g_mdp_dev); allow_suspend(); return 0; }
/* return : 0=success, 1=fail */ int mipi_dsi_NULL(int on) { int ret = 0; if (!cond_mipi_dsi_NULL()) return 1; in_mipi_dsi_NULL = true; if (on) { pr_info( "%s : call mipi_dsi_on\n", __func__ ); ret = mipi_dsi_on( mipi_dsi_pdev_switch ); } else { pr_info( "%s : call mipi_dsi_off\n", __func__ ); ret = mipi_dsi_off( mipi_dsi_pdev_switch ); } in_mipi_dsi_NULL = false; return ret; }