summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_crtc.c101
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_fb.c60
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_fb.h9
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_plane.c13
4 files changed, 0 insertions, 183 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_crtc.c b/drivers/gpu/drm/exynos/exynos_drm_crtc.c
index e4f187d6285..1ea248c032b 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_crtc.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_crtc.c
@@ -22,8 +22,6 @@
#include "exynos_drm_fb.h"
#include "exynos_drm_gem.h"
-#include <linux/dmabuf-sync.h>
-
#define to_exynos_crtc(x) container_of(x, struct exynos_drm_crtc,\
drm_crtc)
@@ -57,18 +55,6 @@ struct exynos_drm_crtc {
enum exynos_crtc_mode mode;
wait_queue_head_t pending_flip_queue;
atomic_t pending_flip;
- struct list_head sync_committed;
-};
-
-static void exynos_drm_dmabuf_sync_free(void *priv)
-{
- struct drm_pending_vblank_event *event = priv;
-
- event->event.reserved = 0;
-}
-
-static struct dmabuf_sync_priv_ops dmabuf_sync_ops = {
- .free = exynos_drm_dmabuf_sync_free,
};
static void exynos_drm_crtc_dpms(struct drm_crtc *crtc, int mode)
@@ -139,7 +125,6 @@ exynos_drm_crtc_mode_set(struct drm_crtc *crtc, struct drm_display_mode *mode,
{
struct exynos_drm_crtc *exynos_crtc = to_exynos_crtc(crtc);
struct drm_plane *plane = exynos_crtc->plane;
- struct dmabuf_sync *sync;
unsigned int crtc_w;
unsigned int crtc_h;
int ret;
@@ -161,15 +146,6 @@ exynos_drm_crtc_mode_set(struct drm_crtc *crtc, struct drm_display_mode *mode,
plane->crtc = crtc;
plane->fb = crtc->fb;
- if (!dmabuf_sync_is_supported())
- return 0;
-
- sync = (struct dmabuf_sync *)exynos_drm_dmabuf_sync_work(crtc->fb);
- if (IS_ERR(sync)) {
- /* just ignore buffer synchronization this time. */
- return 0;
- }
-
return 0;
}
@@ -214,21 +190,12 @@ static void exynos_drm_crtc_load_lut(struct drm_crtc *crtc)
static int exynos_drm_crtc_mode_set_base(struct drm_crtc *crtc, int x, int y,
struct drm_framebuffer *old_fb)
{
- struct dmabuf_sync *sync;
int ret;
ret = exynos_drm_crtc_mode_set_commit(crtc, x, y, old_fb);
if (ret < 0)
return ret;
- if (!dmabuf_sync_is_supported())
- return 0;
-
- sync = (struct dmabuf_sync *)exynos_drm_dmabuf_sync_work(crtc->fb);
- if (IS_ERR(sync))
- /* just ignore buffer synchronization this time. */
- return 0;
-
return 0;
}
@@ -277,11 +244,6 @@ static int exynos_drm_crtc_page_flip(struct drm_crtc *crtc,
}
if (event) {
- struct exynos_drm_fb *exynos_fb;
- struct drm_gem_object *obj;
- struct dmabuf_sync *sync;
- unsigned int i;
-
mutex_lock(&dev->struct_mutex);
/*
@@ -297,45 +259,6 @@ static int exynos_drm_crtc_page_flip(struct drm_crtc *crtc,
return ret;
}
- if (!dmabuf_sync_is_supported())
- goto out_fence;
-
- sync = dmabuf_sync_init("DRM", &dmabuf_sync_ops, event);
- if (IS_ERR(sync)) {
- WARN_ON(1);
- goto out_fence;
- }
-
- exynos_fb = to_exynos_fb(fb);
-
- for (i = 0; i < exynos_fb->buf_cnt; i++) {
- if (!exynos_fb->exynos_gem_obj[i]) {
- WARN_ON(1);
- continue;
- }
-
- obj = &exynos_fb->exynos_gem_obj[i]->base;
- if (!obj->dma_buf)
- continue;
-
- ret = dmabuf_sync_get(sync,
- obj->dma_buf, (unsigned int)crtc,
- DMA_BUF_ACCESS_DMA_R);
- if (WARN_ON(ret < 0))
- continue;
- }
-
- ret = dmabuf_sync_wait_all(sync);
- if (ret < 0) {
- dmabuf_sync_put_all(sync);
- dmabuf_sync_fini(sync);
- goto out_fence;
- }
-
- event->event.reserved = (unsigned long)sync;
-
-out_fence:
-
spin_lock_irq(&dev->event_lock);
list_add_tail(&event->base.link,
&dev_priv->pageflip_event_list);
@@ -463,8 +386,6 @@ int exynos_drm_crtc_create(struct exynos_drm_manager *manager)
return -ENOMEM;
}
- INIT_LIST_HEAD(&exynos_crtc->sync_committed);
-
crtc = &exynos_crtc->drm_crtc;
private->crtc[manager->pipe] = crtc;
@@ -515,19 +436,6 @@ void exynos_drm_crtc_finish_pageflip(struct drm_device *dev, int pipe)
struct exynos_drm_crtc *exynos_crtc = to_exynos_crtc(drm_crtc);
unsigned long flags;
- if (!list_empty(&exynos_crtc->sync_committed) &&
- dmabuf_sync_is_supported()) {
- struct dmabuf_sync *sync;
-
- sync = list_first_entry(&exynos_crtc->sync_committed,
- struct dmabuf_sync, list);
- if (!dmabuf_sync_signal_all(sync)) {
- list_del_init(&sync->list);
- dmabuf_sync_put_all(sync);
- dmabuf_sync_fini(sync);
- }
- }
-
spin_lock_irqsave(&dev->event_lock, flags);
list_for_each_entry_safe(e, t, &dev_priv->pageflip_event_list,
@@ -536,15 +444,6 @@ void exynos_drm_crtc_finish_pageflip(struct drm_device *dev, int pipe)
if (pipe != e->pipe)
continue;
- if (e->event.reserved && dmabuf_sync_is_supported()) {
- struct dmabuf_sync *sync;
-
- sync = (struct dmabuf_sync *)e->event.reserved;
- e->event.reserved = 0;
- list_add_tail(&sync->list,
- &exynos_crtc->sync_committed);
- }
-
list_del(&e->base.link);
drm_send_vblank_event(dev, -1, e);
drm_vblank_put(dev, pipe);
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fb.c b/drivers/gpu/drm/exynos/exynos_drm_fb.c
index 305f76d4de7..bef99bb1755 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fb.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_fb.c
@@ -25,8 +25,6 @@
#include "exynos_drm_iommu.h"
#include "exynos_drm_crtc.h"
-#include <linux/dmabuf-sync.h>
-
static int check_fb_gem_memory_type(struct drm_device *drm_dev,
struct exynos_drm_gem_obj *exynos_gem_obj)
{
@@ -159,64 +157,6 @@ exynos_drm_framebuffer_init(struct drm_device *dev,
return &exynos_fb->fb;
}
-#ifdef CONFIG_DMABUF_SYNC
-void *exynos_drm_dmabuf_sync_work(struct drm_framebuffer *fb)
-{
- struct exynos_drm_fb *exynos_fb;
- struct drm_gem_object *obj;
- struct dmabuf_sync *sync;
- unsigned int i;
- int ret = 0;
-
- sync = dmabuf_sync_init("DRM", NULL, NULL);
- if (IS_ERR(sync)) {
- WARN_ON(1);
- goto out_dmabuf_sync;
- }
-
- exynos_fb = to_exynos_fb(fb);
-
- for (i = 0; i < exynos_fb->buf_cnt; i++) {
- if (!exynos_fb->exynos_gem_obj[i]) {
- WARN_ON(1);
- continue;
- }
-
- obj = &exynos_fb->exynos_gem_obj[i]->base;
- if (!obj->export_dma_buf)
- continue;
-
- /*
- * set dmabuf to fence and registers reservation
- * object to reservation entry.
- */
- ret = dmabuf_sync_get(sync,
- obj->export_dma_buf,
- DMA_BUF_ACCESS_DMA_R);
- if (WARN_ON(ret < 0))
- continue;
-
- }
-
- ret = dmabuf_sync_wait_all(sync);
- if (ret < 0) {
- dmabuf_sync_put_all(sync);
- dmabuf_sync_fini(sync);
- sync = ERR_PTR(ret);
- goto out_dmabuf_sync;
- }
-
- /* buffer synchronization is done by wait_for_vblank so just signal. */
- dmabuf_sync_signal_all(sync);
-
- dmabuf_sync_put_all(sync);
- dmabuf_sync_fini(sync);
-
-out_dmabuf_sync:
- return sync;
-}
-#endif
-
static u32 exynos_drm_format_num_buffers(struct drm_mode_fb_cmd2 *mode_cmd)
{
unsigned int cnt = 0;
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fb.h b/drivers/gpu/drm/exynos/exynos_drm_fb.h
index dbedbfc4a7f..3163e41c8e0 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fb.h
+++ b/drivers/gpu/drm/exynos/exynos_drm_fb.h
@@ -47,13 +47,4 @@ void exynos_drm_fb_set_buf_cnt(struct drm_framebuffer *fb,
/* get a buffer count to drm framebuffer. */
unsigned int exynos_drm_fb_get_buf_cnt(struct drm_framebuffer *fb);
-#ifdef CONFIG_DMABUF_SYNC
-void *exynos_drm_dmabuf_sync_work(struct drm_framebuffer *fb);
-#else
-static inline void *exynos_drm_dmabuf_sync_work(struct drm_framebuffer *fb)
-{
- return ERR_PTR(0);
-}
-#endif
-
#endif
diff --git a/drivers/gpu/drm/exynos/exynos_drm_plane.c b/drivers/gpu/drm/exynos/exynos_drm_plane.c
index e2e05064391..8371cbd7631 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_plane.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_plane.c
@@ -18,8 +18,6 @@
#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 {
@@ -181,7 +179,6 @@ 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,
@@ -195,16 +192,6 @@ 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;
}