Skip to content

Commit aee6f25

Browse files
jwrdegoederodrigovivi
authored andcommitted
drm/i915/display/vlv_dsi: Do not skip panel_pwr_cycle_delay when disabling the panel
After the recently added commit fe0f1e3 ("drm/i915: Shut down displays gracefully on reboot"), the DSI panel on a Cherry Trail based Predia Basic tablet would no longer properly light up after reboot. I've managed to reproduce this without rebooting by doing: chvt 3; echo 1 > /sys/class/graphics/fb0/blank;\ echo 0 > /sys/class/graphics/fb0/blank Which rapidly turns the panel off and back on again. The vlv_dsi.c code uses an intel_dsi_msleep() helper for the various delays used for panel on/off, since starting with MIPI-sequences version >= 3 the delays are already included inside the MIPI-sequences. The problems exposed by the "Shut down displays gracefully on reboot" change, show that using this helper for the panel_pwr_cycle_delay is not the right thing to do. This has not been noticed until now because normally the panel never is cycled off and directly on again in quick succession. Change the msleep for the panel_pwr_cycle_delay to a normal msleep() call to avoid the panel staying black after a quick off + on cycle. Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Fixes: fe0f1e3 ("drm/i915: Shut down displays gracefully on reboot") Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20210325114823.44922-1-hdegoede@redhat.com (cherry picked from commit 2878b29) Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
1 parent bf52dc4 commit aee6f25

1 file changed

Lines changed: 2 additions & 2 deletions

File tree

drivers/gpu/drm/i915/display/vlv_dsi.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -992,14 +992,14 @@ static void intel_dsi_post_disable(struct intel_atomic_state *state,
992992
* FIXME As we do with eDP, just make a note of the time here
993993
* and perform the wait before the next panel power on.
994994
*/
995-
intel_dsi_msleep(intel_dsi, intel_dsi->panel_pwr_cycle_delay);
995+
msleep(intel_dsi->panel_pwr_cycle_delay);
996996
}
997997

998998
static void intel_dsi_shutdown(struct intel_encoder *encoder)
999999
{
10001000
struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder);
10011001

1002-
intel_dsi_msleep(intel_dsi, intel_dsi->panel_pwr_cycle_delay);
1002+
msleep(intel_dsi->panel_pwr_cycle_delay);
10031003
}
10041004

10051005
static bool intel_dsi_get_hw_state(struct intel_encoder *encoder,

0 commit comments

Comments
 (0)