diff options
author | Thierry Reding <treding@nvidia.com> | 2014-12-08 15:38:17 +0100 |
---|---|---|
committer | Thierry Reding <treding@nvidia.com> | 2015-01-28 08:45:39 +0100 |
commit | ee920bca27da6c33de6ee73de7b34dee0298f703 (patch) | |
tree | dea5146aaaba775792c0870272ba0f16c55efe58 | |
parent | 4569619d0f3a38c41a4556c79ef63cabd4282558 (diff) |
drm/panel: sharp: lq101r1sx01: Respect power timings
Before shutting down the display using the DCS display_off command, wait
for 4 frames according to the datasheet.
Furthermore, after enabling the power supply, the supply voltage needs
around 10 ms to settle. After that, another 120 ms is required before a
DCS exit_sleep_mode command can be sent.
While at it, no longer send the DCS soft_reset command. This is totally
unnecessary because we've just powered up the display, hence it will be
in a reset state already.
Signed-off-by: Thierry Reding <treding@nvidia.com>
-rw-r--r-- | drivers/gpu/drm/panel/panel-sharp-lq101r1sx01.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/drivers/gpu/drm/panel/panel-sharp-lq101r1sx01.c b/drivers/gpu/drm/panel/panel-sharp-lq101r1sx01.c index 8a11e83ab58..745ceb1ef36 100644 --- a/drivers/gpu/drm/panel/panel-sharp-lq101r1sx01.c +++ b/drivers/gpu/drm/panel/panel-sharp-lq101r1sx01.c @@ -116,6 +116,8 @@ static int sharp_panel_unprepare(struct drm_panel *panel) if (!sharp->prepared) return 0; + sharp_wait_frames(sharp, 4); + err = mipi_dsi_dcs_set_display_off(sharp->link1); if (err < 0) dev_err(panel->dev, "failed to set display off: %d\n", err); @@ -180,15 +182,13 @@ static int sharp_panel_prepare(struct drm_panel *panel) if (err < 0) return err; - usleep_range(10000, 20000); - - err = mipi_dsi_dcs_soft_reset(sharp->link1); - if (err < 0) { - dev_err(panel->dev, "soft reset failed: %d\n", err); - goto poweroff; - } - - msleep(120); + /* + * According to the datasheet, the panel needs around 10 ms to fully + * power up. At least another 120 ms is required before exiting sleep + * mode to make sure the panel is ready. Throw in another 20 ms for + * good measure. + */ + msleep(150); err = mipi_dsi_dcs_exit_sleep_mode(sharp->link1); if (err < 0) { |