Start reducing i915 and xe core dependency on struct intel_framebuffer
by passing the fb obj from display.

Cc: Jocelyn Falempe <[email protected]>
Signed-off-by: Jani Nikula <[email protected]>
---
 drivers/gpu/drm/i915/display/intel_parent.c  | 5 +++--
 drivers/gpu/drm/i915/display/intel_parent.h  | 3 ++-
 drivers/gpu/drm/i915/display/intel_plane.c   | 2 +-
 drivers/gpu/drm/i915/gem/i915_gem_panic.c    | 5 ++---
 drivers/gpu/drm/xe/display/xe_panic.c        | 6 +++---
 include/drm/intel/display_parent_interface.h | 3 ++-
 6 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_parent.c 
b/drivers/gpu/drm/i915/display/intel_parent.c
index a5816561be40..0b2bc2d38442 100644
--- a/drivers/gpu/drm/i915/display/intel_parent.c
+++ b/drivers/gpu/drm/i915/display/intel_parent.c
@@ -251,9 +251,10 @@ struct intel_panic *intel_parent_panic_alloc(struct 
intel_display *display)
        return display->parent->panic->alloc();
 }
 
-int intel_parent_panic_setup(struct intel_display *display, struct intel_panic 
*panic, struct drm_scanout_buffer *sb)
+int intel_parent_panic_setup(struct intel_display *display, struct intel_panic 
*panic,
+                            struct drm_scanout_buffer *sb, struct 
drm_gem_object *obj)
 {
-       return display->parent->panic->setup(panic, sb);
+       return display->parent->panic->setup(panic, sb, obj);
 }
 
 void intel_parent_panic_finish(struct intel_display *display, struct 
intel_panic *panic)
diff --git a/drivers/gpu/drm/i915/display/intel_parent.h 
b/drivers/gpu/drm/i915/display/intel_parent.h
index 27e35f891a6b..4197d1b1af61 100644
--- a/drivers/gpu/drm/i915/display/intel_parent.h
+++ b/drivers/gpu/drm/i915/display/intel_parent.h
@@ -105,7 +105,8 @@ void intel_parent_overlay_cleanup(struct intel_display 
*display);
 
 /* panic */
 struct intel_panic *intel_parent_panic_alloc(struct intel_display *display);
-int intel_parent_panic_setup(struct intel_display *display, struct intel_panic 
*panic, struct drm_scanout_buffer *sb);
+int intel_parent_panic_setup(struct intel_display *display, struct intel_panic 
*panic,
+                            struct drm_scanout_buffer *sb, struct 
drm_gem_object *obj);
 void intel_parent_panic_finish(struct intel_display *display, struct 
intel_panic *panic);
 
 /* pc8 */
diff --git a/drivers/gpu/drm/i915/display/intel_plane.c 
b/drivers/gpu/drm/i915/display/intel_plane.c
index f55a6a2f7dd1..75eae994433d 100644
--- a/drivers/gpu/drm/i915/display/intel_plane.c
+++ b/drivers/gpu/drm/i915/display/intel_plane.c
@@ -1590,7 +1590,7 @@ static int intel_get_scanout_buffer(struct drm_plane 
*plane,
                                return -EOPNOTSUPP;
                }
                sb->private = fb;
-               ret = intel_parent_panic_setup(display, fb->panic, sb);
+               ret = intel_parent_panic_setup(display, fb->panic, sb, obj);
                if (ret)
                        return ret;
        }
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_panic.c 
b/drivers/gpu/drm/i915/gem/i915_gem_panic.c
index bb26a0ece176..001ccfbf7ab7 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_panic.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_panic.c
@@ -5,7 +5,6 @@
 #include <drm/drm_panic.h>
 #include <drm/intel/display_parent_interface.h>
 
-#include "display/intel_fb.h"
 #include "display/intel_display_types.h"
 #include "i915_gem_object.h"
 #include "i915_gem_panic.h"
@@ -98,10 +97,10 @@ static struct intel_panic *i915_gem_object_alloc_panic(void)
  * Use current vaddr if it exists, or setup a list of pages.
  * pfn is not supported yet.
  */
-static int i915_gem_object_panic_setup(struct intel_panic *panic, struct 
drm_scanout_buffer *sb)
+static int i915_gem_object_panic_setup(struct intel_panic *panic, struct 
drm_scanout_buffer *sb,
+                                      struct drm_gem_object *_obj)
 {
        struct intel_framebuffer *fb = sb->private;
-       struct drm_gem_object *_obj = intel_fb_bo(&fb->base);
        bool panic_tiling = fb->panic_tiling;
        enum i915_map_type has_type;
        struct drm_i915_gem_object *obj = to_intel_bo(_obj);
diff --git a/drivers/gpu/drm/xe/display/xe_panic.c 
b/drivers/gpu/drm/xe/display/xe_panic.c
index bebb21d617f0..d7f456eec597 100644
--- a/drivers/gpu/drm/xe/display/xe_panic.c
+++ b/drivers/gpu/drm/xe/display/xe_panic.c
@@ -84,10 +84,10 @@ static struct intel_panic *xe_panic_alloc(void)
        return panic;
 }
 
-static int xe_panic_setup(struct intel_panic *panic, struct drm_scanout_buffer 
*sb)
+static int xe_panic_setup(struct intel_panic *panic, struct drm_scanout_buffer 
*sb,
+                         struct drm_gem_object *obj)
 {
-       struct intel_framebuffer *fb = (struct intel_framebuffer *)sb->private;
-       struct xe_bo *bo = gem_to_xe_bo(intel_fb_bo(&fb->base));
+       struct xe_bo *bo = gem_to_xe_bo(obj);
 
        if (xe_bo_is_vram(bo) && !xe_bo_is_visible_vram(bo))
                return -ENODEV;
diff --git a/include/drm/intel/display_parent_interface.h 
b/include/drm/intel/display_parent_interface.h
index 39991afeb173..b0362e231d84 100644
--- a/include/drm/intel/display_parent_interface.h
+++ b/include/drm/intel/display_parent_interface.h
@@ -167,7 +167,8 @@ struct intel_display_overlay_interface {
 
 struct intel_display_panic_interface {
        struct intel_panic *(*alloc)(void);
-       int (*setup)(struct intel_panic *panic, struct drm_scanout_buffer *sb);
+       int (*setup)(struct intel_panic *panic, struct drm_scanout_buffer *sb,
+                    struct drm_gem_object *obj);
        void (*finish)(struct intel_panic *panic);
 };
 
-- 
2.47.3

Reply via email to