drm/panel: sharp: lq101r1sx01: Respect power timings
authorThierry Reding <treding@nvidia.com>
Mon, 8 Dec 2014 14:38:17 +0000 (15:38 +0100)
committerThierry Reding <treding@nvidia.com>
Wed, 28 Jan 2015 07:45:39 +0000 (08:45 +0100)
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>
drivers/gpu/drm/panel/panel-sharp-lq101r1sx01.c

index 8a11e83ab58258ac3305cfce192c71a0b99c1d0a..745ceb1ef36ecdf563e03e6ba0cacf8fd2f8e1a3 100644 (file)
@@ -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) {