Blame view
include/linux/pm_wakeup.h
5.03 KB
9a3df1f7d PM: Convert wakeu... |
1 2 3 4 |
/* * pm_wakeup.h - Power management wakeup interface * * Copyright (C) 2008 Alan Stern |
074037ec7 PM / Wakeup: Intr... |
5 |
* Copyright (C) 2010 Rafael J. Wysocki, Novell Inc. |
9a3df1f7d PM: Convert wakeu... |
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _LINUX_PM_WAKEUP_H #define _LINUX_PM_WAKEUP_H #ifndef _DEVICE_H_ # error "please don't include this file directly" #endif |
228c54ef7 PM: pm_wakeup - s... |
28 |
#include <linux/types.h> |
074037ec7 PM / Wakeup: Intr... |
29 30 |
/** * struct wakeup_source - Representation of wakeup sources |
2430d12c9 PM: describe kern... |
31 |
* |
074037ec7 PM / Wakeup: Intr... |
32 33 34 35 36 37 38 39 |
* @total_time: Total time this wakeup source has been active. * @max_time: Maximum time this wakeup source has been continuously active. * @last_time: Monotonic clock when the wakeup source's was activated last time. * @event_count: Number of signaled wakeup events. * @active_count: Number of times the wakeup sorce was activated. * @relax_count: Number of times the wakeup sorce was deactivated. * @hit_count: Number of times the wakeup sorce might abort system suspend. * @active: Status of the wakeup source. |
9a3df1f7d PM: Convert wakeu... |
40 |
*/ |
074037ec7 PM / Wakeup: Intr... |
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
struct wakeup_source { char *name; struct list_head entry; spinlock_t lock; struct timer_list timer; unsigned long timer_expires; ktime_t total_time; ktime_t max_time; ktime_t last_time; unsigned long event_count; unsigned long active_count; unsigned long relax_count; unsigned long hit_count; unsigned int active:1; }; #ifdef CONFIG_PM_SLEEP /* * Changes to device_may_wakeup take effect on the next pm state change. */ |
074037ec7 PM / Wakeup: Intr... |
62 63 64 65 |
static inline bool device_can_wakeup(struct device *dev) { return dev->power.can_wakeup; } |
074037ec7 PM / Wakeup: Intr... |
66 |
static inline bool device_may_wakeup(struct device *dev) |
9a3df1f7d PM: Convert wakeu... |
67 |
{ |
074037ec7 PM / Wakeup: Intr... |
68 |
return dev->power.can_wakeup && !!dev->power.wakeup; |
9a3df1f7d PM: Convert wakeu... |
69 |
} |
074037ec7 PM / Wakeup: Intr... |
70 71 72 73 74 75 76 77 78 |
/* drivers/base/power/wakeup.c */ extern struct wakeup_source *wakeup_source_create(const char *name); extern void wakeup_source_destroy(struct wakeup_source *ws); extern void wakeup_source_add(struct wakeup_source *ws); extern void wakeup_source_remove(struct wakeup_source *ws); extern struct wakeup_source *wakeup_source_register(const char *name); extern void wakeup_source_unregister(struct wakeup_source *ws); extern int device_wakeup_enable(struct device *dev); extern int device_wakeup_disable(struct device *dev); |
cb8f51bda PM: Do not create... |
79 |
extern void device_set_wakeup_capable(struct device *dev, bool capable); |
074037ec7 PM / Wakeup: Intr... |
80 81 82 83 84 85 86 87 88 89 |
extern int device_init_wakeup(struct device *dev, bool val); extern int device_set_wakeup_enable(struct device *dev, bool enable); extern void __pm_stay_awake(struct wakeup_source *ws); extern void pm_stay_awake(struct device *dev); extern void __pm_relax(struct wakeup_source *ws); extern void pm_relax(struct device *dev); extern void __pm_wakeup_event(struct wakeup_source *ws, unsigned int msec); extern void pm_wakeup_event(struct device *dev, unsigned int msec); #else /* !CONFIG_PM_SLEEP */ |
228c54ef7 PM: pm_wakeup - s... |
90 |
static inline void device_set_wakeup_capable(struct device *dev, bool capable) |
eb9d0fe40 PCI ACPI: Rework ... |
91 |
{ |
228c54ef7 PM: pm_wakeup - s... |
92 |
dev->power.can_wakeup = capable; |
eb9d0fe40 PCI ACPI: Rework ... |
93 |
} |
228c54ef7 PM: pm_wakeup - s... |
94 |
static inline bool device_can_wakeup(struct device *dev) |
9a3df1f7d PM: Convert wakeu... |
95 96 97 |
{ return dev->power.can_wakeup; } |
074037ec7 PM / Wakeup: Intr... |
98 |
static inline struct wakeup_source *wakeup_source_create(const char *name) |
9a3df1f7d PM: Convert wakeu... |
99 |
{ |
074037ec7 PM / Wakeup: Intr... |
100 |
return NULL; |
9a3df1f7d PM: Convert wakeu... |
101 |
} |
074037ec7 PM / Wakeup: Intr... |
102 103 104 |
static inline void wakeup_source_destroy(struct wakeup_source *ws) {} static inline void wakeup_source_add(struct wakeup_source *ws) {} |
9a3df1f7d PM: Convert wakeu... |
105 |
|
074037ec7 PM / Wakeup: Intr... |
106 107 108 |
static inline void wakeup_source_remove(struct wakeup_source *ws) {} static inline struct wakeup_source *wakeup_source_register(const char *name) |
9a3df1f7d PM: Convert wakeu... |
109 |
{ |
074037ec7 PM / Wakeup: Intr... |
110 |
return NULL; |
9a3df1f7d PM: Convert wakeu... |
111 |
} |
074037ec7 PM / Wakeup: Intr... |
112 113 114 |
static inline void wakeup_source_unregister(struct wakeup_source *ws) {} static inline int device_wakeup_enable(struct device *dev) |
228c54ef7 PM: pm_wakeup - s... |
115 |
{ |
805bdaec1 PM: Make ACPI wak... |
116 117 |
dev->power.should_wakeup = true; return 0; |
228c54ef7 PM: pm_wakeup - s... |
118 |
} |
c300bd2fb PCI: include linu... |
119 |
|
074037ec7 PM / Wakeup: Intr... |
120 |
static inline int device_wakeup_disable(struct device *dev) |
9a3df1f7d PM: Convert wakeu... |
121 |
{ |
805bdaec1 PM: Make ACPI wak... |
122 |
dev->power.should_wakeup = false; |
074037ec7 PM / Wakeup: Intr... |
123 |
return 0; |
9a3df1f7d PM: Convert wakeu... |
124 |
} |
805bdaec1 PM: Make ACPI wak... |
125 |
static inline int device_set_wakeup_enable(struct device *dev, bool enable) |
228c54ef7 PM: pm_wakeup - s... |
126 |
{ |
805bdaec1 PM: Make ACPI wak... |
127 128 |
dev->power.should_wakeup = enable; return 0; |
228c54ef7 PM: pm_wakeup - s... |
129 |
} |
805bdaec1 PM: Make ACPI wak... |
130 131 132 133 134 135 |
static inline int device_init_wakeup(struct device *dev, bool val) { device_set_wakeup_capable(dev, val); device_set_wakeup_enable(dev, val); return 0; } |
074037ec7 PM / Wakeup: Intr... |
136 |
|
805bdaec1 PM: Make ACPI wak... |
137 |
static inline bool device_may_wakeup(struct device *dev) |
228c54ef7 PM: pm_wakeup - s... |
138 |
{ |
805bdaec1 PM: Make ACPI wak... |
139 |
return dev->power.can_wakeup && dev->power.should_wakeup; |
228c54ef7 PM: pm_wakeup - s... |
140 |
} |
9a3df1f7d PM: Convert wakeu... |
141 |
|
074037ec7 PM / Wakeup: Intr... |
142 143 144 145 146 147 148 149 150 151 152 153 154 |
static inline void __pm_stay_awake(struct wakeup_source *ws) {} static inline void pm_stay_awake(struct device *dev) {} static inline void __pm_relax(struct wakeup_source *ws) {} static inline void pm_relax(struct device *dev) {} static inline void __pm_wakeup_event(struct wakeup_source *ws, unsigned int msec) {} static inline void pm_wakeup_event(struct device *dev, unsigned int msec) {} #endif /* !CONFIG_PM_SLEEP */ |
9a3df1f7d PM: Convert wakeu... |
155 156 |
#endif /* _LINUX_PM_WAKEUP_H */ |