1
0
mirror of https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git synced 2026-01-14 10:32:46 +00:00
torvalds-linux/include/drm/intel/display_parent_interface.h
Jouni Högander 1914d6861b drm/{i915, xe}/display: Add display runtime pm parent interface
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
2025-11-03 11:55:20 +02:00

46 lines
1.6 KiB
C

/* SPDX-License-Identifier: MIT */
/* Copyright © 2025 Intel Corporation x*/
#ifndef __DISPLAY_PARENT_INTERFACE_H__
#define __DISPLAY_PARENT_INTERFACE_H__
#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
*
* The parent, or core, driver provides a pointer to this structure to display
* driver when calling intel_display_device_probe(). The display driver uses it
* to access services provided by the parent driver. The structure may contain
* sub-struct pointers to group function pointers by functionality.
*
* All function and sub-struct pointers must be initialized and callable unless
* explicitly marked as "optional" below. The display driver will only NULL
* check the optional pointers.
*/
struct intel_display_parent_interface {
/** @rpm: Runtime PM functions */
const struct intel_display_rpm_interface *rpm;
};
#endif