xref: /linux/drivers/gpu/drm/i915/display/intel_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 "i915_drv.h"
5*336c0eaeSJani Nikula #include "intel_display_rpm.h"
6*336c0eaeSJani Nikula #include "intel_runtime_pm.h"
7*336c0eaeSJani Nikula 
8*336c0eaeSJani Nikula static struct intel_runtime_pm *display_to_rpm(struct intel_display *display)
9*336c0eaeSJani Nikula {
10*336c0eaeSJani Nikula 	struct drm_i915_private *i915 = to_i915(display->drm);
11*336c0eaeSJani Nikula 
12*336c0eaeSJani Nikula 	return &i915->runtime_pm;
13*336c0eaeSJani Nikula }
14*336c0eaeSJani Nikula 
15*336c0eaeSJani Nikula struct ref_tracker *intel_display_rpm_get_raw(struct intel_display *display)
16*336c0eaeSJani Nikula {
17*336c0eaeSJani Nikula 	return intel_runtime_pm_get_raw(display_to_rpm(display));
18*336c0eaeSJani Nikula }
19*336c0eaeSJani Nikula 
20*336c0eaeSJani Nikula void intel_display_rpm_put_raw(struct intel_display *display, struct ref_tracker *wakeref)
21*336c0eaeSJani Nikula {
22*336c0eaeSJani Nikula 	intel_runtime_pm_put_raw(display_to_rpm(display), wakeref);
23*336c0eaeSJani Nikula }
24*336c0eaeSJani Nikula 
25*336c0eaeSJani Nikula struct ref_tracker *intel_display_rpm_get(struct intel_display *display)
26*336c0eaeSJani Nikula {
27*336c0eaeSJani Nikula 	return intel_runtime_pm_get(display_to_rpm(display));
28*336c0eaeSJani Nikula }
29*336c0eaeSJani Nikula 
30*336c0eaeSJani Nikula struct ref_tracker *intel_display_rpm_get_if_in_use(struct intel_display *display)
31*336c0eaeSJani Nikula {
32*336c0eaeSJani Nikula 	return intel_runtime_pm_get_if_in_use(display_to_rpm(display));
33*336c0eaeSJani Nikula }
34*336c0eaeSJani Nikula 
35*336c0eaeSJani Nikula struct ref_tracker *intel_display_rpm_get_noresume(struct intel_display *display)
36*336c0eaeSJani Nikula {
37*336c0eaeSJani Nikula 	return intel_runtime_pm_get_noresume(display_to_rpm(display));
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 	intel_runtime_pm_put(display_to_rpm(display), wakeref);
43*336c0eaeSJani Nikula }
44*336c0eaeSJani Nikula 
45*336c0eaeSJani Nikula void intel_display_rpm_put_unchecked(struct intel_display *display)
46*336c0eaeSJani Nikula {
47*336c0eaeSJani Nikula 	intel_runtime_pm_put_unchecked(display_to_rpm(display));
48*336c0eaeSJani Nikula }
49*336c0eaeSJani Nikula 
50*336c0eaeSJani Nikula bool intel_display_rpm_suspended(struct intel_display *display)
51*336c0eaeSJani Nikula {
52*336c0eaeSJani Nikula 	return intel_runtime_pm_suspended(display_to_rpm(display));
53*336c0eaeSJani Nikula }
54*336c0eaeSJani Nikula 
55*336c0eaeSJani Nikula void assert_display_rpm_held(struct intel_display *display)
56*336c0eaeSJani Nikula {
57*336c0eaeSJani Nikula 	assert_rpm_wakelock_held(display_to_rpm(display));
58*336c0eaeSJani Nikula }
59*336c0eaeSJani Nikula 
60*336c0eaeSJani Nikula void intel_display_rpm_assert_block(struct intel_display *display)
61*336c0eaeSJani Nikula {
62*336c0eaeSJani Nikula 	disable_rpm_wakeref_asserts(display_to_rpm(display));
63*336c0eaeSJani Nikula }
64*336c0eaeSJani Nikula 
65*336c0eaeSJani Nikula void intel_display_rpm_assert_unblock(struct intel_display *display)
66*336c0eaeSJani Nikula {
67*336c0eaeSJani Nikula 	enable_rpm_wakeref_asserts(display_to_rpm(display));
68*336c0eaeSJani Nikula }
69