drm/i915/display: add struct drm_device to struct intel_display conversion function
authorJani Nikula <jani.nikula@intel.com>
Wed, 20 Nov 2024 12:03:36 +0000 (14:03 +0200)
committerJani Nikula <jani.nikula@intel.com>
Mon, 16 Dec 2024 16:09:42 +0000 (18:09 +0200)
Add a __drm_to_display() conversion function to hide the to_i915() usage
and the implicit dependency on i915_drv.h from intel_display_types.h.

The goal is for this implementation to be a transitional helper
only. One idea I've floated around in the past would be to require a
struct intel_display pointer member to be placed right after struct
drm_device member in struct drm_i915_private and struct xe_device
[1][2].

[1] https://lore.kernel.org/r/7777ff70e2be0663de4398aa6f75f0c54146cbfc.1709727127.git.jani.nikula@intel.com
[2] https://lore.kernel.org/r/0b9459da6c8cba0f74bf2781d69182fa6801cd97.1709727127.git.jani.nikula@intel.com

Reviewed-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/cbbf26fa58ef662946303c972b1a1ff1547ddcfe.1732104170.git.jani.nikula@intel.com
drivers/gpu/drm/i915/display/intel_display_conversion.c
drivers/gpu/drm/i915/display/intel_display_conversion.h
drivers/gpu/drm/i915/display/intel_display_types.h

index bdd947f5ccd8564b361ce28e46739d23d82cf926..0578b68404da74f171df8980b13564c18fc35646 100644 (file)
@@ -7,3 +7,8 @@ struct intel_display *__i915_to_display(struct drm_i915_private *i915)
 {
        return &i915->display;
 }
+
+struct intel_display *__drm_to_display(struct drm_device *drm)
+{
+       return __i915_to_display(to_i915(drm));
+}
index 790d0be698dc8500ec5167a0faa8fb30d0775bb5..46c7208d42ba2a6417b1aac8e06f72ea36a8ea46 100644 (file)
@@ -8,11 +8,12 @@
 #ifndef __INTEL_DISPLAY_CONVERSION__
 #define __INTEL_DISPLAY_CONVERSION__
 
+struct drm_device;
 struct drm_i915_private;
 struct intel_display;
 
 struct intel_display *__i915_to_display(struct drm_i915_private *i915);
-
+struct intel_display *__drm_to_display(struct drm_device *drm);
 /*
  * Transitional macro to optionally convert struct drm_i915_private * to struct
  * intel_display *, also accepting the latter.
index b71416ff5b7f62690d06436f0b46fa4dea517012..eb9dd1125a4a09511936b81219e7f38fae106dfd 100644 (file)
@@ -45,6 +45,7 @@
 #include "i915_vma_types.h"
 #include "intel_bios.h"
 #include "intel_display.h"
+#include "intel_display_conversion.h"
 #include "intel_display_limits.h"
 #include "intel_display_power.h"
 #include "intel_dpll_mgr.h"
@@ -2107,7 +2108,7 @@ to_intel_frontbuffer(struct drm_framebuffer *fb)
  * intel_display pointer.
  */
 #define __drm_device_to_intel_display(p) \
-       ((p) ? &to_i915(p)->display : NULL)
+       ((p) ? __drm_to_display(p) : NULL)
 #define __device_to_intel_display(p)                           \
        __drm_device_to_intel_display(dev_get_drvdata(p))
 #define __pci_dev_to_intel_display(p)                          \