]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/{i915, xe}/display: Add display runtime pm parent interface
authorJouni Högander <jouni.hogander@intel.com>
Thu, 30 Oct 2025 20:28:32 +0000 (22:28 +0200)
committerJouni Högander <jouni.hogander@intel.com>
Mon, 3 Nov 2025 09:55:20 +0000 (11:55 +0200)
We have differing implementations for display runtime pm in i915 and xe
drivers. Add struct of function pointers into display_parent_interface
which will contain used implementation of runtime pm.

v2:
  - add _interface suffix to rpm function pointer struct
  - add struct ref_tracker forward declaration
  - use kernel-doc comments

Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
Link: https://patch.msgid.link/20251030202836.1815680-3-jouni.hogander@intel.com
include/drm/intel/display_parent_interface.h

index 28c976815327a156ae5eaa52c0726a85023295c3..26bedc360044db4a990bddfc42b96b394ef7a57c 100644 (file)
@@ -7,6 +7,23 @@
 #include <linux/types.h>
 
 struct drm_device;
+struct ref_tracker;
+
+struct intel_display_rpm_interface {
+       struct ref_tracker *(*get)(const struct drm_device *drm);
+       struct ref_tracker *(*get_raw)(const struct drm_device *drm);
+       struct ref_tracker *(*get_if_in_use)(const struct drm_device *drm);
+       struct ref_tracker *(*get_noresume)(const struct drm_device *drm);
+
+       void (*put)(const struct drm_device *drm, struct ref_tracker *wakeref);
+       void (*put_raw)(const struct drm_device *drm, struct ref_tracker *wakeref);
+       void (*put_unchecked)(const struct drm_device *drm);
+
+       bool (*suspended)(const struct drm_device *drm);
+       void (*assert_held)(const struct drm_device *drm);
+       void (*assert_block)(const struct drm_device *drm);
+       void (*assert_unblock)(const struct drm_device *drm);
+};
 
 /**
  * struct intel_display_parent_interface - services parent driver provides to display
@@ -21,6 +38,8 @@ struct drm_device;
  * check the optional pointers.
  */
 struct intel_display_parent_interface {
+       /** @rpm: Runtime PM functions */
+       const struct intel_display_rpm_interface *rpm;
 };
 
 #endif