From 0f77f89e5dc6878617beed6f459f2b834b547a18 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Thu, 7 Oct 2021 12:59:56 +1000 Subject: drm/i915/display: move fbdev pin code into fb_pin This moves the fbdev pin code over and moves the internal interfaces to static. Signed-off-by: Dave Airlie --- drivers/gpu/drm/i915/display/intel_fb_pin.c | 34 +++++++++++++++++++++++++++-- drivers/gpu/drm/i915/display/intel_fb_pin.h | 15 +++++-------- drivers/gpu/drm/i915/display/intel_fbdev.c | 29 ------------------------ 3 files changed, 38 insertions(+), 40 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_fb_pin.c b/drivers/gpu/drm/i915/display/intel_fb_pin.c index 3f77f3013584..7233a2d3c326 100644 --- a/drivers/gpu/drm/i915/display/intel_fb_pin.c +++ b/drivers/gpu/drm/i915/display/intel_fb_pin.c @@ -71,7 +71,7 @@ err: return vma; } -struct i915_vma * +static struct i915_vma * intel_pin_and_fence_fb_obj(struct drm_framebuffer *fb, bool phys_cursor, const struct i915_ggtt_view *view, @@ -199,7 +199,8 @@ err: return vma; } -void intel_unpin_fb_vma(struct i915_vma *vma, unsigned long flags) +static void +intel_unpin_fb_vma(struct i915_vma *vma, unsigned long flags) { if (flags & PLANE_HAS_FENCE) i915_vma_unpin_fence(vma); @@ -272,3 +273,32 @@ void intel_plane_unpin_fb(struct intel_plane_state *old_plane_state) intel_dpt_unpin(intel_fb->dpt_vm); } } + +int intel_fbdev_pin_and_fence(struct drm_i915_private *dev_priv, + struct intel_fbdev *ifbdev, + void **vaddr) +{ + const struct i915_ggtt_view view = { + .type = I915_GGTT_VIEW_NORMAL, + }; + ifbdev->vma = intel_pin_and_fence_fb_obj(&ifbdev->fb->base, false, + &view, false, &ifbdev->vma_flags); + + if (IS_ERR(ifbdev->vma)) { + return PTR_ERR(ifbdev->vma); + } + + *vaddr = i915_vma_pin_iomap(ifbdev->vma); + if (IS_ERR(*vaddr)) { + drm_err(&dev_priv->drm, + "Failed to remap framebuffer into virtual memory\n"); + return PTR_ERR(vaddr); + } + return 0; +} + +void intel_fbdev_unpin(struct intel_fbdev *ifbdev) +{ + if (ifbdev->vma) + intel_unpin_fb_vma(ifbdev->vma, ifbdev->vma_flags); +} diff --git a/drivers/gpu/drm/i915/display/intel_fb_pin.h b/drivers/gpu/drm/i915/display/intel_fb_pin.h index e4fcd0218d9d..88d736264348 100644 --- a/drivers/gpu/drm/i915/display/intel_fb_pin.h +++ b/drivers/gpu/drm/i915/display/intel_fb_pin.h @@ -8,21 +8,18 @@ #include +struct drm_i915_private; struct drm_framebuffer; +struct intel_fbdev; struct i915_vma; struct intel_plane_state; struct i915_ggtt_view; -struct i915_vma * -intel_pin_and_fence_fb_obj(struct drm_framebuffer *fb, - bool phys_cursor, - const struct i915_ggtt_view *view, - bool uses_fence, - unsigned long *out_flags); - -void intel_unpin_fb_vma(struct i915_vma *vma, unsigned long flags); - int intel_plane_pin_fb(struct intel_plane_state *plane_state); void intel_plane_unpin_fb(struct intel_plane_state *old_plane_state); +int intel_fbdev_pin_and_fence(struct drm_i915_private *dev_priv, + struct intel_fbdev *ifbdev, + void **vaddr); +void intel_fbdev_unpin(struct intel_fbdev *ifbdev); #endif diff --git a/drivers/gpu/drm/i915/display/intel_fbdev.c b/drivers/gpu/drm/i915/display/intel_fbdev.c index 7ac9348d20c5..cee85fcc2085 100644 --- a/drivers/gpu/drm/i915/display/intel_fbdev.c +++ b/drivers/gpu/drm/i915/display/intel_fbdev.c @@ -171,35 +171,6 @@ static int intelfb_alloc(struct drm_fb_helper *helper, return 0; } -static int intel_fbdev_pin_and_fence(struct drm_i915_private *dev_priv, - struct intel_fbdev *ifbdev, - void **vaddr) -{ - const struct i915_ggtt_view view = { - .type = I915_GGTT_VIEW_NORMAL, - }; - ifbdev->vma = intel_pin_and_fence_fb_obj(&ifbdev->fb->base, false, - &view, false, &ifbdev->vma_flags); - - if (IS_ERR(ifbdev->vma)) { - return PTR_ERR(ifbdev->vma); - } - - *vaddr = i915_vma_pin_iomap(ifbdev->vma); - if (IS_ERR(*vaddr)) { - drm_err(&dev_priv->drm, - "Failed to remap framebuffer into virtual memory\n"); - return PTR_ERR(vaddr); - } - return 0; -} - -static void intel_fbdev_unpin(struct intel_fbdev *ifbdev) -{ - if (ifbdev->vma) - intel_unpin_fb_vma(ifbdev->vma, ifbdev->vma_flags); -} - static int intelfb_create(struct drm_fb_helper *helper, struct drm_fb_helper_surface_size *sizes) { -- cgit v1.2.3