]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/i915: support struct device and pci_dev in to_intel_display()
authorJani Nikula <jani.nikula@intel.com>
Thu, 29 Aug 2024 14:47:44 +0000 (17:47 +0300)
committerJani Nikula <jani.nikula@intel.com>
Mon, 2 Sep 2024 12:01:59 +0000 (15:01 +0300)
Now that both xe and i915 store struct drm_device in drvdata, we can
trivially support struct device and struct pci_dev in
to_intel_display().

We do need to check for NULL drvdata before converting it into struct
intel_device pointer, though. Do it in __drm_device_to_intel_display().

v2: Add NULL check in __drm_device_to_intel_display() (Gustavo)

Reviewed-by: Gustavo Sousa <gustavo.sousa@intel.com> # v1
Link: https://patchwork.freedesktop.org/patch/msgid/f025a3fa4422725c78baac4501ad3ecc9e5b40d5.1724942754.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/display/intel_display_types.h

index 868ff8976ed93cd8292dac624977d7c39a1eafdf..d98bcda16edfbaabce8312efb24433bbdb55d957 100644 (file)
@@ -2205,7 +2205,11 @@ to_intel_frontbuffer(struct drm_framebuffer *fb)
  * intel_display pointer.
  */
 #define __drm_device_to_intel_display(p) \
-       (&to_i915(p)->display)
+       ((p) ? &to_i915(p)->display : NULL)
+#define __device_to_intel_display(p)                           \
+       __drm_device_to_intel_display(dev_get_drvdata(p))
+#define __pci_dev_to_intel_display(p)                          \
+       __drm_device_to_intel_display(pci_get_drvdata(p))
 #define __intel_atomic_state_to_intel_display(p)       \
        __drm_device_to_intel_display((p)->base.dev)
 #define __intel_connector_to_intel_display(p)          \
@@ -2231,6 +2235,8 @@ to_intel_frontbuffer(struct drm_framebuffer *fb)
 #define to_intel_display(p)                            \
        _Generic(*p,                                    \
                 __assoc(drm_device, p),                \
+                __assoc(device, p),                    \
+                __assoc(pci_dev, p),                   \
                 __assoc(intel_atomic_state, p),        \
                 __assoc(intel_connector, p),           \
                 __assoc(intel_crtc, p),                \