blob: 8628fdf0198b6913b506ae58b36d4439a1185048 [file] [log] [blame]
lh9ed821d2023-04-07 01:36:19 -07001#ifndef _LINUX_WAKELOCK_H
2#define _LINUX_WAKELOCK_H
3
4#include <linux/ktime.h>
5#include <linux/device.h>
6
7struct wake_lock {
8 struct wakeup_source ws;
9};
10
11enum {
12 WAKE_LOCK_SUSPEND,
13 WAKE_LOCK_TYPE_COUNT
14};
15
16static inline void wake_lock_init(struct wake_lock *lock, int type,
17 const char *name)
18{
19 wakeup_source_init(&lock->ws, name);
20}
21
22static inline void wake_lock(struct wake_lock *lock)
23{
24 __pm_stay_awake(&lock->ws);
25}
26
27static inline void wake_unlock(struct wake_lock *lock)
28{
29 __pm_relax(&lock->ws);
30}
31
32static inline void wake_lock_timeout(struct wake_lock *lock, long timeout)
33{
34 __pm_wakeup_event(&lock->ws, jiffies_to_msecs(timeout));
35}
36
37static inline int wake_lock_active(struct wake_lock *lock)
38{
39 return lock->ws.active;
40}
41
42static inline void wake_lock_destroy(struct wake_lock *lock)
43{
44 wakeup_source_trash(&lock->ws);
45}
46
47#endif