linux_dsm_epyc7002/drivers/gpu/drm/panel
Linus Walleij ec219f1ba2 drm/panel: s6e63m0: Order enable/disable sequence
The upstream S6E63M0 driver has some peculiarities around
the prepare/enable disable/unprepare sequence: the screen
is taken out of sleep in prepare() as part of
s6e63m0_init() the put to on with MIPI_DCS_SET_DISPLAY_ON
in enable().

However it is just put into sleep mode directly in
disable(). As disable()/enable() can be called without
unprepare()/prepare() being called, this is unbalanced,
we should take the display out of sleep in enable()
then turn it off().

Further MIPI_DCS_SET_DISPLAY_OFF is never called
balanced with MIPI_DCS_SET_DISPLAY_ON.

The vendor driver for Samsung GT-I8190 (Golden) does all
of these things in strict order.

Augment the driver to do exit sleep/set display on in
enable() and set display off/enter sleep in disable().

Further send an explicit reset pulse in power_on() so we
come up in a known state, and issue the MCS_ERROR_CHECK
command after setting display on like the vendor driver
does. Also use the timings from the vendor driver in
the sequence.

Doing all of these things makes the display much more
stable on the Samsung GT-I8190 when enabling/disabling
the display pipeline.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Acked-by: Sam Ravnborg <sam@ravnborg.org>
Cc: Paweł Chmiel <pawel.mikolaj.chmiel@gmail.com>
Cc: Stephan Gerhold <stephan@gerhold.net>
Link: https://patchwork.freedesktop.org/patch/msgid/20200817213906.88207-1-linus.walleij@linaro.org
2020-09-05 01:28:11 +02:00
..
Kconfig drm/panel: s6e63m0: Add DSI transport 2020-09-05 01:23:45 +02:00
Makefile drm/panel: s6e63m0: Add DSI transport 2020-09-05 01:23:45 +02:00
panel-arm-versatile.c drm/panel: remove return value of function drm_panel_add 2020-08-02 08:59:06 +02:00
panel-asus-z00t-tm5p5-n35596.c drm/panel: remove return value of function drm_panel_add 2020-08-02 08:59:06 +02:00
panel-boe-himax8279d.c drm/panel: Use dev_ based logging 2020-08-18 22:32:37 +02:00
panel-boe-tv101wum-nl6.c drm/panel: Read panel orientation for BOE TV101WUM-NL6 2020-08-16 17:12:18 +02:00
panel-elida-kd35t133.c drm/panel: Use dev_ based logging 2020-08-18 22:32:37 +02:00
panel-feixin-k101-im2ba02.c drm/panel: Use dev_ based logging 2020-08-18 22:32:37 +02:00
panel-feiyang-fy07024di26a30d.c drm/panel: Use dev_ based logging 2020-08-18 22:32:37 +02:00
panel-ilitek-ili9322.c drm/panel: Use dev_ based logging 2020-08-18 22:32:37 +02:00
panel-ilitek-ili9881c.c drm/panel: ilitek-ili9881c: add support for Feixin K101-IM2BYL02 panel 2020-08-15 16:51:00 +02:00
panel-innolux-p079zca.c drm/panel: Use dev_ based logging 2020-08-18 22:32:37 +02:00
panel-jdi-lt070me05000.c drm/panel: remove return value of function drm_panel_add 2020-08-02 08:59:06 +02:00
panel-kingdisplay-kd097d04.c drm/panel: Use dev_ based logging 2020-08-18 22:32:37 +02:00
panel-leadtek-ltk050h3146w.c drm/panel: leadtek: Use dev_ based logging 2020-08-18 22:31:48 +02:00
panel-leadtek-ltk500hd1829.c drm/panel: leadtek: Use dev_ based logging 2020-08-18 22:31:48 +02:00
panel-lg-lb035q02.c drm/panel: remove return value of function drm_panel_add 2020-08-02 08:59:06 +02:00
panel-lg-lg4573.c drm/panel: remove return value of function drm_panel_add 2020-08-02 08:59:06 +02:00
panel-lvds.c drm/panel: lvds: Read panel orientation 2020-08-16 17:12:18 +02:00
panel-mantix-mlaf057we51.c drm/panel: Add panel driver for the Mantix MLAF057WE51-X DSI panel 2020-08-18 18:37:23 +02:00
panel-nec-nl8048hl11.c drm/panel: remove return value of function drm_panel_add 2020-08-02 08:59:06 +02:00
panel-novatek-nt35510.c drm/panel: Use dev_ based logging 2020-08-18 22:32:37 +02:00
panel-novatek-nt39016.c drm/panel: novatek,nt39016: Remove 'dev' field in priv struct 2020-08-20 18:34:42 +02:00
panel-olimex-lcd-olinuxino.c drm/panel: remove return value of function drm_panel_add 2020-08-02 08:59:06 +02:00
panel-orisetech-otm8009a.c drm/panel: Use dev_ based logging 2020-08-18 22:32:37 +02:00
panel-osd-osd101t2587-53ts.c drm/panel: remove return value of function drm_panel_add 2020-08-02 08:59:06 +02:00
panel-panasonic-vvx10f034n00.c drm/panel: remove return value of function drm_panel_add 2020-08-02 08:59:06 +02:00
panel-raspberrypi-touchscreen.c drm/panel: remove return value of function drm_panel_add 2020-08-02 08:59:06 +02:00
panel-raydium-rm67191.c drm/panel: rm67191: Remove CLOCK_NON_CONTINUOUS flag 2020-08-29 23:01:36 +02:00
panel-raydium-rm68200.c drm/panel: raydium: Use dev_ based logging 2020-08-18 22:32:08 +02:00
panel-ronbo-rb070d30.c drm/panel: Use dev_ based logging 2020-08-18 22:32:37 +02:00
panel-samsung-ld9040.c drm/panel: samsung: Use dev_ based logging 2020-08-18 22:31:09 +02:00
panel-samsung-s6d16d0.c drm/panel: samsung: Use dev_ based logging 2020-08-18 22:31:09 +02:00
panel-samsung-s6e3ha2.c drm/panel: samsung: Use dev_ based logging 2020-08-18 22:31:09 +02:00
panel-samsung-s6e8aa0.c drm/panel: samsung: Use dev_ based logging 2020-08-18 22:31:09 +02:00
panel-samsung-s6e63j0x03.c drm/panel: samsung: Use dev_ based logging 2020-08-18 22:31:09 +02:00
panel-samsung-s6e63m0-dsi.c drm/panel: s6e63m0: Add reading functionality 2020-09-05 01:24:26 +02:00
panel-samsung-s6e63m0-spi.c drm/panel: s6e63m0: Add reading functionality 2020-09-05 01:24:26 +02:00
panel-samsung-s6e63m0.c drm/panel: s6e63m0: Order enable/disable sequence 2020-09-05 01:28:11 +02:00
panel-samsung-s6e63m0.h drm/panel: s6e63m0: Add reading functionality 2020-09-05 01:24:26 +02:00
panel-samsung-s6e88a0-ams452ef01.c drm/panel: remove return value of function drm_panel_add 2020-08-02 08:59:06 +02:00
panel-seiko-43wvf1g.c drm/panel: remove return value of function drm_panel_add 2020-08-02 08:59:06 +02:00
panel-sharp-lq101r1sx01.c drm/panel: remove return value of function drm_panel_add 2020-08-02 08:59:06 +02:00
panel-sharp-ls037v7dw01.c drm/panel: remove return value of function drm_panel_add 2020-08-02 08:59:06 +02:00
panel-sharp-ls043t1le01.c drm/panel: remove return value of function drm_panel_add 2020-08-02 08:59:06 +02:00
panel-simple.c drm: panel: Fix bpc for OrtusTech COM43H4M85ULC panel 2020-08-30 00:10:44 +02:00
panel-sitronix-st7701.c drm/panel: sitronix: Use dev_ based logging 2020-08-18 22:32:23 +02:00
panel-sitronix-st7703.c drm/panel: sitronix: Use dev_ based logging 2020-08-18 22:32:23 +02:00
panel-sitronix-st7789v.c drm/panel: remove return value of function drm_panel_add 2020-08-02 08:59:06 +02:00
panel-sony-acx424akp.c drm/panel: Use dev_ based logging 2020-08-18 22:32:37 +02:00
panel-sony-acx565akm.c drm/panel: remove return value of function drm_panel_add 2020-08-02 08:59:06 +02:00
panel-tpo-td028ttec1.c drm/panel: remove return value of function drm_panel_add 2020-08-02 08:59:06 +02:00
panel-tpo-td043mtea1.c drm/panel: remove return value of function drm_panel_add 2020-08-02 08:59:06 +02:00
panel-tpo-tpg110.c drm/panel: Use dev_ based logging 2020-08-18 22:32:37 +02:00
panel-truly-nt35597.c drm/panel: Use dev_ based logging 2020-08-18 22:32:37 +02:00
panel-visionox-rm69299.c drm/panel: Use dev_ based logging 2020-08-18 22:32:37 +02:00
panel-xinpeng-xpp055c272.c drm/panel: Use dev_ based logging 2020-08-18 22:32:37 +02:00