1. 19 Nov, 2019 8 commits
  2. 18 Nov, 2019 2 commits
  3. 15 Nov, 2019 4 commits
  4. 14 Nov, 2019 14 commits
  5. 13 Nov, 2019 3 commits
  6. 12 Nov, 2019 7 commits
  7. 09 Nov, 2019 2 commits
    • Stephan Gerhold's avatar
      drm/mcde: Handle pending vblank while disabling display · 97de8636
      Stephan Gerhold authored
      Disabling the display using MCDE currently results in a warning
      together with a delay caused by some timeouts:
      
          mcde a0350000.mcde: MCDE display is disabled
          ------------[ cut here ]------------
          WARNING: CPU: 0 PID: 20 at drivers/gpu/drm/drm_atomic_helper.c:2258 drm_atomic_helper_commit_hw_done+0xe0/0xe4
          Hardware name: ST-Ericsson Ux5x0 platform (Device Tree Support)
          Workqueue: events drm_mode_rmfb_work_fn
          [<c010f468>] (unwind_backtrace) from [<c010b54c>] (show_stack+0x10/0x14)
          [<c010b54c>] (show_stack) from [<c079dd90>] (dump_stack+0x84/0x98)
          [<c079dd90>] (dump_stack) from [<c011d1b0>] (__warn+0xb8/0xd4)
          [<c011d1b0>] (__warn) from [<c011d230>] (warn_slowpath_fmt+0x64/0xc4)
          [<c011d230>] (warn_slowpath_fmt) from [<c0413048>] (drm_atomic_helper_commit_hw_done+0xe0/0xe4)
          [<c0413048>] (drm_atomic_helper_commit_hw_done) from [<c04159cc>] (drm_atomic_helper_commit_tail_rpm+0x44/0x6c)
          [<c04159cc>] (drm_atomic_helper_commit_tail_rpm) from [<c0415f5c>] (commit_tail+0x50/0x10c)
          [<c0415f5c>] (commit_tail) from [<c04160dc>] (drm_atomic_helper_commit+0xbc/0x128)
          [<c04160dc>] (drm_atomic_helper_commit) from [<c0430790>] (drm_framebuffer_remove+0x390/0x428)
          [<c0430790>] (drm_framebuffer_remove) from [<c0430860>] (drm_mode_rmfb_work_fn+0x38/0x48)
          [<c0430860>] (drm_mode_rmfb_work_fn) from [<c01368a8>] (process_one_work+0x1f0/0x43c)
          [<c01368a8>] (process_one_work) from [<c0136d48>] (worker_thread+0x254/0x55c)
          [<c0136d48>] (worker_thread) from [<c013c014>] (kthread+0x124/0x150)
          [<c013c014>] (kthread) from [<c01010e8>] (ret_from_fork+0x14/0x2c)
          Exception stack(0xeb14dfb0 to 0xeb14dff8)
          dfa0:                                     00000000 00000000 00000000 00000000
          dfc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
          dfe0: 00000000 00000000 00000000 00000000 00000013 00000000
          ---[ end trace 314909bcd4c7d50c ]---
          [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [CRTC:32:crtc-0] flip_done timed out
          [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [CONNECTOR:34:DSI-1] flip_done timed out
          [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [PLANE:31:plane-0] flip_done timed out
      
      The reason for this is that there is a vblank event pending, but we
      never handle it after disabling the vblank interrupts.
      
      Check if there is an vblank event pending when disabling the display,
      and clear it by sending a fake vblank event in that case.
      Signed-off-by: default avatarStephan Gerhold <stephan@gerhold.net>
      Tested-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      Link: https://patchwork.freedesktop.org/patch/msgid/20191106165835.2863-8-stephan@gerhold.net
      97de8636
    • Stephan Gerhold's avatar
      drm/mcde: dsi: Enable clocks in pre_enable() instead of mode_set() · 3c5824bd
      Stephan Gerhold authored
      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: default avatarStephan Gerhold <stephan@gerhold.net>
      Tested-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      Link: https://patchwork.freedesktop.org/patch/msgid/20191106165835.2863-7-stephan@gerhold.net
      3c5824bd