aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorDavid Brownell <david-b@pacbell.net>2007-04-26 03:12:06 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2007-04-27 13:57:33 -0400
commit075c1771526c85849ed22298d048bc07e400aee5 (patch)
treea1579e93b450b0e870a7a65698f9a07bddbfd899 /include/linux
parent057f6c019fff9ee290641d50647359bb8898918e (diff)
define platform wakeup hook, use in pci_enable_wake()
This defines a platform hook to enable/disable a device as a wakeup event source. It's initially for use with ACPI, but more generally it could be used whenever enable_irq_wake()/disable_irq_wake() don't suffice. The hook is called -- if available -- inside pci_enable_wake(); and the semantics of that call are enhanced so that support for PCI PME# is no longer needed. It can now work for devices with "legacy PCI PM", when platform support allows it. (That support would use some board-specific signal for for the same purpose as PME#.) [akpm@linux-foundation.org: Make it compile with CONFIG_PM=n] Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Zhang Rui <rui.zhang@intel.com> Cc: Len Brown <lenb@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/pm.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/include/linux/pm.h b/include/linux/pm.h
index 21db05ac7c0b..b0ab623adbf5 100644
--- a/include/linux/pm.h
+++ b/include/linux/pm.h
@@ -273,6 +273,20 @@ extern void __suspend_report_result(const char *function, void *fn, int ret);
273 __suspend_report_result(__FUNCTION__, fn, ret); \ 273 __suspend_report_result(__FUNCTION__, fn, ret); \
274 } while (0) 274 } while (0)
275 275
276/*
277 * Platform hook to activate device wakeup capability, if that's not already
278 * handled by enable_irq_wake() etc.
279 * Returns zero on success, else negative errno
280 */
281extern int (*platform_enable_wakeup)(struct device *dev, int is_on);
282
283static inline int call_platform_enable_wakeup(struct device *dev, int is_on)
284{
285 if (platform_enable_wakeup)
286 return (*platform_enable_wakeup)(dev, is_on);
287 return 0;
288}
289
276#else /* !CONFIG_PM */ 290#else /* !CONFIG_PM */
277 291
278static inline int device_suspend(pm_message_t state) 292static inline int device_suspend(pm_message_t state)
@@ -294,6 +308,11 @@ static inline void dpm_runtime_resume(struct device * dev)
294 308
295#define suspend_report_result(fn, ret) do { } while (0) 309#define suspend_report_result(fn, ret) do { } while (0)
296 310
311static inline int call_platform_enable_wakeup(struct device *dev, int is_on)
312{
313 return -EIO;
314}
315
297#endif 316#endif
298 317
299/* changes to device_may_wakeup take effect on the next pm state change. 318/* changes to device_may_wakeup take effect on the next pm state change.