| /* SPDX-License-Identifier: MIT */ |
| /* |
| * Copyright © 2023 Intel Corporation |
| */ |
| |
| #ifndef __INTEL_RUNTIME_PM_H__ |
| #define __INTEL_RUNTIME_PM_H__ |
| |
| #include "intel_wakeref.h" |
| #include "xe_device_types.h" |
| #include "xe_pm.h" |
| |
| #define intel_runtime_pm xe_runtime_pm |
| |
| static inline void disable_rpm_wakeref_asserts(void *rpm) |
| { |
| } |
| |
| static inline void enable_rpm_wakeref_asserts(void *rpm) |
| { |
| } |
| |
| static inline intel_wakeref_t intel_runtime_pm_get(struct xe_runtime_pm *pm) |
| { |
| struct xe_device *xe = container_of(pm, struct xe_device, runtime_pm); |
| |
| return xe_pm_runtime_resume_and_get(xe); |
| } |
| |
| static inline intel_wakeref_t intel_runtime_pm_get_if_in_use(struct xe_runtime_pm *pm) |
| { |
| struct xe_device *xe = container_of(pm, struct xe_device, runtime_pm); |
| |
| return xe_pm_runtime_get_if_in_use(xe); |
| } |
| |
| static inline intel_wakeref_t intel_runtime_pm_get_noresume(struct xe_runtime_pm *pm) |
| { |
| struct xe_device *xe = container_of(pm, struct xe_device, runtime_pm); |
| |
| xe_pm_runtime_get_noresume(xe); |
| return true; |
| } |
| |
| static inline void intel_runtime_pm_put_unchecked(struct xe_runtime_pm *pm) |
| { |
| struct xe_device *xe = container_of(pm, struct xe_device, runtime_pm); |
| |
| xe_pm_runtime_put(xe); |
| } |
| |
| static inline void intel_runtime_pm_put(struct xe_runtime_pm *pm, intel_wakeref_t wakeref) |
| { |
| if (wakeref) |
| intel_runtime_pm_put_unchecked(pm); |
| } |
| |
| #define intel_runtime_pm_get_raw intel_runtime_pm_get |
| #define intel_runtime_pm_put_raw intel_runtime_pm_put |
| #define assert_rpm_wakelock_held(x) do { } while (0) |
| #define assert_rpm_raw_wakeref_held(x) do { } while (0) |
| |
| #define with_intel_runtime_pm(rpm, wf) \ |
| for ((wf) = intel_runtime_pm_get(rpm); (wf); \ |
| intel_runtime_pm_put((rpm), (wf)), (wf) = 0) |
| |
| #endif |