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;
}
Exemple #3
0
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;
}
Exemple #4
0
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;
}