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