diff options
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_crtc.c | 101 | ||||
-rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_fb.c | 60 | ||||
-rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_fb.h | 9 | ||||
-rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_plane.c | 13 |
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; } |