An error occurred fetching the project authors.
  1. 07 Nov, 2022 1 commit
  2. 15 Aug, 2022 1 commit
  3. 29 Apr, 2022 1 commit
  4. 16 Sep, 2021 1 commit
  5. 01 Sep, 2021 1 commit
  6. 31 Aug, 2020 1 commit
  7. 23 Aug, 2020 1 commit
  8. 18 Aug, 2020 1 commit
  9. 08 Aug, 2020 1 commit
    • Joe Perches's avatar
      drm: Remove unnecessary drm_panel_attach and drm_panel_detach · 87154ff8
      Joe Perches authored
      These functions are now empty and no longer
      useful so remove the functions and their uses.
      Signed-off-by: default avatarJoe Perches <joe@perches.com>
      Cc: Bernard Zhao <bernard@vivo.com>
      Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Cc: Maxime Ripard <mripard@kernel.org>,
      Cc: Thomas Zimmermann <tzimmermann@suse.de>
      Cc: Thierry Reding <thierry.reding@gmail.com>
      Cc: David Airlie <airlied@linux.ie>
      Cc: Daniel Vetter <daniel@ffwll.ch>
      Cc: Linus Walleij <linus.walleij@linaro.org>
      Cc: Icenowy Zheng <icenowy@aosc.io>,
      Cc: Jagan Teki <jagan@amarulasolutions.com>
      Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
      Cc: Robert Chiras <robert.chiras@nxp.com>
      Cc: dri-devel@lists.freedesktop.org,
      Cc: linux-kernel@vger.kernel.org
      Cc: opensource.kernel@vivo.com
      Signed-off-by: Sam Ravnborg <sam@ravnborg.org> # Fixed build and a few warnings
      Link: https://patchwork.freedesktop.org/patch/msgid/9e13761020750b1ce2f1fabee23ef6e2a2942882.camel@perches.com
      87154ff8
  10. 04 May, 2020 1 commit
  11. 02 Apr, 2020 1 commit
  12. 19 Feb, 2020 1 commit
  13. 14 Feb, 2020 4 commits
    • Samuel Holland's avatar
      drm/sun4i: dsi: Remove incorrect use of runtime PM · 215be713
      Samuel Holland authored
      The driver currently uses runtime PM to perform some of the module
      initialization and cleanup. This has three problems:
      
      1) There is no Kconfig dependency on CONFIG_PM, so if runtime PM is
         disabled, the driver will not work at all, since the module will
         never be initialized.
      
      2) The driver does not ensure that the device is suspended when
         sun6i_dsi_probe() fails or when sun6i_dsi_remove() is called. It
         simply disables runtime PM. From the docs of pm_runtime_disable():
      
            The device can be either active or suspended after its runtime PM
            has been disabled.
      
         And indeed, the device will likely still be active if sun6i_dsi_probe
         fails. For example, if the panel driver is not yet loaded, we have
         the following sequence:
      
         sun6i_dsi_probe()
            pm_runtime_enable()
            mipi_dsi_host_register()
               of_mipi_dsi_device_add(child)
                  ...device_add()...
                     __device_attach()
                       pm_runtime_get_sync(dev->parent) -> Causes resume
                       bus_for_each_drv()
                          __device_attach_driver() -> No match for panel
                       pm_runtime_put(dev->parent) -> Async idle request
            component_add()
               __component_add()
                  try_to_bring_up_masters()
                     try_to_bring_up_master()
                        sun4i_drv_bind()
                           component_bind_all()
                              component_bind()
                                 sun6i_dsi_bind() -> Fails with -EPROBE_DEFER
            mipi_dsi_host_unregister()
            pm_runtime_disable()
               __pm_runtime_disable()
                  __pm_runtime_barrier() -> Idle request is still pending
                     cancel_work_sync()  -> DSI host is *not* suspended!
      
         Since the device is not suspended, the clock and regulator are never
         disabled. The imbalance causes a WARN at devres free time.
      
      3) The driver relies on being suspended when sun6i_dsi_encoder_enable()
         is called. The resume callback has a comment that says:
      
            Some part of it can only be done once we get a number of
            lanes, see sun6i_dsi_inst_init
      
         And then part of the resume callback only runs if dsi->device is not
         NULL (that is, if sun6i_dsi_attach() has been called). However, as
         the above call graph shows, the resume callback is guaranteed to be
         called before sun6i_dsi_attach(); it is called before child devices
         get their drivers attached.
      
         Therefore, part of the controller initialization will only run if the
         device is suspended between the calls to mipi_dsi_host_register() and
         component_add() (which ends up calling sun6i_dsi_encoder_enable()).
         Again, as shown by the above call graph, this is not the case. It
         appears that the controller happens to work because it is still
         initialized by the bootloader.
      
         Because the connector is hardcoded to always be connected, the
         device's runtime PM reference is not dropped until system suspend,
         when sun4i_drv_drm_sys_suspend() ends up calling
         sun6i_dsi_encoder_disable(). However, that is done as a system sleep
         PM hook, and at that point the system PM core has already taken
         another runtime PM reference, so sun6i_dsi_runtime_suspend() is
         not called. Likewise, by the time the PM core releases its reference,
         sun4i_drv_drm_sys_resume() has already re-enabled the encoder.
      
         So after system suspend and resume, we have *still never called*
         sun6i_dsi_inst_init(), and now that the rest of the display pipeline
         has been reset, the DSI host is unable to communicate with the panel,
         causing VBLANK timeouts.
      
      Fix all of these issues by inlining the runtime PM hooks into the
      encoder enable/disable functions, which are guaranteed to run after a
      panel is attached. This allows sun6i_dsi_inst_init() to be called
      unconditionally. Furthermore, this causes the hardware to be turned off
      during system suspend and reinitialized on resume, which was not
      happening before.
      
      Fixes: 133add5b ("drm/sun4i: Add Allwinner A31 MIPI-DSI controller support")
      Signed-off-by: default avatarSamuel Holland <samuel@sholland.org>
      Signed-off-by: default avatarMaxime Ripard <maxime@cerno.tech>
      Link: https://patchwork.freedesktop.org/patch/msgid/20200211072858.30784-4-samuel@sholland.org
      215be713
    • Samuel Holland's avatar
      drm/sun4i: dsi: Allow binding the host without a panel · 1a2703bd
      Samuel Holland authored
      Currently, the DSI host blocks binding the display pipeline until the
      panel is available. This unnecessarily prevents other display outpus
      from working, and adds logspam to dmesg when the panel driver is built
      as a module (the component master is unsuccessfully brought up several
      times during boot).
      
      Flip the dependency, instead requiring the host to be bound before the
      panel is attached. The panel driver provides no functionality outside of
      the display pipeline anyway.
      
      Since the panel is now probed after the DRM connector, we need a hotplug
      event to turn on the connector after the panel is attached.
      
      This has the added benefit of fixing panel module removal/insertion.
      Previously, the panel would be turned off when its module was removed.
      But because the connector state was hardcoded, nothing knew to turn the
      panel back on when it was re-attached. Now, with hotplug events
      available, the connector state will follow the panel module state, and
      the panel will be re-enabled properly.
      
      Fixes: 133add5b ("drm/sun4i: Add Allwinner A31 MIPI-DSI controller support")
      Signed-off-by: default avatarSamuel Holland <samuel@sholland.org>
      Signed-off-by: default avatarMaxime Ripard <maxime@cerno.tech>
      Link: https://patchwork.freedesktop.org/patch/msgid/20200211072858.30784-3-samuel@sholland.org
      1a2703bd
    • Samuel Holland's avatar
      drm/sun4i: dsi: Use NULL to signify "no panel" · 0e4e3fb4
      Samuel Holland authored
      The continued use of an ERR_PTR to signify "no panel" outside of
      sun6i_dsi_attach is confusing because it is a double negative. Because
      the connector always reports itself as connected, there is also the
      possibility of sending an ERR_PTR to drm_panel_get_modes(), which would
      crash.
      
      Solve both of these by only storing the panel pointer if it is valid.
      
      Fixes: 133add5b ("drm/sun4i: Add Allwinner A31 MIPI-DSI controller support")
      Signed-off-by: default avatarSamuel Holland <samuel@sholland.org>
      Signed-off-by: default avatarMaxime Ripard <maxime@cerno.tech>
      Link: https://patchwork.freedesktop.org/patch/msgid/20200211072858.30784-2-samuel@sholland.org
      0e4e3fb4
    • Samuel Holland's avatar
      drm/sun4i: dsi: Remove unused drv from driver context · dc84f091
      Samuel Holland authored
      This member is never used, so remove it.
      
      Fixes: 133add5b ("drm/sun4i: Add Allwinner A31 MIPI-DSI controller support")
      Signed-off-by: default avatarSamuel Holland <samuel@sholland.org>
      Signed-off-by: default avatarMaxime Ripard <maxime@cerno.tech>
      Link: https://patchwork.freedesktop.org/patch/msgid/20200211072858.30784-1-samuel@sholland.org
      dc84f091
  14. 26 Dec, 2019 3 commits
  15. 09 Dec, 2019 1 commit
    • Sam Ravnborg's avatar
      drm/panel: decouple connector from drm_panel · 06c4a9c2
      Sam Ravnborg authored
      To facilitate moving connector creation to display drivers,
      decouple the drm_connector from drm_panel.
      
      This patch adds a connector argument to drm_panel_get_modes().
      
      All users of drm_panel_get_modes() already had the connector
      available, so updating users was trivial.
      
      With this patch drm_panel no longer keeps a reference to the drm_connector.
      Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
      Reviewed-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      Acked-by: default avatarJeffrey Hugo <jeffrey.l.hugo@gmail.com>
      Cc: Thierry Reding <thierry.reding@gmail.com>
      Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
      Cc: Sam Ravnborg <sam@ravnborg.org>
      Cc: Andrzej Hajda <a.hajda@samsung.com>
      Cc: Neil Armstrong <narmstrong@baylibre.com>
      Cc: Jonas Karlman <jonas@kwiboo.se>
      Cc: Jernej Skrabec <jernej.skrabec@siol.net>
      Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Cc: Maxime Ripard <mripard@kernel.org>
      Cc: David Airlie <airlied@linux.ie>
      Cc: Daniel Vetter <daniel@ffwll.ch>
      Cc: Inki Dae <inki.dae@samsung.com>
      Cc: Joonyoung Shim <jy0922.shim@samsung.com>
      Cc: Seung-Woo Kim <sw0312.kim@samsung.com>
      Cc: Kyungmin Park <kyungmin.park@samsung.com>
      Cc: Kukjin Kim <kgene@kernel.org>
      Cc: Krzysztof Kozlowski <krzk@kernel.org>
      Cc: Stefan Agner <stefan@agner.ch>
      Cc: Alison Wang <alison.wang@nxp.com>
      Cc: Philipp Zabel <p.zabel@pengutronix.de>
      Cc: Shawn Guo <shawnguo@kernel.org>
      Cc: Sascha Hauer <s.hauer@pengutronix.de>
      Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
      Cc: Fabio Estevam <festevam@gmail.com>
      Cc: NXP Linux Team <linux-imx@nxp.com>
      Cc: CK Hu <ck.hu@mediatek.com>
      Cc: Matthias Brugger <matthias.bgg@gmail.com>
      Cc: Marek Vasut <marex@denx.de>
      Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
      Cc: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
      Cc: Sandy Huang <hjc@rock-chips.com>
      Cc: "Heiko Stübner" <heiko@sntech.de>
      Cc: Benjamin Gaignard <benjamin.gaignard@linaro.org>
      Cc: Vincent Abriou <vincent.abriou@st.com>
      Cc: Chen-Yu Tsai <wens@csie.org>
      Cc: Jonathan Hunter <jonathanh@nvidia.com>
      Cc: Torsten Duwe <duwe@lst.de>
      Cc: Vasily Khoruzhick <anarsoul@gmail.com>
      Cc: Icenowy Zheng <icenowy@aosc.io>
      Cc: Sean Paul <seanpaul@chromium.org>
      Cc: Linus Walleij <linus.walleij@linaro.org>
      Cc: Boris Brezillon <boris.brezillon@collabora.com>
      Cc: Hariprasad Kelam <hariprasad.kelam@gmail.com>
      Cc: Alexios Zavras <alexios.zavras@intel.com>
      Cc: Brian Masney <masneyb@onstation.org>
      Cc: Rob Clark <robdclark@chromium.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Allison Randal <allison@lohutok.net>
      Cc: Shayenne Moura <shayenneluzmoura@gmail.com>
      Cc: Abhinav Kumar <abhinavk@codeaurora.org>
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: linux-samsung-soc@vger.kernel.org
      Cc: linux-mediatek@lists.infradead.org
      Cc: linux-renesas-soc@vger.kernel.org
      Cc: linux-rockchip@lists.infradead.org
      Cc: linux-tegra@vger.kernel.org
      Link: https://patchwork.freedesktop.org/patch/msgid/20191207140353.23967-7-sam@ravnborg.org
      06c4a9c2
  16. 08 Oct, 2019 1 commit
    • Jagan Teki's avatar
      drm/sun4i: dsi: Fix video start delay computation · 9a197c86
      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 vbp term from the BSP code to refer
      only to the backporch, when in fact it was backporch + sync. Thus the
      driver incorrectly used the vertical 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-00029-g09e5b0ed0a58 #18
      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 495200a78b24980e ]---
      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 avatarIcenowy Zheng <icenowy@aosc.io>
      Signed-off-by: default avatarMaxime Ripard <mripard@kernel.org>
      Link: https://patchwork.freedesktop.org/patch/msgid/20191006160303.24413-2-icenowy@aosc.io
      9a197c86
  17. 07 Oct, 2019 2 commits
  18. 03 Oct, 2019 3 commits
    • Icenowy Zheng's avatar
      Revert "drm/sun4i: dsi: Change the start delay calculation" · a00d17e0
      Icenowy Zheng authored
      This reverts commit da676c6a.
      
      The original commit adds a start parameter to the calculation of the
      start delay according to some old BSP versions from Allwinner. However,
      there're two ways to add this delay -- add it in DSI controller or add
      it in the TCON. Add it in both controllers won't work.
      
      The code before this commit is picked from new versions of BSP kernel,
      which has a comment for the 1 that says "put start_delay to tcon". By
      checking the sun4i_tcon0_mode_set_cpu() in sun4i_tcon driver, it has
      already added this delay, so we shouldn't repeat to add the delay in DSI
      controller, otherwise the timing won't match.
      Signed-off-by: default avatarIcenowy Zheng <icenowy@aosc.io>
      Reviewed-by: default avatarJagan Teki <jagan@amarulasolutions.com>
      Signed-off-by: default avatarMaxime Ripard <mripard@kernel.org>
      Link: https://patchwork.freedesktop.org/patch/msgid/20191001080253.6135-2-icenowy@aosc.io
      a00d17e0
    • 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
  19. 21 Aug, 2019 1 commit
  20. 17 Jul, 2019 1 commit
  21. 16 May, 2019 2 commits
  22. 19 Feb, 2019 5 commits
  23. 08 Feb, 2019 1 commit
  24. 07 Feb, 2019 1 commit
  25. 24 Jan, 2019 1 commit
  26. 13 Jul, 2018 1 commit
  27. 10 Jul, 2018 1 commit