]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/commitdiff
drm: Add acquire ctx parameter to ->page_flip(_target)
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 22 Mar 2017 21:50:50 +0000 (22:50 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 29 Mar 2017 07:50:38 +0000 (09:50 +0200)
Again just going through the motions, no functional changes in here.

Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Ben Skeggs <bskeggs@redhat.com>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: Eric Anholt <eric@anholt.net>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Christian König <christian.koenig@amd.com>
Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>t
Link: http://patchwork.freedesktop.org/patch/msgid/20170322215058.8671-12-daniel.vetter@ffwll.ch
16 files changed:
drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
drivers/gpu/drm/armada/armada_crtc.c
drivers/gpu/drm/bochs/bochs_kms.c
drivers/gpu/drm/drm_atomic_helper.c
drivers/gpu/drm/drm_plane.c
drivers/gpu/drm/nouveau/nouveau_display.c
drivers/gpu/drm/nouveau/nouveau_display.h
drivers/gpu/drm/radeon/radeon_display.c
drivers/gpu/drm/shmobile/shmob_drm_crtc.c
drivers/gpu/drm/udl/udl_modeset.c
drivers/gpu/drm/vc4/vc4_crtc.c
drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c
drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
include/drm/drm_atomic_helper.h
include/drm/drm_crtc.h

index 39fc388f222ac61966eb7199e6727f913c745dd3..7b4fe91d3aecd82ea6ecb6b747bfc51118ca232b 100644 (file)
@@ -311,7 +311,8 @@ 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)
+                                uint32_t target,
+                                struct drm_modeset_acquire_ctx *ctx)
 {
        struct amdgpu_bo *new_abo;
        struct amdgpu_flip_work *work;
index c12497bd38895e5668351fb689524fb24524ec35..8573a818323f6e5dbfa2c90cde9ba8156e703e22 100644 (file)
@@ -594,7 +594,8 @@ int amdgpu_crtc_set_config(struct drm_mode_set *set);
 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);
+                                uint32_t page_flip_flags, uint32_t target,
+                                struct drm_modeset_acquire_ctx *ctx);
 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,
