#ifndef __BACKPORT_PM_H #define __BACKPORT_PM_H #include_next #ifndef PM_EVENT_AUTO #define PM_EVENT_AUTO 0x0400 #endif #ifndef PM_EVENT_SLEEP #define PM_EVENT_SLEEP (PM_EVENT_SUSPEND) #endif #ifndef PMSG_IS_AUTO #define PMSG_IS_AUTO(msg) (((msg).event & PM_EVENT_AUTO) != 0) #endif #ifndef DEFINE_SIMPLE_DEV_PM_OPS #define pm_sleep_ptr(_ptr) (IS_ENABLED(CONFIG_PM_SLEEP) ? (_ptr) : NULL) #define SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \ .suspend = pm_sleep_ptr(suspend_fn), \ .resume = pm_sleep_ptr(resume_fn), \ .freeze = pm_sleep_ptr(suspend_fn), \ .thaw = pm_sleep_ptr(resume_fn), \ .poweroff = pm_sleep_ptr(suspend_fn), \ .restore = pm_sleep_ptr(resume_fn), #define RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \ .runtime_suspend = suspend_fn, \ .runtime_resume = resume_fn, \ .runtime_idle = idle_fn, #define _DEFINE_DEV_PM_OPS(name, \ suspend_fn, resume_fn, \ runtime_suspend_fn, runtime_resume_fn, idle_fn) \ const struct dev_pm_ops name = { \ SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \ RUNTIME_PM_OPS(runtime_suspend_fn, runtime_resume_fn, idle_fn) \ } #define DEFINE_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn) \ _DEFINE_DEV_PM_OPS(name, suspend_fn, resume_fn, NULL, NULL, NULL) #endif #endif /* __BACKPORT_PM_H */