summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/exynos/exynos_drm_dsi.c
diff options
context:
space:
mode:
authorJoonyoung Shim <jy0922.shim@samsung.com>2015-10-23 11:43:44 +0900
committerSeung-Woo Kim <sw0312.kim@samsung.com>2016-12-14 13:48:18 +0900
commitceecbb3d76d29049ea998a83bcd19a59d244abea (patch)
treeed34a909a1c2690ce509c71aa19b2d2409e63c41 /drivers/gpu/drm/exynos/exynos_drm_dsi.c
parenteab36c75c962e793f802975b8c567c4e8c9ddddf (diff)
drm/exynos: fix waiting pageflip on i80 panel
If panel is use i80 interface, encoder should wait to complete prior pageflip before encoder disables panel because te interrupt is happened by panel. Upstream Exynos DRM driver doesn't need this because Exynos atomic commit procedures already does this job of waiting for pending updates to finish. Refer the commit c4533665d819 ("drm/exynos: wait all planes updates to finish") applied from v4.3-rc1 Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com> [fix build issue because of removed pending_flip] Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com>
Diffstat (limited to 'drivers/gpu/drm/exynos/exynos_drm_dsi.c')
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_dsi.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c
index 46d2ec7e2716..b1dd7ef7cbc4 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c
@@ -1552,9 +1552,18 @@ static int exynos_dsi_enable(struct exynos_dsi *dsi)
static void exynos_dsi_disable(struct exynos_dsi *dsi)
{
+ struct drm_encoder *encoder = dsi->display.encoder;
+
if (!(dsi->state & DSIM_STATE_ENABLED))
return;
+ /*
+ * If panel is use i80 interface, encoder should wait to complete prior
+ * pageflip before encoder disables panel because te interrupt is
+ * happened by panel.
+ */
+ exynos_drm_wait_for_pageflip(encoder->crtc);
+
dsi->state &= ~DSIM_STATE_VIDOUT_AVAILABLE;
drm_panel_disable(dsi->panel);