linux/drivers/gpu/drm/mcde
Stephan Gerhold 3c5824bdc4 drm/mcde: dsi: Enable clocks in pre_enable() instead of mode_set()
The DSI initialization sequence incorrectly assumes that the mode_set()
function of the DRM bridge is always called when (re-)enabling the display.
This is not necessarily the case.

Keeping the device idle in the framebuffer console for a while results
in the display being turned off using the disable() function. However,
as soon as any key is pressed only (pre_)enable() are called.
mode_set() is skipped because the mode has not been changed.

In this case, the DSI HS/LP clocks are never turned back on,
preventing the display from working.

Fix this by moving a part of the initialization sequence from
mode_set() to pre_enable(). Keep most of the video mode setup in
mode_set() since most of the registers are only dependent on the mode
that is set for the panel - there is no need to write them again each
time we re-enable the display.

Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
Tested-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20191106165835.2863-7-stephan@gerhold.net
2019-11-09 22:19:09 +01:00
..
Kconfig
Makefile
mcde_display_regs.h
mcde_display.c drm/mcde: Fix frame sync setup for video mode panels 2019-11-09 22:18:51 +01:00
mcde_drm.h drm/mcde: Fix frame sync setup for video mode panels 2019-11-09 22:18:51 +01:00
mcde_drv.c drm/mcde: Fix frame sync setup for video mode panels 2019-11-09 22:18:51 +01:00
mcde_dsi_regs.h drm/mcde: dsi: Make video mode errors more verbose 2019-11-09 22:18:56 +01:00
mcde_dsi.c drm/mcde: dsi: Enable clocks in pre_enable() instead of mode_set() 2019-11-09 22:19:09 +01:00