static int dsi_panel_handler(struct mdss_panel_data *pdata, int enable) { int rc = 0; struct mdss_dsi_ctrl_pdata *ctrl_pdata = NULL; pr_debug("dsi_panel_handler enable=%d\n", enable); if (!pdata) return -ENODEV; ctrl_pdata = container_of(pdata, struct mdss_dsi_ctrl_pdata, panel_data); if (enable) { if (!pdata->panel_info.dynamic_switch_pending) { if (pdata->panel_info.type == MIPI_CMD_PANEL) dsi_ctrl_gpio_request(ctrl_pdata); mdss_dsi_panel_reset(pdata, 1); } pdata->panel_info.panel_power_on = 1; if (!pdata->panel_info.dynamic_switch_pending) { rc = ctrl_pdata->on(pdata); if (rc) pr_err("%s: panel on failed!\n", __func__); } if (pdata->panel_info.type == MIPI_CMD_PANEL && pdata->panel_info.dynamic_switch_pending) { dsi_ctrl_gpio_request(ctrl_pdata); mdss_dsi_set_tear_on(ctrl_pdata); } } else { msm_dsi_sw_reset(); if (dsi_intf.op_mode_config) dsi_intf.op_mode_config(DSI_CMD_MODE, pdata); if (pdata->panel_info.dynamic_switch_pending) { pr_info("%s: switching to %s mode\n", __func__, (pdata->panel_info.mipi.mode ? "video" : "command")); if (pdata->panel_info.type == MIPI_CMD_PANEL) { ctrl_pdata->switch_mode(pdata, DSI_VIDEO_MODE); dsi_ctrl_gpio_free(ctrl_pdata); } else if (pdata->panel_info.type == MIPI_VIDEO_PANEL) { ctrl_pdata->switch_mode(pdata, DSI_CMD_MODE); dsi_ctrl_gpio_request(ctrl_pdata); mdss_dsi_set_tear_off(ctrl_pdata); dsi_ctrl_gpio_free(ctrl_pdata); } } if (!pdata->panel_info.dynamic_switch_pending) rc = ctrl_pdata->off(pdata); pdata->panel_info.panel_power_on = 0; if (!pdata->panel_info.dynamic_switch_pending) { if (pdata->panel_info.type == MIPI_CMD_PANEL) dsi_ctrl_gpio_free(ctrl_pdata); mdss_dsi_panel_reset(pdata, 0); } } return rc; }
static int dsi_panel_handler(struct mdss_panel_data *pdata, int enable) { int rc = 0; struct mdss_dsi_ctrl_pdata *ctrl_pdata = NULL; pr_debug("dsi_panel_handler enable=%d\n", enable); if (!pdata) return -ENODEV; ctrl_pdata = container_of(pdata, struct mdss_dsi_ctrl_pdata, panel_data); if (enable) { dsi_ctrl_gpio_request(ctrl_pdata); mdss_dsi_panel_reset(pdata, 1); pdata->panel_info.panel_power_on = 1; rc = ctrl_pdata->on(pdata); if (rc) pr_err("dsi_panel_handler panel on failed %d\n", rc); } else { if (dsi_intf.op_mode_config) dsi_intf.op_mode_config(DSI_CMD_MODE, pdata); rc = ctrl_pdata->off(pdata); pdata->panel_info.panel_power_on = 0; mdss_dsi_panel_reset(pdata, 0); dsi_ctrl_gpio_free(ctrl_pdata); } return rc; }
static int dsi_panel_handler(struct mdss_panel_data *pdata, int enable) { int rc = 0; struct mdss_dsi_ctrl_pdata *ctrl_pdata = NULL; pr_debug("dsi_panel_handler enable=%d\n", enable); if (!pdata) return -ENODEV; ctrl_pdata = container_of(pdata, struct mdss_dsi_ctrl_pdata, panel_data); if (enable) { #if !(defined (CONFIG_MACH_MSM8X10_W6) || defined(CONFIG_MACH_MSM8X10_W55DS_GLOBAL_COM)) dsi_ctrl_gpio_request(ctrl_pdata); mdss_dsi_panel_reset(pdata, 1); #endif rc = ctrl_pdata->on(pdata); if (rc) pr_err("dsi_panel_handler panel on failed %d\n", rc); } else { if (dsi_intf.op_mode_config) dsi_intf.op_mode_config(DSI_CMD_MODE, pdata); rc = ctrl_pdata->off(pdata); mdss_dsi_panel_reset(pdata, 0); dsi_ctrl_gpio_free(ctrl_pdata); } return rc; }
static int dsi_panel_handler(struct mdss_panel_data *pdata, int enable) { int rc = 0; struct mdss_dsi_ctrl_pdata *ctrl_pdata = NULL; pr_debug("dsi_panel_handler enable=%d\n", enable); if (!pdata) return -ENODEV; ctrl_pdata = container_of(pdata, struct mdss_dsi_ctrl_pdata, panel_data); if (enable) { dsi_ctrl_gpio_request(ctrl_pdata); (ctrl_pdata->panel_data).panel_reset_fn(pdata, 1); rc = dsi_cmds_tx_v2(pdata, &dsi_panel_tx_buf, ctrl_pdata->on_cmds.cmds, ctrl_pdata->on_cmds.cmd_cnt); if (rc) pr_err("dsi_panel_handler panel on failed %d\n", rc); } else { if (dsi_intf.op_mode_config) dsi_intf.op_mode_config(DSI_CMD_MODE, pdata); dsi_cmds_tx_v2(pdata, &dsi_panel_tx_buf, ctrl_pdata->off_cmds.cmds, ctrl_pdata->off_cmds.cmd_cnt); dsi_ctrl_gpio_free(ctrl_pdata); (ctrl_pdata->panel_data).panel_reset_fn(pdata, 0); } return rc; }