xref: /linux/include/drm/intel/display_parent_interface.h (revision 815e260a18a3af4dab59025ee99a7156c0e8b5e0)
1 /* SPDX-License-Identifier: MIT */
2 /* Copyright © 2025 Intel Corporation x*/
3 
4 #ifndef __DISPLAY_PARENT_INTERFACE_H__
5 #define __DISPLAY_PARENT_INTERFACE_H__
6 
7 #include <linux/types.h>
8 
9 struct drm_device;
10 struct ref_tracker;
11 
12 struct intel_display_rpm_interface {
13 	struct ref_tracker *(*get)(const struct drm_device *drm);
14 	struct ref_tracker *(*get_raw)(const struct drm_device *drm);
15 	struct ref_tracker *(*get_if_in_use)(const struct drm_device *drm);
16 	struct ref_tracker *(*get_noresume)(const struct drm_device *drm);
17 
18 	void (*put)(const struct drm_device *drm, struct ref_tracker *wakeref);
19 	void (*put_raw)(const struct drm_device *drm, struct ref_tracker *wakeref);
20 	void (*put_unchecked)(const struct drm_device *drm);
21 
22 	bool (*suspended)(const struct drm_device *drm);
23 	void (*assert_held)(const struct drm_device *drm);
24 	void (*assert_block)(const struct drm_device *drm);
25 	void (*assert_unblock)(const struct drm_device *drm);
26 };
27 
28 /**
29  * struct intel_display_parent_interface - services parent driver provides to display
30  *
31  * The parent, or core, driver provides a pointer to this structure to display
32  * driver when calling intel_display_device_probe(). The display driver uses it
33  * to access services provided by the parent driver. The structure may contain
34  * sub-struct pointers to group function pointers by functionality.
35  *
36  * All function and sub-struct pointers must be initialized and callable unless
37  * explicitly marked as "optional" below. The display driver will only NULL
38  * check the optional pointers.
39  */
40 struct intel_display_parent_interface {
41 	/** @rpm: Runtime PM functions */
42 	const struct intel_display_rpm_interface *rpm;
43 };
44 
45 #endif
46