1. 07 Sep, 2020 38 commits
  2. 06 Sep, 2020 1 commit
  3. 04 Sep, 2020 1 commit
    • Linus Walleij's avatar
      drm/panel: s6e63m0: Order enable/disable sequence · ec219f1b
      Linus Walleij authored
      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: default avatarLinus Walleij <linus.walleij@linaro.org>
      Acked-by: default avatarSam 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
      ec219f1b