1/* SPDX-License-Identifier: MIT */
2/* Copyright © 2025 Intel Corporation */
3
4#ifndef __INTEL_DISPLAY_RPM__
5#define __INTEL_DISPLAY_RPM__
6
7#include <linux/types.h>
8
9struct intel_display;
10struct ref_tracker;
11
12struct ref_tracker *intel_display_rpm_get(struct intel_display *display);
13void intel_display_rpm_put(struct intel_display *display, struct ref_tracker *wakeref);
14
15#define __with_intel_display_rpm(__display, __wakeref) \
16 for (struct ref_tracker *(__wakeref) = intel_display_rpm_get(__display); (__wakeref); \
17 intel_display_rpm_put((__display), (__wakeref)), (__wakeref) = NULL)
18
19#define with_intel_display_rpm(__display) \
20 __with_intel_display_rpm((__display), __UNIQUE_ID(wakeref))
21
22/* Only for special cases. */
23bool intel_display_rpm_suspended(struct intel_display *display);
24
25void assert_display_rpm_held(struct intel_display *display);
26void intel_display_rpm_assert_block(struct intel_display *display);
27void intel_display_rpm_assert_unblock(struct intel_display *display);
28
29/* Only for display power implementation. */
30struct ref_tracker *intel_display_rpm_get_raw(struct intel_display *display);
31void intel_display_rpm_put_raw(struct intel_display *display, struct ref_tracker *wakeref);
32
33struct ref_tracker *intel_display_rpm_get_if_in_use(struct intel_display *display);
34struct ref_tracker *intel_display_rpm_get_noresume(struct intel_display *display);
35void intel_display_rpm_put_unchecked(struct intel_display *display);
36
37#endif /* __INTEL_DISPLAY_RPM__ */
38