]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
drm/{i915,xe}: driver agnostic drm to display pointer chase
authorJani Nikula <jani.nikula@intel.com>
Fri, 26 Sep 2025 11:10:32 +0000 (14:10 +0300)
committerJani Nikula <jani.nikula@intel.com>
Mon, 29 Sep 2025 09:55:50 +0000 (12:55 +0300)
commit97825e1c6de7315cba9acb6c1371f1a87dedd904
tree8487e5fd861c1f4de9a976cab30644db8f7d58c0
parentd630a1bdd66090d49b51521019b905f37ae7a6b2
drm/{i915,xe}: driver agnostic drm to display pointer chase

The display driver needs to get from the struct drm_device pointer to
the struct intel_display pointer. Currently, this depends on knowledge
of the struct drm_i915_private and struct xe_device definitions, but
we'd like to hide those definitions from display.

Require the struct drm_device and struct intel_display * members within
struct drm_i915_private and struct xe_device to be placed next to each
other, to be able to figure out the display pointer without knowledge of
the structures.

Use a generic dummy device structure to define the relative offsets of
the drm and display members, and add static assertions to ensure this
holds for both i915 and xe. Use the dummy structure to do the pointer
chase from struct drm_device * to struct intel_display *.

This requires moving the display member in struct xe_device after the
drm member.

Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Ville Syrjala <ville.syrjala@linux.intel.com>
Suggested-by: Simona Vetter <simona.vetter@ffwll.ch>
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Link: https://lore.kernel.org/r/20250926111032.1188876-1-jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/display/intel_display_conversion.c
drivers/gpu/drm/i915/i915_driver.c
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/xe/display/xe_display.c
drivers/gpu/drm/xe/xe_device_types.h
include/drm/intel/display_member.h [new file with mode: 0644]