summaryrefslogtreecommitdiff
path: root/drivers/video/tegra/dc
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/video/tegra/dc')
-rw-r--r--drivers/video/tegra/dc/dsi.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/drivers/video/tegra/dc/dsi.c b/drivers/video/tegra/dc/dsi.c
index 20b449cfe3c3..a05bd5a1329a 100644
--- a/drivers/video/tegra/dc/dsi.c
+++ b/drivers/video/tegra/dc/dsi.c
@@ -2562,9 +2562,15 @@ static int tegra_dsi_send_panel_cmd(struct tegra_dc *dc,
struct tegra_dsi_cmd *cur_cmd;
cur_cmd = &cmd[i];
- if (cur_cmd->cmd_type == TEGRA_DSI_DELAY_MS)
+ /*
+ * Some Panels need reset midway in the command sequence.
+ */
+ if (cur_cmd->cmd_type == TEGRA_DSI_GPIO_SET) {
+ gpio_set_value(cur_cmd->sp_len_dly.gpio,
+ cur_cmd->data_id);
+ } else if (cur_cmd->cmd_type == TEGRA_DSI_DELAY_MS) {
mdelay(cur_cmd->sp_len_dly.delay_ms);
- else {
+ } else {
err = tegra_dsi_write_data(dc, dsi,
cur_cmd->pdata,
cur_cmd->data_id,
@@ -3479,7 +3485,10 @@ static int _tegra_dc_dsi_init(struct tegra_dc *dc)
int err = 0;
int dsi_enum = -1;
- dsi_enum = tegra_dsi_get_enumeration();
+ if (dc->pdata->default_out->dsi->dsi_instance)
+ dsi_enum = 1;
+ else
+ dsi_enum = tegra_dsi_get_enumeration();
if (dsi_enum < 0) {
err = -EINVAL;
dev_err(&dc->ndev->dev, "dsi: invalid enum retured\n");