From: Michel Dänzer <michel.daen...@amd.com>

This reverts commit cb341a319f7e66f879d69af929c3dadfc1a8f31e.

The purpose of the refactor was for amdgpu_crtc_prepare/submit_flip to
be used by the DC code, but that's no longer the case.

Signed-off-by: Michel Dänzer <michel.daen...@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 147 ++++++----------------------
 drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h    |  17 ----
 2 files changed, 29 insertions(+), 135 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
index 7cf226dfb602..0415875656c1 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
@@ -138,56 +138,10 @@ static void amdgpu_unpin_work_func(struct work_struct 
*__work)
        kfree(work);
 }
 
-
-static void amdgpu_flip_work_cleanup(struct amdgpu_flip_work *work)
-{
-       int i;
-
-       amdgpu_bo_unref(&work->old_abo);
-       fence_put(work->excl);
-       for (i = 0; i < work->shared_count; ++i)
-               fence_put(work->shared[i]);
-       kfree(work->shared);
-       kfree(work);
-}
-
-static void amdgpu_flip_cleanup_unreserve(
-               struct amdgpu_flip_work *work,
-               struct amdgpu_bo *new_abo)
-{
-       amdgpu_bo_unreserve(new_abo);
-       amdgpu_flip_work_cleanup(work);
-}
-
-static void amdgpu_flip_cleanup_unpin(
-               struct amdgpu_flip_work *work,
-               struct amdgpu_bo *new_abo)
-{
-       if (unlikely(amdgpu_bo_unpin(new_abo) != 0))
-               DRM_ERROR("failed to unpin new abo in error path\n");
-       amdgpu_flip_cleanup_unreserve(work, new_abo);
-}
-
-void amdgpu_crtc_cleanup_flip_ctx(
-               struct amdgpu_flip_work *work,
-               struct amdgpu_bo *new_abo)
-{
-       if (unlikely(amdgpu_bo_reserve(new_abo, false) != 0)) {
-               DRM_ERROR("failed to reserve new abo in error path\n");
-               amdgpu_flip_work_cleanup(work);
-               return;
-       }
-       amdgpu_flip_cleanup_unpin(work, new_abo);
-}
-
-int amdgpu_crtc_prepare_flip(
-                               struct drm_crtc *crtc,
-                               struct drm_framebuffer *fb,
-                               struct drm_pending_vblank_event *event,
-                               uint32_t page_flip_flags,
-                               uint32_t target,
-                               struct amdgpu_flip_work **work_p,
-                               struct amdgpu_bo **new_abo_p)
+int amdgpu_crtc_page_flip_target(struct drm_crtc *crtc,
+                                struct drm_framebuffer *fb,
+                                struct drm_pending_vblank_event *event,
+                                uint32_t page_flip_flags, uint32_t target)
 {
        struct drm_device *dev = crtc->dev;
        struct amdgpu_device *adev = dev->dev_private;
@@ -200,7 +154,7 @@ int amdgpu_crtc_prepare_flip(
        unsigned long flags;
        u64 tiling_flags;
        u64 base;
-       int r;
+       int i, r;
 
        work = kzalloc(sizeof *work, GFP_KERNEL);
        if (work == NULL)
@@ -261,84 +215,41 @@ int amdgpu_crtc_prepare_flip(
                spin_unlock_irqrestore(&crtc->dev->event_lock, flags);
                r = -EBUSY;
                goto pflip_cleanup;
-
        }
-       spin_unlock_irqrestore(&crtc->dev->event_lock, flags);
-
-       *work_p = work;
-       *new_abo_p = new_abo;
 
-       return 0;
-
-pflip_cleanup:
-       amdgpu_crtc_cleanup_flip_ctx(work, new_abo);
-       return r;
-
-unpin:
-       amdgpu_flip_cleanup_unpin(work, new_abo);
-       return r;
-
-unreserve:
-       amdgpu_flip_cleanup_unreserve(work, new_abo);
-       return r;
-
-cleanup:
-       amdgpu_flip_work_cleanup(work);
-       return r;
-
-}
-
-void amdgpu_crtc_submit_flip(
-               struct drm_crtc *crtc,
-               struct drm_framebuffer *fb,
-               struct amdgpu_flip_work *work,
-               struct amdgpu_bo *new_abo)
-{
-       unsigned long flags;
-       struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
-
-       spin_lock_irqsave(&crtc->dev->event_lock, flags);
        amdgpu_crtc->pflip_status = AMDGPU_FLIP_PENDING;
        amdgpu_crtc->pflip_works = work;
 
+
+       DRM_DEBUG_DRIVER("crtc:%d[%p], pflip_stat:AMDGPU_FLIP_PENDING, work: 
%p,\n",
+                        amdgpu_crtc->crtc_id, amdgpu_crtc, work);
        /* update crtc fb */
        crtc->primary->fb = fb;
        spin_unlock_irqrestore(&crtc->dev->event_lock, flags);
-
-       DRM_DEBUG_DRIVER(
-                       "crtc:%d[%p], pflip_stat:AMDGPU_FLIP_PENDING, work: 
%p,\n",
-                       amdgpu_crtc->crtc_id, amdgpu_crtc, work);
-
        amdgpu_flip_work_func(&work->flip_work.work);
-}
+       return 0;
 
-int amdgpu_crtc_page_flip_target(struct drm_crtc *crtc,
-                         struct drm_framebuffer *fb,
-                         struct drm_pending_vblank_event *event,
-                         uint32_t page_flip_flags,
-                         uint32_t target)
-{
-       struct amdgpu_bo *new_abo;
-       struct amdgpu_flip_work *work;
-       int r = amdgpu_crtc_prepare_flip(
-                       crtc,
-                       fb,
-                       event,
-                       page_flip_flags,
-                       target,
-                       &work,
-                       &new_abo);
-
-       if (r)
-               return r;
-
-       amdgpu_crtc_submit_flip(
-                       crtc,
-                       fb,
-                       work,
-                       new_abo);
+pflip_cleanup:
+       if (unlikely(amdgpu_bo_reserve(new_abo, false) != 0)) {
+               DRM_ERROR("failed to reserve new abo in error path\n");
+               goto cleanup;
+       }
+unpin:
+       if (unlikely(amdgpu_bo_unpin(new_abo) != 0)) {
+               DRM_ERROR("failed to unpin new abo in error path\n");
+       }
+unreserve:
+       amdgpu_bo_unreserve(new_abo);
 
-       return 0;
+cleanup:
+       amdgpu_bo_unref(&work->old_abo);
+       fence_put(work->excl);
+       for (i = 0; i < work->shared_count; ++i)
+               fence_put(work->shared[i]);
+       kfree(work->shared);
+       kfree(work);
+
+       return r;
 }
 
 int amdgpu_crtc_set_config(struct drm_mode_set *set)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
index be3e8d66955e..9362a04eaa59 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
@@ -702,23 +702,6 @@ int amdgpu_crtc_page_flip_target(struct drm_crtc *crtc,
                                 struct drm_framebuffer *fb,
                                 struct drm_pending_vblank_event *event,
                                 uint32_t page_flip_flags, uint32_t target);
-void amdgpu_crtc_cleanup_flip_ctx(
-               struct amdgpu_flip_work *work,
-               struct amdgpu_bo *new_abo);
-int amdgpu_crtc_prepare_flip(struct drm_crtc *crtc,
-                         struct drm_framebuffer *fb,
-                         struct drm_pending_vblank_event *event,
-                         uint32_t page_flip_flags,
-                         uint32_t target,
-                         struct amdgpu_flip_work **work,
-                         struct amdgpu_bo **new_abo);
-
-void amdgpu_crtc_submit_flip(
-               struct drm_crtc *crtc,
-               struct drm_framebuffer *fb,
-               struct amdgpu_flip_work *work,
-               struct amdgpu_bo *new_abo);
-
 extern const struct drm_mode_config_funcs amdgpu_mode_funcs;
 
 #endif
-- 
2.11.0

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to