77 lines
1.9 KiB
C
77 lines
1.9 KiB
C
/* 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 bool
|
|
intel_runtime_pm_suspended(struct xe_runtime_pm *pm)
|
|
{
|
|
struct xe_device *xe = container_of(pm, struct xe_device, runtime_pm);
|
|
|
|
return pm_runtime_suspended(xe->drm.dev);
|
|
}
|
|
|
|
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) ? INTEL_WAKEREF_DEF : NULL;
|
|
}
|
|
|
|
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) ? INTEL_WAKEREF_DEF : NULL;
|
|
}
|
|
|
|
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 INTEL_WAKEREF_DEF;
|
|
}
|
|
|
|
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) = NULL)
|
|
|
|
#endif
|