linux/drivers/gpu/drm/msm
Jeffrey Hugo 78e31c4226 drm/msm/dsi: Implement reset correctly
On msm8998, vblank timeouts are observed because the DSI controller is not
reset properly, which ends up stalling the MDP.  This is because the reset
logic is not correct per the hardware documentation.

The documentation states that after asserting reset, software should wait
some time (no indication of how long), or poll the status register until it
returns 0 before deasserting reset.

wmb() is insufficient for this purpose since it just ensures ordering, not
timing between writes.  Since asserting and deasserting reset occurs on the
same register, ordering is already guaranteed by the architecture, making
the wmb extraneous.

Since we would define a timeout for polling the status register to avoid a
possible infinite loop, lets just use a static delay of 20 ms, since 16.666
ms is the time available to process one frame at 60 fps.

Fixes: a689554ba6 ("drm/msm: Initial add DSI connector support")
Cc: Hai Li <hali@codeaurora.org>
Cc: Rob Clark <robdclark@gmail.com>
Signed-off-by: Jeffrey Hugo <jeffrey.l.hugo@gmail.com>
Reviewed-by: Sean Paul <sean@poorly.run>
[seanpaul renamed RESET_DELAY to DSI_RESET_TOGGLE_DELAY_MS]
Signed-off-by: Sean Paul <seanpaul@chromium.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20191011133939.16551-1-jeffrey.l.hugo@gmail.com
2019-10-11 14:04:31 -04:00
..
adreno drm/msm: Use generic bulk clock function 2019-09-03 16:16:58 -07:00
disp drm/msm: remove unlikely() from WARN_ON() conditions 2019-09-04 08:42:45 -07:00
dsi drm/msm/dsi: Implement reset correctly 2019-10-11 14:04:31 -04:00
edp treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 284 2019-06-05 17:36:37 +02:00
hdmi drm/msm/hdmi: Convert to use GPIO descriptors 2019-09-03 16:16:58 -07:00
Kconfig drm/msm: Remove Kconfig default 2019-09-03 16:16:59 -07:00
Makefile drm/msm: add atomic traces 2019-09-03 16:17:02 -07:00
msm_atomic_trace.h drm/msm: add atomic traces 2019-09-03 16:17:02 -07:00
msm_atomic_tracepoints.c drm/msm: add atomic traces 2019-09-03 16:17:02 -07:00
msm_atomic.c drm/msm: add atomic traces 2019-09-03 16:17:02 -07:00
msm_debugfs.c drm/msm: drop use of drmP.h 2019-09-03 16:16:57 -07:00
msm_debugfs.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
msm_drv.c drm/msm: async commit support 2019-09-03 16:17:01 -07:00
msm_drv.h drm/msm: async commit support 2019-09-03 16:17:01 -07:00
msm_fb.c drm/msm: drop use of drmP.h 2019-09-03 16:16:57 -07:00
msm_fbdev.c drm/msm: Transition console to msm framebuffer 2019-09-03 16:16:58 -07:00
msm_fence.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
msm_fence.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
msm_gem_prime.c drm/msm: drop use of drmP.h 2019-09-03 16:16:57 -07:00
msm_gem_shrinker.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
msm_gem_submit.c drm/msm: Use struct_size() helper 2019-09-03 16:16:58 -07:00
msm_gem_vma.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
msm_gem.c drm/msm: Use the correct dma_sync calls harder 2019-09-04 10:05:05 -07:00
msm_gem.h dma-buf: rename reservation_object to dma_resv 2019-08-13 09:09:30 +02:00
msm_gpu_trace.h drm/msm: add atomic traces 2019-09-03 16:17:02 -07:00
msm_gpu_tracepoints.c drm/msm/gpu: Add trace events for tracking GPU submissions 2018-12-11 13:05:28 -05:00
msm_gpu.c drm/msm: Use generic bulk clock function 2019-09-03 16:16:58 -07:00
msm_gpu.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
msm_gpummu.c drm/msm: drop use of drmP.h 2019-09-03 16:16:57 -07:00
msm_iommu.c drm main pull request for v5.3-rc1 (sans mm changes) 2019-07-15 19:04:27 -07:00
msm_kms.h drm/msm/dpu: async commit support 2019-09-03 16:17:01 -07:00
msm_mmu.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
msm_perf.c drm/msm: drop use of drmP.h 2019-09-03 16:16:57 -07:00
msm_rd.c drm/msm: drop use of drmP.h 2019-09-03 16:16:57 -07:00
msm_ringbuffer.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
msm_ringbuffer.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
msm_submitqueue.c drm/msm: drop use of drmP.h 2019-09-03 16:16:57 -07:00
NOTES