summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/exynos/exynos_drm_plane.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/exynos/exynos_drm_plane.c')
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_plane.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_plane.c b/drivers/gpu/drm/exynos/exynos_drm_plane.c
index fcb0652e77d..c9a034f0033 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_plane.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_plane.c
@@ -18,6 +18,8 @@
#include "exynos_drm_gem.h"
#include "exynos_drm_plane.h"
+#include <linux/dmabuf-sync.h>
+
#define to_exynos_plane(x) container_of(x, struct exynos_plane, base)
struct exynos_plane {
@@ -184,6 +186,7 @@ exynos_update_plane(struct drm_plane *plane, struct drm_crtc *crtc,
uint32_t src_x, uint32_t src_y,
uint32_t src_w, uint32_t src_h)
{
+ struct dmabuf_sync *sync;
int ret;
ret = exynos_plane_mode_set(plane, crtc, fb, crtc_x, crtc_y,
@@ -197,6 +200,16 @@ exynos_update_plane(struct drm_plane *plane, struct drm_crtc *crtc,
exynos_plane_commit(plane);
exynos_plane_dpms(plane, DRM_MODE_DPMS_ON);
+ if (!dmabuf_sync_is_supported())
+ return 0;
+
+ sync = (struct dmabuf_sync *)exynos_drm_dmabuf_sync_work(fb);
+ if (IS_ERR(sync)) {
+ WARN_ON(1);
+ /* just ignore buffer synchronization this time. */
+ return 0;
+ }
+
return 0;
}