1. 03 Oct, 2019 3 commits
    • Jagan Teki's avatar
      drm/sun4i: dsi: Fix TCON DRQ set bits · 7ac62699
      Jagan Teki authored
      The LCD timing definitions between Linux DRM vs Allwinner are different,
      below diagram shows this clear differences.
      
                 Active                 Front           Sync           Back
                 Region                 Porch                          Porch
      <-----------------------><----------------><--------------><-------------->
        //////////////////////|
       ////////////////////// |
      //////////////////////  |..................                ................
                                                 ________________
      <----- [hv]display ----->
      <------------- [hv]sync_start ------------>
      <--------------------- [hv]sync_end ---------------------->
      <-------------------------------- [hv]total ------------------------------>
      
      <----- lcd_[xy] -------->		  <- lcd_[hv]spw ->
      					  <---------- lcd_[hv]bp --------->
      <-------------------------------- lcd_[hv]t ------------------------------>
      
      The DSI driver misinterpreted the hbp term from the BSP code to refer
      only to the backporch, when in fact it was backporch + sync. Thus the
      driver incorrectly used the horizontal front porch plus sync in its
      calculation of the DRQ set bit value, when it should not have included
      the sync timing.
      
      Including additional sync timings leads to flip_done timed out as:
      
      WARNING: CPU: 0 PID: 31 at drivers/gpu/drm/drm_atomic_helper.c:1429 drm_atomic_helper_wait_for_vblanks.part.1+0x298/0x2a0
      [CRTC:46:crtc-0] vblank wait timed out
      Modules linked in:
      CPU: 0 PID: 31 Comm: kworker/0:1 Not tainted 5.1.0-next-20190514-00026-g01f0c75b902d-dirty #13
      Hardware name: Allwinner sun8i Family
      Workqueue: events deferred_probe_work_func
      [<c010ed54>] (unwind_backtrace) from [<c010b76c>] (show_stack+0x10/0x14)
      [<c010b76c>] (show_stack) from [<c0688c70>] (dump_stack+0x84/0x98)
      [<c0688c70>] (dump_stack) from [<c011d9e4>] (__warn+0xfc/0x114)
      [<c011d9e4>] (__warn) from [<c011da40>] (warn_slowpath_fmt+0x44/0x68)
      [<c011da40>] (warn_slowpath_fmt) from [<c040cd50>] (drm_atomic_helper_wait_for_vblanks.part.1+0x298/0x2a0)
      [<c040cd50>] (drm_atomic_helper_wait_for_vblanks.part.1) from [<c040e694>] (drm_atomic_helper_commit_tail_rpm+0x5c/0x6c)
      [<c040e694>] (drm_atomic_helper_commit_tail_rpm) from [<c040e4dc>] (commit_tail+0x40/0x6c)
      [<c040e4dc>] (commit_tail) from [<c040e5cc>] (drm_atomic_helper_commit+0xbc/0x128)
      [<c040e5cc>] (drm_atomic_helper_commit) from [<c0411b64>] (restore_fbdev_mode_atomic+0x1cc/0x1dc)
      [<c0411b64>] (restore_fbdev_mode_atomic) from [<c04156f8>] (drm_fb_helper_restore_fbdev_mode_unlocked+0x54/0xa0)
      [<c04156f8>] (drm_fb_helper_restore_fbdev_mode_unlocked) from [<c0415774>] (drm_fb_helper_set_par+0x30/0x54)
      [<c0415774>] (drm_fb_helper_set_par) from [<c03ad450>] (fbcon_init+0x560/0x5ac)
      [<c03ad450>] (fbcon_init) from [<c03eb8a0>] (visual_init+0xbc/0x104)
      [<c03eb8a0>] (visual_init) from [<c03ed1b8>] (do_bind_con_driver+0x1b0/0x390)
      [<c03ed1b8>] (do_bind_con_driver) from [<c03ed780>] (do_take_over_console+0x13c/0x1c4)
      [<c03ed780>] (do_take_over_console) from [<c03ad800>] (do_fbcon_takeover+0x74/0xcc)
      [<c03ad800>] (do_fbcon_takeover) from [<c013c9c8>] (notifier_call_chain+0x44/0x84)
      [<c013c9c8>] (notifier_call_chain) from [<c013cd20>] (__blocking_notifier_call_chain+0x48/0x60)
      [<c013cd20>] (__blocking_notifier_call_chain) from [<c013cd50>] (blocking_notifier_call_chain+0x18/0x20)
      [<c013cd50>] (blocking_notifier_call_chain) from [<c03a6e44>] (register_framebuffer+0x1e0/0x2f8)
      [<c03a6e44>] (register_framebuffer) from [<c04153c0>] (__drm_fb_helper_initial_config_and_unlock+0x2fc/0x50c)
      [<c04153c0>] (__drm_fb_helper_initial_config_and_unlock) from [<c04158c8>] (drm_fbdev_client_hotplug+0xe8/0x1b8)
      [<c04158c8>] (drm_fbdev_client_hotplug) from [<c0415a20>] (drm_fbdev_generic_setup+0x88/0x118)
      [<c0415a20>] (drm_fbdev_generic_setup) from [<c043f060>] (sun4i_drv_bind+0x128/0x160)
      [<c043f060>] (sun4i_drv_bind) from [<c044b598>] (try_to_bring_up_master+0x164/0x1a0)
      [<c044b598>] (try_to_bring_up_master) from [<c044b668>] (__component_add+0x94/0x140)
      [<c044b668>] (__component_add) from [<c0445e1c>] (sun6i_dsi_probe+0x144/0x234)
      [<c0445e1c>] (sun6i_dsi_probe) from [<c0452ef4>] (platform_drv_probe+0x48/0x9c)
      [<c0452ef4>] (platform_drv_probe) from [<c04512cc>] (really_probe+0x1dc/0x2c8)
      [<c04512cc>] (really_probe) from [<c0451518>] (driver_probe_device+0x60/0x160)
      [<c0451518>] (driver_probe_device) from [<c044f7a4>] (bus_for_each_drv+0x74/0xb8)
      [<c044f7a4>] (bus_for_each_drv) from [<c045107c>] (__device_attach+0xd0/0x13c)
      [<c045107c>] (__device_attach) from [<c0450474>] (bus_probe_device+0x84/0x8c)
      [<c0450474>] (bus_probe_device) from [<c0450900>] (deferred_probe_work_func+0x64/0x90)
      [<c0450900>] (deferred_probe_work_func) from [<c0135970>] (process_one_work+0x204/0x420)
      [<c0135970>] (process_one_work) from [<c013690c>] (worker_thread+0x274/0x5a0)
      [<c013690c>] (worker_thread) from [<c013b3d8>] (kthread+0x11c/0x14c)
      [<c013b3d8>] (kthread) from [<c01010e8>] (ret_from_fork+0x14/0x2c)
      Exception stack(0xde539fb0 to 0xde539ff8)
      9fa0:                                     00000000 00000000 00000000 00000000
      9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
      9fe0: 00000000 00000000 00000000 00000000 00000013 00000000
      ---[ end trace b57eb1e5c64c6b8b ]---
      random: fast init done
      [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [CRTC:46:crtc-0] flip_done timed out
      [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [CONNECTOR:48:DSI-1] flip_done timed out
      [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [PLANE:30:plane-0] flip_done timed out
      
      With the terms(as described in above diagram) fixed, the panel
      displays correctly without any timeouts.
      Tested-by: default avatarMerlijn Wajer <merlijn@wizzup.org>
      Signed-off-by: default avatarJagan Teki <jagan@amarulasolutions.com>
      Signed-off-by: default avatarMaxime Ripard <mripard@kernel.org>
      Link: https://patchwork.freedesktop.org/patch/msgid/20191003064527.15128-2-jagan@amarulasolutions.com
      7ac62699
    • Jagan Teki's avatar
      drm/sun4i: sun6i_mipi_dsi: Add VCC-DSI regulator support · 1c056ad8
      Jagan Teki authored
      Allwinner MIPI DSI controllers are supplied with SoC
      DSI power rails via VCC-DSI pin.
      
      Add support for this supply pin by adding voltage
      regulator handling code to MIPI DSI driver.
      Tested-by: default avatarMerlijn Wajer <merlijn@wizzup.org>
      Reviewed-by: default avatarChen-Yu Tsai <wens@csie.org>
      Signed-off-by: default avatarJagan Teki <jagan@amarulasolutions.com>
      Signed-off-by: default avatarMaxime Ripard <mripard@kernel.org>
      Link: https://patchwork.freedesktop.org/patch/msgid/20191003064527.15128-6-jagan@amarulasolutions.com
      1c056ad8
    • Jagan Teki's avatar
      dt-bindings: sun6i-dsi: Add VCC-DSI supply property · 8a317f22
      Jagan Teki authored
      Allwinner MIPI DSI controllers are supplied with SoC DSI
      power rails via VCC-DSI pin.
      
      Some board still work without supplying this but give more
      faith on datasheet and hardware schematics and document this
      supply property in required property list.
      Reviewed-by: default avatarRob Herring <robh@kernel.org>
      Tested-by: default avatarMerlijn Wajer <merlijn@wizzup.org>
      Signed-off-by: default avatarJagan Teki <jagan@amarulasolutions.com>
      Signed-off-by: default avatarMaxime Ripard <mripard@kernel.org>
      Link: https://patchwork.freedesktop.org/patch/msgid/20191003064527.15128-5-jagan@amarulasolutions.com
      8a317f22
  2. 02 Oct, 2019 5 commits
  3. 01 Oct, 2019 5 commits
  4. 30 Sep, 2019 9 commits
  5. 27 Sep, 2019 2 commits
  6. 26 Sep, 2019 1 commit
  7. 25 Sep, 2019 5 commits
  8. 24 Sep, 2019 1 commit
  9. 23 Sep, 2019 3 commits
  10. 22 Sep, 2019 1 commit
  11. 21 Sep, 2019 1 commit
  12. 20 Sep, 2019 4 commits