diff options
Diffstat (limited to 'drivers/video/tegra/dc')
-rw-r--r-- | drivers/video/tegra/dc/dsi.c | 15 |
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"); |