aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2017-03-22 17:50:50 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2017-03-29 03:50:38 -0400
commit41292b1fa13a894c1108d4a1c7f8a59fbb307aa6 (patch)
treecdd761085b4e9e67955bfddb6fd51d0e574d03f2
parent29dc0d1de18239cf3ef8bab578b8321ed340d81c (diff)
drm: Add acquire ctx parameter to ->page_flip(_target)
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
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_display.c3
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h3
-rw-r--r--drivers/gpu/drm/armada/armada_crtc.c3
-rw-r--r--drivers/gpu/drm/bochs/bochs_kms.c3
-rw-r--r--drivers/gpu/drm/drm_atomic_helper.c8
-rw-r--r--drivers/gpu/drm/drm_plane.c6
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_display.c3
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_display.h3
-rw-r--r--drivers/gpu/drm/radeon/radeon_display.c3
-rw-r--r--drivers/gpu/drm/shmobile/shmob_drm_crtc.c3
-rw-r--r--drivers/gpu/drm/udl/udl_modeset.c3
-rw-r--r--drivers/gpu/drm/vc4/vc4_crtc.c5
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c3
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c3
-rw-r--r--include/drm/drm_atomic_helper.h6
-rw-r--r--include/drm/drm_crtc.h6
16 files changed, 43 insertions, 21 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
index 39fc388f222a..7b4fe91d3aec 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
@@ -311,7 +311,8 @@ int amdgpu_crtc_page_flip_target(struct drm_crtc *crtc,
311 struct drm_framebuffer *fb, 311 struct drm_framebuffer *fb,
312 struct drm_pending_vblank_event *event, 312 struct drm_pending_vblank_event *event,
313 uint32_t page_flip_flags, 313 uint32_t page_flip_flags,
314 uint32_t target) 314 uint32_t target,
315 struct drm_modeset_acquire_ctx *ctx)
315{ 316{
316 struct amdgpu_bo *new_abo; 317 struct amdgpu_bo *new_abo;
317 struct amdgpu_flip_work *work; 318 struct amdgpu_flip_work *work;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
index c12497bd3889..8573a818323f 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
@@ -594,7 +594,8 @@ int amdgpu_crtc_set_config(struct drm_mode_set *set);
594int amdgpu_crtc_page_flip_target(struct drm_crtc *crtc, 594int amdgpu_crtc_page_flip_target(struct drm_crtc *crtc,
595 struct drm_framebuffer *fb, 595 struct drm_framebuffer *fb,
596 struct drm_pending_vblank_event *event, 596 struct drm_pending_vblank_event *event,
597 uint32_t page_flip_flags, uint32_t target); 597 uint32_t page_flip_flags, uint32_t target,
598 struct drm_modeset_acquire_ctx *ctx);
598void amdgpu_crtc_cleanup_flip_ctx(struct amdgpu_flip_work *work, 599void amdgpu_crtc_cleanup_flip_ctx(struct amdgpu_flip_work *work,
599 struct amdgpu_bo *new_abo); 600 struct amdgpu_bo *new_abo);
600int amdgpu_crtc_prepare_flip(struct drm_crtc *crtc, 601int amdgpu_crtc_prepare_flip(struct drm_crtc *crtc,
diff --git a/drivers/gpu/drm/armada/armada_crtc.c b/drivers/gpu/drm/armada/armada_crtc.c
index 1341e0b9368a..4fe19fde84f9 100644
--- a/drivers/gpu/drm/armada/armada_crtc.c
+++ b/drivers/gpu/drm/armada/armada_crtc.c
@@ -1027,7 +1027,8 @@ static void armada_drm_crtc_destroy(struct drm_crtc *crtc)
1027 * and a mode_set. 1027 * and a mode_set.
1028 */ 1028 */
1029static int armada_drm_crtc_page_flip(struct drm_crtc *crtc, 1029static int armada_drm_crtc_page_flip(struct drm_crtc *crtc,
1030 struct drm_framebuffer *fb, struct drm_pending_vblank_event *event, uint32_t page_flip_flags) 1030 struct drm_framebuffer *fb, struct drm_pending_vblank_event *event, uint32_t page_flip_flags,
1031 struct drm_modeset_acquire_ctx *ctx)
1031{ 1032{
1032 struct armada_crtc *dcrtc = drm_to_armada_crtc(crtc); 1033 struct armada_crtc *dcrtc = drm_to_armada_crtc(crtc);
1033 struct armada_frame_work *work; 1034 struct armada_frame_work *work;
diff --git a/drivers/gpu/drm/bochs/bochs_kms.c b/drivers/gpu/drm/bochs/bochs_kms.c
index d5e63eff357b..6a91e62da2f4 100644
--- a/drivers/gpu/drm/bochs/bochs_kms.c
+++ b/drivers/gpu/drm/bochs/bochs_kms.c
@@ -96,7 +96,8 @@ static void bochs_crtc_commit(struct drm_crtc *crtc)
96static int bochs_crtc_page_flip(struct drm_crtc *crtc, 96static int bochs_crtc_page_flip(struct drm_crtc *crtc,
97 struct drm_framebuffer *fb, 97 struct drm_framebuffer *fb,
98 struct drm_pending_vblank_event *event, 98 struct drm_pending_vblank_event *event,
99 uint32_t page_flip_flags) 99 uint32_t page_flip_flags,
100 struct drm_modeset_acquire_ctx *ctx)
100{ 101{
101 struct bochs_device *bochs = 102 struct bochs_device *bochs =
102 container_of(crtc, struct bochs_device, crtc); 103 container_of(crtc, struct bochs_device, crtc);
diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
index cc6e2772b32f..96561ecf736f 100644
--- a/drivers/gpu/drm/drm_atomic_helper.c
+++ b/drivers/gpu/drm/drm_atomic_helper.c
@@ -2859,6 +2859,7 @@ static int page_flip_common(
2859 * @fb: DRM framebuffer 2859 * @fb: DRM framebuffer
2860 * @event: optional DRM event to signal upon completion 2860 * @event: optional DRM event to signal upon completion
2861 * @flags: flip flags for non-vblank sync'ed updates 2861 * @flags: flip flags for non-vblank sync'ed updates
2862 * @ctx: lock acquisition context
2862 * 2863 *
2863 * Provides a default &drm_crtc_funcs.page_flip implementation 2864 * Provides a default &drm_crtc_funcs.page_flip implementation
2864 * using the atomic driver interface. 2865 * using the atomic driver interface.
@@ -2872,7 +2873,8 @@ static int page_flip_common(
2872int drm_atomic_helper_page_flip(struct drm_crtc *crtc, 2873int drm_atomic_helper_page_flip(struct drm_crtc *crtc,
2873 struct drm_framebuffer *fb, 2874 struct drm_framebuffer *fb,
2874 struct drm_pending_vblank_event *event, 2875 struct drm_pending_vblank_event *event,
2875 uint32_t flags) 2876 uint32_t flags,
2877 struct drm_modeset_acquire_ctx *ctx)
2876{ 2878{
2877 struct drm_plane *plane = crtc->primary; 2879 struct drm_plane *plane = crtc->primary;
2878 struct drm_atomic_state *state; 2880 struct drm_atomic_state *state;
@@ -2920,6 +2922,7 @@ EXPORT_SYMBOL(drm_atomic_helper_page_flip);
2920 * @event: optional DRM event to signal upon completion 2922 * @event: optional DRM event to signal upon completion
2921 * @flags: flip flags for non-vblank sync'ed updates 2923 * @flags: flip flags for non-vblank sync'ed updates
2922 * @target: specifying the target vblank period when the flip to take effect 2924 * @target: specifying the target vblank period when the flip to take effect
2925 * @ctx: lock acquisition context
2923 * 2926 *
2924 * Provides a default &drm_crtc_funcs.page_flip_target implementation. 2927 * Provides a default &drm_crtc_funcs.page_flip_target implementation.
2925 * Similar to drm_atomic_helper_page_flip() with extra parameter to specify 2928 * Similar to drm_atomic_helper_page_flip() with extra parameter to specify
@@ -2933,7 +2936,8 @@ int drm_atomic_helper_page_flip_target(
2933 struct drm_framebuffer *fb, 2936 struct drm_framebuffer *fb,
2934 struct drm_pending_vblank_event *event, 2937 struct drm_pending_vblank_event *event,
2935 uint32_t flags, 2938 uint32_t flags,
2936 uint32_t target) 2939 uint32_t target,
2940 struct drm_modeset_acquire_ctx *ctx)
2937{ 2941{
2938 struct drm_plane *plane = crtc->primary; 2942 struct drm_plane *plane = crtc->primary;
2939 struct drm_atomic_state *state; 2943 struct drm_atomic_state *state;
diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c
index 62e833ffeffd..373e980d698d 100644
--- a/drivers/gpu/drm/drm_plane.c
+++ b/drivers/gpu/drm/drm_plane.c
@@ -932,9 +932,11 @@ retry:
932 if (crtc->funcs->page_flip_target) 932 if (crtc->funcs->page_flip_target)
933 ret = crtc->funcs->page_flip_target(crtc, fb, e, 933 ret = crtc->funcs->page_flip_target(crtc, fb, e,
934 page_flip->flags, 934 page_flip->flags,
935 target_vblank); 935 target_vblank,
936 &ctx);
936 else 937 else
937 ret = crtc->funcs->page_flip(crtc, fb, e, page_flip->flags); 938 ret = crtc->funcs->page_flip(crtc, fb, e, page_flip->flags,
939 &ctx);
938 if (ret) { 940 if (ret) {
939 if (page_flip->flags & DRM_MODE_PAGE_FLIP_EVENT) 941 if (page_flip->flags & DRM_MODE_PAGE_FLIP_EVENT)
940 drm_event_cancel_free(dev, &e->base); 942 drm_event_cancel_free(dev, &e->base);
diff --git a/drivers/gpu/drm/nouveau/nouveau_display.c b/drivers/gpu/drm/nouveau/nouveau_display.c
index c014bae7c5e7..6104f61b00fc 100644
--- a/drivers/gpu/drm/nouveau/nouveau_display.c
+++ b/drivers/gpu/drm/nouveau/nouveau_display.c
@@ -792,7 +792,8 @@ fail:
792 792
793int 793int
794nouveau_crtc_page_flip(struct drm_crtc *crtc, struct drm_framebuffer *fb, 794nouveau_crtc_page_flip(struct drm_crtc *crtc, struct drm_framebuffer *fb,
795 struct drm_pending_vblank_event *event, u32 flags) 795 struct drm_pending_vblank_event *event, u32 flags,
796 struct drm_modeset_acquire_ctx *ctx)
796{ 797{
797 const int swap_interval = (flags & DRM_MODE_PAGE_FLIP_ASYNC) ? 0 : 1; 798 const int swap_interval = (flags & DRM_MODE_PAGE_FLIP_ASYNC) ? 0 : 1;
798 struct drm_device *dev = crtc->dev; 799 struct drm_device *dev = crtc->dev;
diff --git a/drivers/gpu/drm/nouveau/nouveau_display.h b/drivers/gpu/drm/nouveau/nouveau_display.h
index 4a75df06c139..8b33e1db247e 100644
--- a/drivers/gpu/drm/nouveau/nouveau_display.h
+++ b/drivers/gpu/drm/nouveau/nouveau_display.h
@@ -76,7 +76,8 @@ int nouveau_display_vblstamp(struct drm_device *, unsigned int, int *,
76 76
77int nouveau_crtc_page_flip(struct drm_crtc *crtc, struct drm_framebuffer *fb, 77int nouveau_crtc_page_flip(struct drm_crtc *crtc, struct drm_framebuffer *fb,
78 struct drm_pending_vblank_event *event, 78 struct drm_pending_vblank_event *event,
79 uint32_t page_flip_flags); 79 uint32_t page_flip_flags,
80 struct drm_modeset_acquire_ctx *ctx);
80int nouveau_finish_page_flip(struct nouveau_channel *, 81int nouveau_finish_page_flip(struct nouveau_channel *,
81 struct nouveau_page_flip_state *); 82 struct nouveau_page_flip_state *);
82 83
diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c
index aea8b62835a4..31020db573d5 100644
--- a/drivers/gpu/drm/radeon/radeon_display.c
+++ b/drivers/gpu/drm/radeon/radeon_display.c
@@ -485,7 +485,8 @@ static int radeon_crtc_page_flip_target(struct drm_crtc *crtc,
485 struct drm_framebuffer *fb, 485 struct drm_framebuffer *fb,
486 struct drm_pending_vblank_event *event, 486 struct drm_pending_vblank_event *event,
487 uint32_t page_flip_flags, 487 uint32_t page_flip_flags,
488 uint32_t target) 488 uint32_t target,
489 struct drm_modeset_acquire_ctx *ctx)
489{ 490{
490 struct drm_device *dev = crtc->dev; 491 struct drm_device *dev = crtc->dev;
491 struct radeon_device *rdev = dev->dev_private; 492 struct radeon_device *rdev = dev->dev_private;
diff --git a/drivers/gpu/drm/shmobile/shmob_drm_crtc.c b/drivers/gpu/drm/shmobile/shmob_drm_crtc.c
index 5fcabc04f307..e7738939a86d 100644
--- a/drivers/gpu/drm/shmobile/shmob_drm_crtc.c
+++ b/drivers/gpu/drm/shmobile/shmob_drm_crtc.c
@@ -449,7 +449,8 @@ void shmob_drm_crtc_finish_page_flip(struct shmob_drm_crtc *scrtc)
449static int shmob_drm_crtc_page_flip(struct drm_crtc *crtc, 449static int shmob_drm_crtc_page_flip(struct drm_crtc *crtc,
450 struct drm_framebuffer *fb, 450 struct drm_framebuffer *fb,
451 struct drm_pending_vblank_event *event, 451 struct drm_pending_vblank_event *event,
452 uint32_t page_flip_flags) 452 uint32_t page_flip_flags,
453 struct drm_modeset_acquire_ctx *ctx)
453{ 454{
454 struct shmob_drm_crtc *scrtc = to_shmob_crtc(crtc); 455 struct shmob_drm_crtc *scrtc = to_shmob_crtc(crtc);
455 struct drm_device *dev = scrtc->crtc.dev; 456 struct drm_device *dev = scrtc->crtc.dev;
diff --git a/drivers/gpu/drm/udl/udl_modeset.c b/drivers/gpu/drm/udl/udl_modeset.c
index f2b2481cad52..5bcae7649795 100644
--- a/drivers/gpu/drm/udl/udl_modeset.c
+++ b/drivers/gpu/drm/udl/udl_modeset.c
@@ -361,7 +361,8 @@ static void udl_crtc_destroy(struct drm_crtc *crtc)
361static int udl_crtc_page_flip(struct drm_crtc *crtc, 361static int udl_crtc_page_flip(struct drm_crtc *crtc,
362 struct drm_framebuffer *fb, 362 struct drm_framebuffer *fb,
363 struct drm_pending_vblank_event *event, 363 struct drm_pending_vblank_event *event,
364 uint32_t page_flip_flags) 364 uint32_t page_flip_flags,
365 struct drm_modeset_acquire_ctx *ctx)
365{ 366{
366 struct udl_framebuffer *ufb = to_udl_fb(fb); 367 struct udl_framebuffer *ufb = to_udl_fb(fb);
367 struct drm_device *dev = crtc->dev; 368 struct drm_device *dev = crtc->dev;
diff --git a/drivers/gpu/drm/vc4/vc4_crtc.c b/drivers/gpu/drm/vc4/vc4_crtc.c
index 24edd0c22cc9..865e9f494bcc 100644
--- a/drivers/gpu/drm/vc4/vc4_crtc.c
+++ b/drivers/gpu/drm/vc4/vc4_crtc.c
@@ -807,12 +807,13 @@ static int vc4_async_page_flip(struct drm_crtc *crtc,
807static int vc4_page_flip(struct drm_crtc *crtc, 807static int vc4_page_flip(struct drm_crtc *crtc,
808 struct drm_framebuffer *fb, 808 struct drm_framebuffer *fb,
809 struct drm_pending_vblank_event *event, 809 struct drm_pending_vblank_event *event,
810 uint32_t flags) 810 uint32_t flags,
811 struct drm_modeset_acquire_ctx *ctx)
811{ 812{
812 if (flags & DRM_MODE_PAGE_FLIP_ASYNC) 813 if (flags & DRM_MODE_PAGE_FLIP_ASYNC)
813 return vc4_async_page_flip(crtc, fb, event, flags); 814 return vc4_async_page_flip(crtc, fb, event, flags);
814 else 815 else
815 return drm_atomic_helper_page_flip(crtc, fb, event, flags); 816 return drm_atomic_helper_page_flip(crtc, fb, event, flags, ctx);
816} 817}
817 818
818static struct drm_crtc_state *vc4_crtc_duplicate_state(struct drm_crtc *crtc) 819static struct drm_crtc_state *vc4_crtc_duplicate_state(struct drm_crtc *crtc)
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c b/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c
index d4268efc37d2..53cf3be7a902 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c
@@ -395,7 +395,8 @@ static int vmw_sou_crtc_set_config(struct drm_mode_set *set)
395static int vmw_sou_crtc_page_flip(struct drm_crtc *crtc, 395static int vmw_sou_crtc_page_flip(struct drm_crtc *crtc,
396 struct drm_framebuffer *fb, 396 struct drm_framebuffer *fb,
397 struct drm_pending_vblank_event *event, 397 struct drm_pending_vblank_event *event,
398 uint32_t flags) 398 uint32_t flags,
399 struct drm_modeset_acquire_ctx *ctx)
399{ 400{
400 struct vmw_private *dev_priv = vmw_priv(crtc->dev); 401 struct vmw_private *dev_priv = vmw_priv(crtc->dev);
401 struct drm_framebuffer *old_fb = crtc->primary->fb; 402 struct drm_framebuffer *old_fb = crtc->primary->fb;
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
index b27cd18ee66a..85e12309cb71 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
@@ -649,7 +649,8 @@ static int vmw_stdu_crtc_set_config(struct drm_mode_set *set)
649static int vmw_stdu_crtc_page_flip(struct drm_crtc *crtc, 649static int vmw_stdu_crtc_page_flip(struct drm_crtc *crtc,
650 struct drm_framebuffer *new_fb, 650 struct drm_framebuffer *new_fb,
651 struct drm_pending_vblank_event *event, 651 struct drm_pending_vblank_event *event,
652 uint32_t flags) 652 uint32_t flags,
653 struct drm_modeset_acquire_ctx *ctx)
653 654
654{ 655{
655 struct vmw_private *dev_priv = vmw_priv(crtc->dev); 656 struct vmw_private *dev_priv = vmw_priv(crtc->dev);
diff --git a/include/drm/drm_atomic_helper.h b/include/drm/drm_atomic_helper.h
index 73554fff086a..9675cacb72a3 100644
--- a/include/drm/drm_atomic_helper.h
+++ b/include/drm/drm_atomic_helper.h
@@ -125,13 +125,15 @@ int drm_atomic_helper_connector_set_property(struct drm_connector *connector,
125int drm_atomic_helper_page_flip(struct drm_crtc *crtc, 125int drm_atomic_helper_page_flip(struct drm_crtc *crtc,
126 struct drm_framebuffer *fb, 126 struct drm_framebuffer *fb,
127 struct drm_pending_vblank_event *event, 127 struct drm_pending_vblank_event *event,
128 uint32_t flags); 128 uint32_t flags,
129 struct drm_modeset_acquire_ctx *ctx);
129int drm_atomic_helper_page_flip_target( 130int drm_atomic_helper_page_flip_target(
130 struct drm_crtc *crtc, 131 struct drm_crtc *crtc,
131 struct drm_framebuffer *fb, 132 struct drm_framebuffer *fb,
132 struct drm_pending_vblank_event *event, 133 struct drm_pending_vblank_event *event,
133 uint32_t flags, 134 uint32_t flags,
134 uint32_t target); 135 uint32_t target,
136 struct drm_modeset_acquire_ctx *ctx);
135int drm_atomic_helper_connector_dpms(struct drm_connector *connector, 137int drm_atomic_helper_connector_dpms(struct drm_connector *connector,
136 int mode); 138 int mode);
137struct drm_encoder * 139struct drm_encoder *
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
index c1a75a9c81c2..1a525ce66468 100644
--- a/include/drm/drm_crtc.h
+++ b/include/drm/drm_crtc.h
@@ -405,7 +405,8 @@ struct drm_crtc_funcs {
405 int (*page_flip)(struct drm_crtc *crtc, 405 int (*page_flip)(struct drm_crtc *crtc,
406 struct drm_framebuffer *fb, 406 struct drm_framebuffer *fb,
407 struct drm_pending_vblank_event *event, 407 struct drm_pending_vblank_event *event,
408 uint32_t flags); 408 uint32_t flags,
409 struct drm_modeset_acquire_ctx *ctx);
409 410
410 /** 411 /**
411 * @page_flip_target: 412 * @page_flip_target:
@@ -423,7 +424,8 @@ struct drm_crtc_funcs {
423 int (*page_flip_target)(struct drm_crtc *crtc, 424 int (*page_flip_target)(struct drm_crtc *crtc,
424 struct drm_framebuffer *fb, 425 struct drm_framebuffer *fb,
425 struct drm_pending_vblank_event *event, 426 struct drm_pending_vblank_event *event,
426 uint32_t flags, uint32_t target); 427 uint32_t flags, uint32_t target,
428 struct drm_modeset_acquire_ctx *ctx);
427 429
428 /** 430 /**
429 * @set_property: 431 * @set_property: