Exemplo n.º 1
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;
}
static int dsi_panel_off(struct mdss_panel_data *pdata)
{
	struct mipi_panel_info *mipi;
	mipi  = &pdata->panel_info.mipi;

	pr_debug("%s:%d, debug info\n", __func__, __LINE__);

	if (mipi->mode == DSI_VIDEO_MODE) {
		dsi_cmds_tx_v2(pdata, &panel_private->dsi_panel_tx_buf,
				panel_private->off_cmds_list->buf,
				panel_private->off_cmds_list->size);
	} else {
		pr_debug("%s:%d, CMD mode not supported", __func__, __LINE__);
		return -EINVAL;
	}

	return 0;
}
static int dsi_panel_on(struct mdss_panel_data *pdata)
{
	struct mipi_panel_info *mipi;

	mipi  = &pdata->panel_info.mipi;

	pr_debug("%s:%d, debug info (mode) : %d\n", __func__, __LINE__,
		 mipi->mode);

	if (mipi->mode == DSI_VIDEO_MODE) {
		dsi_cmds_tx_v2(pdata, &panel_private->dsi_panel_tx_buf,
				panel_private->on_cmds_list->buf,
				panel_private->on_cmds_list->size);
	} else {
		pr_err("%s:%d, CMD MODE NOT SUPPORTED", __func__, __LINE__);
		return -EINVAL;
	}

	return 0;
}