xref: /linux/drivers/gpu/drm/xe/display/xe_display_rpm.c (revision b08494a8f7416e5f09907318c5460ad6f6e2a548)
1*336c0eaeSJani Nikula // SPDX-License-Identifier: MIT
2*336c0eaeSJani Nikula /* Copyright © 2025 Intel Corporation */
3*336c0eaeSJani Nikula 
4*336c0eaeSJani Nikula #include "intel_display_rpm.h"
5*336c0eaeSJani Nikula #include "xe_device_types.h"
6*336c0eaeSJani Nikula #include "xe_pm.h"
7*336c0eaeSJani Nikula 
8*336c0eaeSJani Nikula static struct xe_device *display_to_xe(struct intel_display *display)
9*336c0eaeSJani Nikula {
10*336c0eaeSJani Nikula 	return container_of(display, struct xe_device, display);
11*336c0eaeSJani Nikula }
12*336c0eaeSJani Nikula 
13*336c0eaeSJani Nikula struct ref_tracker *intel_display_rpm_get_raw(struct intel_display *display)
14*336c0eaeSJani Nikula {
15*336c0eaeSJani Nikula 	return intel_display_rpm_get(display);
16*336c0eaeSJani Nikula }
17*336c0eaeSJani Nikula 
18*336c0eaeSJani Nikula void intel_display_rpm_put_raw(struct intel_display *display, struct ref_tracker *wakeref)
19*336c0eaeSJani Nikula {
20*336c0eaeSJani Nikula 	intel_display_rpm_put(display, wakeref);
21*336c0eaeSJani Nikula }
22*336c0eaeSJani Nikula 
23*336c0eaeSJani Nikula struct ref_tracker *intel_display_rpm_get(struct intel_display *display)
24*336c0eaeSJani Nikula {
25*336c0eaeSJani Nikula 	return xe_pm_runtime_resume_and_get(display_to_xe(display)) ? INTEL_WAKEREF_DEF : NULL;
26*336c0eaeSJani Nikula }
27*336c0eaeSJani Nikula 
28*336c0eaeSJani Nikula struct ref_tracker *intel_display_rpm_get_if_in_use(struct intel_display *display)
29*336c0eaeSJani Nikula {
30*336c0eaeSJani Nikula 	return xe_pm_runtime_get_if_in_use(display_to_xe(display)) ? INTEL_WAKEREF_DEF : NULL;
31*336c0eaeSJani Nikula }
32*336c0eaeSJani Nikula 
33*336c0eaeSJani Nikula struct ref_tracker *intel_display_rpm_get_noresume(struct intel_display *display)
34*336c0eaeSJani Nikula {
35*336c0eaeSJani Nikula 	xe_pm_runtime_get_noresume(display_to_xe(display));
36*336c0eaeSJani Nikula 
37*336c0eaeSJani Nikula 	return INTEL_WAKEREF_DEF;
38*336c0eaeSJani Nikula }
39*336c0eaeSJani Nikula 
40*336c0eaeSJani Nikula void intel_display_rpm_put(struct intel_display *display, struct ref_tracker *wakeref)
41*336c0eaeSJani Nikula {
42*336c0eaeSJani Nikula 	if (wakeref)
43*336c0eaeSJani Nikula 		xe_pm_runtime_put(display_to_xe(display));
44*336c0eaeSJani Nikula }
45*336c0eaeSJani Nikula 
46*336c0eaeSJani Nikula void intel_display_rpm_put_unchecked(struct intel_display *display)
47*336c0eaeSJani Nikula {
48*336c0eaeSJani Nikula 	xe_pm_runtime_put(display_to_xe(display));
49*336c0eaeSJani Nikula }
50*336c0eaeSJani Nikula 
51*336c0eaeSJani Nikula bool intel_display_rpm_suspended(struct intel_display *display)
52*336c0eaeSJani Nikula {
53*336c0eaeSJani Nikula 	struct xe_device *xe = display_to_xe(display);
54*336c0eaeSJani Nikula 
55*336c0eaeSJani Nikula 	return pm_runtime_suspended(xe->drm.dev);
56*336c0eaeSJani Nikula }
57*336c0eaeSJani Nikula 
58*336c0eaeSJani Nikula void assert_display_rpm_held(struct intel_display *display)
59*336c0eaeSJani Nikula {
60*336c0eaeSJani Nikula 	/* FIXME */
61*336c0eaeSJani Nikula }
62*336c0eaeSJani Nikula 
63*336c0eaeSJani Nikula void intel_display_rpm_assert_block(struct intel_display *display)
64*336c0eaeSJani Nikula {
65*336c0eaeSJani Nikula 	/* FIXME */
66*336c0eaeSJani Nikula }
67*336c0eaeSJani Nikula 
68*336c0eaeSJani Nikula void intel_display_rpm_assert_unblock(struct intel_display *display)
69*336c0eaeSJani Nikula {
70*336c0eaeSJani Nikula 	/* FIXME */
71*336c0eaeSJani Nikula }
72