Ejemplo n.º 1
0
static void tegra_dc_dsi_enable(struct tegra_dc *dc)
{
	struct tegra_dc_dsi_data *dsi = tegra_dc_get_outdata(dc);
	int err;

	tegra_dc_io_start(dc);
	mutex_lock(&dsi->lock);

	if (dsi->ulpm) {
		tegra_dsi_exit_ulpm(dsi);
		if (dsi->info.panel_reset) {
			err = tegra_dsi_send_panel_cmd(dc, dsi,
							dsi->info.dsi_init_cmd,
							dsi->info.n_init_cmd);
			if (err < 0) {
				dev_err(&dc->ndev->dev,
				"dsi: error while sending dsi init cmd\n");
				return;
			}
		}
	} else {
		err = tegra_dsi_init_hw(dc, dsi);
		if (err < 0) {
			dev_err(&dc->ndev->dev,
				"dsi: not able to init dsi hardware\n");
			return;
		}

		err = tegra_dsi_set_to_lp_mode(dc, dsi);
		if (err < 0) {
			dev_err(&dc->ndev->dev,
				"dsi: not able to set to lp mode\n");
			return;
		}

		err = tegra_dsi_send_panel_cmd(dc, dsi, dsi->info.dsi_init_cmd,
						dsi->info.n_init_cmd);
		if (err < 0) {
			dev_err(&dc->ndev->dev,
				"dsi: error while sending dsi init cmd\n");
			return;
		}

		err = tegra_dsi_set_to_hs_mode(dc, dsi);
		if (err < 0) {
				dev_err(&dc->ndev->dev,
					"dsi: not able to set to hs mode\n");
			return;
		}
	}

	if (dsi->status.driven == DSI_DRIVEN_MODE_DC) {
		tegra_dsi_start_dc_stream(dc, dsi);
	}

	mutex_unlock(&dsi->lock);
	tegra_dc_io_end(dc);
}
Ejemplo n.º 2
0
static void tegra_dc_dsi_suspend(struct tegra_dc *dc)
{
	struct tegra_dc_dsi_data *dsi;
	int err;

	dsi = tegra_dc_get_outdata(dc);

	tegra_dc_io_start(dc);
	mutex_lock(&dsi->lock);

	if (dsi->ulpm)
		tegra_dsi_exit_ulpm(dsi);

	err = tegra_dsi_send_panel_cmd(dc, dsi, dsi->info.dsi_suspend_cmd,
				dsi->info.n_suspend_cmd);
	if (err < 0) {
		dev_err(&dc->ndev->dev,
			"dsi: error while sending dsi suspend cmd\n");
		return;
	}

	clk_disable(dsi->dsi_clk);

	mutex_unlock(&dsi->lock);
	tegra_dc_io_end(dc);
}
Ejemplo n.º 3
0
static int send_backlight_cmd(struct tegra_dsi_bl_data *tbl, int brightness)
{
	int err = 0;
	struct tegra_dc *dc = tegra_dc_get_dc(tbl->which_dc);
	struct tegra_dc_dsi_data *dsi = dc->out_data;
	struct tegra_dsi_cmd *cur_cmd;

	if (tbl->dsi_backlight_cmd)
		cur_cmd = tbl->dsi_backlight_cmd;
	else
		return -EINVAL;

	mutex_lock(&dsi->lock);

	cur_cmd->sp_len_dly.sp.data1 = brightness;
	err = tegra_dsi_send_panel_cmd(dc, dsi,
			tbl->dsi_backlight_cmd,
			tbl->n_backlight_cmd);

	if (err < 0)
		goto fail;

fail:
	mutex_unlock(&dsi->lock);

	return err;
}