index 1341e0b9368a4f796afcb654284e9043b9d7cfd0..4fe19fde84f9624dbae3bdbc062e282401f617c7 100644 (file)
@@ -1027,7 +1027,8 @@ static void armada_drm_crtc_destroy(struct drm_crtc *crtc)
  * and a mode_set.
  */
 static int armada_drm_crtc_page_flip(struct drm_crtc *crtc,
-       struct drm_framebuffer *fb, struct drm_pending_vblank_event *event, uint32_t page_flip_flags)
+       struct drm_framebuffer *fb, struct drm_pending_vblank_event *event, uint32_t page_flip_flags,
+       struct drm_modeset_acquire_ctx *ctx)
 {
        struct armada_crtc *dcrtc = drm_to_armada_crtc(crtc);
        struct armada_frame_work *work;
index d5e63eff357b08bb6fcf4b5abb693e64d3c16366..6a91e62da2f4aee18e423b90076bbfcbd51d1e05 100644 (file)
@@ -96,7 +96,8 @@ static void bochs_crtc_commit(struct drm_crtc *crtc)
 static int bochs_crtc_page_flip(struct drm_crtc *crtc,
                                struct drm_framebuffer *fb,
                                struct drm_pending_vblank_event *event,
-                               uint32_t page_flip_flags)
+                               uint32_t page_flip_flags,
+                               struct drm_modeset_acquire_ctx *ctx)
 {
        struct bochs_device *bochs =
                container_of(crtc, struct bochs_device, crtc);
index cc6e2772b32f2f6c7652759d67b939ecc8a4520e..96561ecf736f9f083cc70edd428f1abead60e0c1 100644 (file)
@@ -2859,6 +2859,7 @@ static int page_flip_common(
  * @fb: DRM framebuffer
  * @event: optional DRM event to signal upon completion
  * @flags: flip flags for non-vblank sync'ed updates
+ * @ctx: lock acquisition context
  *
  * Provides a default &drm_crtc_funcs.page_flip implementation
  * using the atomic driver interface.
@@ -2872,7 +2873,8 @@ static int page_flip_common(
 int drm_atomic_helper_page_flip(struct drm_crtc *crtc,
                                struct drm_framebuffer *fb,
                                struct drm_pending_vblank_event *event,
-                               uint32_t flags)
+                               uint32_t flags,
+                               struct drm_modeset_acquire_ctx *ctx)
 {
        struct drm_plane *plane = crtc->primary;
        struct drm_atomic_state *state;
@@ -2920,6 +2922,7 @@ EXPORT_SYMBOL(drm_atomic_helper_page_flip);
  * @event: optional DRM event to signal upon completion
  * @flags: flip flags for non-vblank sync'ed updates
  * @target: specifying the target vblank period when the flip to take effect
+ * @ctx: lock acquisition context
  *
  * Provides a default &drm_crtc_funcs.page_flip_target implementation.
  * Similar to drm_atomic_helper_page_flip() with extra parameter to specify
@@ -2933,7 +2936,8 @@ int drm_atomic_helper_page_flip_target(
                                struct drm_framebuffer *fb,
                                struct drm_pending_vblank_event *event,
                                uint32_t flags,
-                               uint32_t target)
+                               uint32_t target,
+                               struct drm_modeset_acquire_ctx *ctx)
 {
        struct drm_plane *plane = crtc->primary;
        struct drm_atomic_state *state;
index 62e833ffeffdfcd57af7621bfc34690afaeec20a..373e980d698dc5cab80421c8ac927a2ad3b9a548 100644 (file)
@@ -932,9 +932,11 @@ retry:
        if (crtc->funcs->page_flip_target)
                ret = crtc->funcs->page_flip_target(crtc, fb, e,
                                                    page_flip->flags,
-                                                   target_vblank);
+                                                   target_vblank,
+                                                   &ctx);
        else
-               ret = crtc->funcs->page_flip(crtc, fb, e, page_flip->flags);
+               ret = crtc->funcs->page_flip(crtc, fb, e, page_flip->flags,
+                                            &ctx);
        if (ret) {
                if (page_flip->flags & DRM_MODE_PAGE_FLIP_EVENT)
                        drm_event_cancel_free(dev, &e->base);
index c014bae7c5e7a667fff149febeec1c554337d189..6104f61b00fcb02d6cb18b68dba54dcea3f16045 100644 (file)
@@ -792,7 +792,8 @@ fail:
 
 int
 nouveau_crtc_page_flip(struct drm_crtc *crtc, struct drm_framebuffer *fb,
-                      struct drm_pending_vblank_event *event, u32 flags)
+                      struct drm_pending_vblank_event *event, u32 flags,
+                      struct drm_modeset_acquire_ctx *ctx)
 {
        const int swap_interval = (flags & DRM_MODE_PAGE_FLIP_ASYNC) ? 0 : 1;
        struct drm_device *dev = crtc->dev;
index 4a75df06c139cf9a7e815b6523c69d7f9ede91c9..8b33e1db247e01bd7fa6edfdb6b29e92187cc694 100644 (file)
@@ -76,7 +76,8 @@ int  nouveau_display_vblstamp(struct drm_device *, unsigned int, int *,
 
 int  nouveau_crtc_page_flip(struct drm_crtc *crtc, struct drm_framebuffer *fb,
                            struct drm_pending_vblank_event *event,
-                           uint32_t page_flip_flags);
+                           uint32_t page_flip_flags,
+                           struct drm_modeset_acquire_ctx *ctx);
 int  nouveau_finish_page_flip(struct nouveau_channel *,
                              struct nouveau_page_flip_state *);
 
index aea8b62835a4ad91b23d906c267e3c7b12432033..31020db573d5665131fb5dc67948624c784f3492 100644 (file)
@@ -485,7 +485,8 @@ static int radeon_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)
+                                       uint32_t target,
+                                       struct drm_modeset_acquire_ctx *ctx)
 {
        struct drm_device *dev = crtc->dev;
        struct radeon_device *rdev = dev->dev_private;
index 5fcabc04f307101169c99f65b2c66453e03a31ce..e7738939a86dc9f3f8b9c21825f79536f233beb2 100644 (file)
@@ -449,7 +449,8 @@ void shmob_drm_crtc_finish_page_flip(struct shmob_drm_crtc *scrtc)
 static int shmob_drm_crtc_page_flip(struct drm_crtc *crtc,
                                    struct drm_framebuffer *fb,
                                    struct drm_pending_vblank_event *event,
-                                   uint32_t page_flip_flags)
+                                   uint32_t page_flip_flags,
+                                   struct drm_modeset_acquire_ctx *ctx)
 {
        struct shmob_drm_crtc *scrtc = to_shmob_crtc(crtc);
        struct drm_device *dev = scrtc->crtc.dev;
index f2b2481cad525785868444002289803c42e1ab64..5bcae76497959bf3a14ba483df525eb052dd6300 100644 (file)
@@ -361,7 +361,8 @@ static void udl_crtc_destroy(struct drm_crtc *crtc)
 static int udl_crtc_page_flip(struct drm_crtc *crtc,
                              struct drm_framebuffer *fb,
                              struct drm_pending_vblank_event *event,
-                             uint32_t page_flip_flags)
+                             uint32_t page_flip_flags,
+                             struct drm_modeset_acquire_ctx *ctx)
 {
        struct udl_framebuffer *ufb = to_udl_fb(fb);
        struct drm_device *dev = crtc->dev;
index 24edd0c22cc9b6094395e213e6cceeafa17c0678..865e9f494bcc52d32e86ccc43cefc125452c43a7 100644 (file)
@@ -807,12 +807,13 @@ static int vc4_async_page_flip(struct drm_crtc *crtc,
 static int vc4_page_flip(struct drm_crtc *crtc,
                         struct drm_framebuffer *fb,
                         struct drm_pending_vblank_event *event,
-                        uint32_t flags)
+                        uint32_t flags,
+                        struct drm_modeset_acquire_ctx *ctx)
 {
        if (flags & DRM_MODE_PAGE_FLIP_ASYNC)
                return vc4_async_page_flip(crtc, fb, event, flags);
        else
-               return drm_atomic_helper_page_flip(crtc, fb, event, flags);
+               return drm_atomic_helper_page_flip(crtc, fb, event, flags, ctx);
 }
 
 static struct drm_crtc_state *vc4_crtc_duplicate_state(struct drm_crtc *crtc)
index d4268efc37d262459a49917c588627a97ce8c8bc..53cf3be7a902dac82bb22d2ff2ee43a5b4e38cbe 100644 (file)
@@ -395,7 +395,8 @@ static int vmw_sou_crtc_set_config(struct drm_mode_set *set)
 static int vmw_sou_crtc_page_flip(struct drm_crtc *crtc,
                                  struct drm_framebuffer *fb,
                                  struct drm_pending_vblank_event *event,
-                                 uint32_t flags)
+                                 uint32_t flags,
+                                 struct drm_modeset_acquire_ctx *ctx)
 {
        struct vmw_private *dev_priv = vmw_priv(crtc->dev);
        struct drm_framebuffer *old_fb = crtc->primary->fb;
index b27cd18ee66a3fe0f01105954fb6f48f74d24043..85e12309cb71b17be1527eef7ca1effb3c6b9020 100644 (file)
@@ -649,7 +649,8 @@ static int vmw_stdu_crtc_set_config(struct drm_mode_set *set)
 static int vmw_stdu_crtc_page_flip(struct drm_crtc *crtc,
                                   struct drm_framebuffer *new_fb,
                                   struct drm_pending_vblank_event *event,
-                                  uint32_t flags)
+                                  uint32_t flags,
+                                  struct drm_modeset_acquire_ctx *ctx)
 
 {
        struct vmw_private *dev_priv = vmw_priv(crtc->dev);
index 73554fff086aa9b393ae59c18ec9a1b1ac29e155..9675cacb72a392433d42156a8a98eaf942af9f80 100644 (file)
@@ -125,13 +125,15 @@ int drm_atomic_helper_connector_set_property(struct drm_connector *connector,
 int drm_atomic_helper_page_flip(struct drm_crtc *crtc,
                                struct drm_framebuffer *fb,
                                struct drm_pending_vblank_event *event,
-                               uint32_t flags);
+                               uint32_t flags,
+                               struct drm_modeset_acquire_ctx *ctx);
 int drm_atomic_helper_page_flip_target(
                                struct drm_crtc *crtc,
                                struct drm_framebuffer *fb,
                                struct drm_pending_vblank_event *event,
                                uint32_t flags,
-                               uint32_t target);
+                               uint32_t target,
+                               struct drm_modeset_acquire_ctx *ctx);
 int drm_atomic_helper_connector_dpms(struct drm_connector *connector,
                                     int mode);
 struct drm_encoder *
index c1a75a9c81c287dd9b1ad80205f669be57c4a92a..1a525ce66468df8fd8b11fbbfe4fc23174142841 100644 (file)
@@ -405,7 +405,8 @@ struct drm_crtc_funcs {
        int (*page_flip)(struct drm_crtc *crtc,
                         struct drm_framebuffer *fb,
                         struct drm_pending_vblank_event *event,
-                        uint32_t flags);
+                        uint32_t flags,
+                        struct drm_modeset_acquire_ctx *ctx);
 
        /**
         * @page_flip_target:
@@ -423,7 +424,8 @@ struct drm_crtc_funcs {
        int (*page_flip_target)(struct drm_crtc *crtc,
                                struct drm_framebuffer *fb,
                                struct drm_pending_vblank_event *event,
-                               uint32_t flags, uint32_t target);
+                               uint32_t flags, uint32_t target,
+                               struct drm_modeset_acquire_ctx *ctx);
 
        /**
         * @set_property: