Signed-off-by: Andrey Grodzovsky <andrey.grodzov...@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h           |  1 -
 .../drm/amd/display/amdgpu_dm/amdgpu_dm_types.c    | 92 ++--------------------
 2 files changed, 6 insertions(+), 87 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
index 4c0a86e..3ff3c14 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
@@ -443,7 +443,6 @@ struct amdgpu_crtc {
        enum amdgpu_interrupt_state vsync_timer_enabled;
 
        int otg_inst;
-       uint32_t flip_flags;
        /* After Set Mode target will be non-NULL */
        struct dc_target *target;
 };
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c 
b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c
index a443b70..d4664bf 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c
@@ -1060,83 +1060,6 @@ static int dm_crtc_funcs_atomic_set_property(
        return 0;
 }
 
-
-static int amdgpu_atomic_helper_page_flip(struct drm_crtc *crtc,
-                               struct drm_framebuffer *fb,
-                               struct drm_pending_vblank_event *event,
-                               uint32_t flags)
-{
-       struct drm_plane *plane = crtc->primary;
-       struct amdgpu_crtc *acrtc = to_amdgpu_crtc(crtc);
-       struct drm_atomic_state *state;
-       struct drm_plane_state *plane_state;
-       struct drm_crtc_state *crtc_state;
-       int ret = 0;
-
-       state = drm_atomic_state_alloc(plane->dev);
-       if (!state)
-               return -ENOMEM;
-
-       ret = drm_crtc_vblank_get(crtc);
-       if (ret)
-               return ret;
-
-       state->acquire_ctx = drm_modeset_legacy_acquire_ctx(crtc);
-retry:
-       crtc_state = drm_atomic_get_crtc_state(state, crtc);
-       if (IS_ERR(crtc_state)) {
-               ret = PTR_ERR(crtc_state);
-               goto fail;
-       }
-       crtc_state->event = event;
-
-       plane_state = drm_atomic_get_plane_state(state, plane);
-       if (IS_ERR(plane_state)) {
-               ret = PTR_ERR(plane_state);
-               goto fail;
-       }
-
-       ret = drm_atomic_set_crtc_for_plane(plane_state, crtc);
-       if (ret != 0)
-               goto fail;
-       drm_atomic_set_fb_for_plane(plane_state, fb);
-
-       /* Make sure we don't accidentally do a full modeset. */
-       state->allow_modeset = false;
-       if (!crtc_state->active) {
-               DRM_DEBUG_ATOMIC("[CRTC:%d] disabled, rejecting legacy flip\n",
-                                crtc->base.id);
-               ret = -EINVAL;
-               goto fail;
-       }
-       acrtc->flip_flags = flags;
-
-       ret = drm_atomic_nonblocking_commit(state);
-
-fail:
-       if (ret == -EDEADLK)
-               goto backoff;
-
-       if (ret)
-               drm_crtc_vblank_put(crtc);
-
-       drm_atomic_state_put(state);
-
-       return ret;
-backoff:
-       drm_atomic_state_clear(state);
-       drm_atomic_legacy_backoff(state);
-
-       /*
-        * Someone might have exchanged the framebuffer while we dropped locks
-        * in the backoff code. We need to fix up the fb refcount tracking the
-        * core does for us.
-        */
-       plane->old_fb = plane->fb;
-
-       goto retry;
-}
-
 /* Implemented only the options currently availible for the driver */
 static const struct drm_crtc_funcs amdgpu_dm_crtc_funcs = {
        .reset = drm_atomic_helper_crtc_reset,
@@ -1145,7 +1068,7 @@ static int amdgpu_atomic_helper_page_flip(struct drm_crtc 
*crtc,
        .destroy = amdgpu_dm_crtc_destroy,
        .gamma_set = amdgpu_dm_atomic_crtc_gamma_set,
        .set_config = drm_atomic_helper_set_config,
-       .page_flip = amdgpu_atomic_helper_page_flip,
+       .page_flip_target = drm_atomic_helper_page_flip_target,
        .atomic_duplicate_state = drm_atomic_helper_crtc_duplicate_state,
        .atomic_destroy_state = drm_atomic_helper_crtc_destroy_state,
        .atomic_set_property = dm_crtc_funcs_atomic_set_property
@@ -1679,7 +1602,7 @@ static bool page_flip_needed(
                                    sizeof(old_state_tmp)) == 0 ? true:false;
        if (new_state->crtc && page_flip_required == false) {
                acrtc_new = to_amdgpu_crtc(new_state->crtc);
-               if (acrtc_new->flip_flags & DRM_MODE_PAGE_FLIP_ASYNC)
+               if (new_state->pflip_flags & DRM_MODE_PAGE_FLIP_ASYNC)
                        page_flip_required = true;
        }
        return page_flip_required;
@@ -2760,7 +2683,6 @@ int amdgpu_dm_atomic_commit(
        for_each_plane_in_state(state, plane, old_plane_state, i) {
                struct drm_plane_state *plane_state = plane->state;
                struct drm_crtc *crtc = plane_state->crtc;
-               struct amdgpu_crtc *acrtc = to_amdgpu_crtc(crtc);
                struct drm_framebuffer *fb = plane_state->fb;
 
                if (!fb || !crtc || !crtc->state->planes_changed ||
@@ -2771,10 +2693,9 @@ int amdgpu_dm_atomic_commit(
                        ret = amdgpu_crtc_page_flip_target(crtc,
                                                           fb,
                                                           crtc->state->event,
-                                                          acrtc->flip_flags,
-                                                          
drm_crtc_vblank_count(crtc));
-                       /*clean up the flags for next usage*/
-                       acrtc->flip_flags = 0;
+                                                          
plane_state->pflip_flags,
+                                                          
crtc->state->target_vblank);
+
                        if (ret)
                                break;
                }
@@ -3143,8 +3064,7 @@ int amdgpu_dm_atomic_check(struct drm_device *dev,
                         * 1. This commit is not a page flip.
                         * 2. This commit is a page flip, and targets are 
created.
                         */
-                       if (!page_flip_needed(plane_state, old_plane_state,
-                                             true) ||
+                       if (!page_flip_needed(plane_state, old_plane_state, 
true) ||
                                        action == DM_COMMIT_ACTION_DPMS_ON ||
                                        action == DM_COMMIT_ACTION_SET) {
                                struct dc_surface *surface;
-- 
1.9.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to