[PATCH 3/4] reset_resource: add wakeup source
Jean-Christophe PLAGNIOL-VILLARD
plagnioj at jcrosoft.com
Sat Oct 13 09:49:21 EDT 2012
This will allow to known the source of wakeup
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj at jcrosoft.com>
---
common/reset_source.c | 17 +++++++++++++++++
include/reset_source.h | 11 +++++++++++
2 files changed, 28 insertions(+)
diff --git a/common/reset_source.c b/common/reset_source.c
index ec1afc0..4791d29 100644
--- a/common/reset_source.c
+++ b/common/reset_source.c
@@ -34,11 +34,28 @@ void set_reset_source(enum reset_src_type st)
}
EXPORT_SYMBOL(set_reset_source);
+static const char * const wakeup_src_names[] = {
+ [WAKEUP_UKWNOWN] = "unknown",
+ [WAKEUP_POWER] = "power",
+ [WAKEUP_RTC] = "rtc",
+ [WAKEUP_TIMER] = "timer",
+ [WAKEUP_USER] = "user",
+ [WAKEUP_WOL] = "wakeup on lan",
+};
+
+void set_wakeup_source(enum wakeup_src_type st)
+{
+ setenv("global.system.wakeup", wakeup_src_names[st]);
+}
+EXPORT_SYMBOL(set_reset_source);
+
/* ensure this runs after the 'global' device is already registerd */
static int init_reset_source(void)
{
globalvar_add_simple("system.reset");
+ globalvar_add_simple("system.wakeup");
set_reset_source(RESET_UKWNOWN);
+ set_wakeup_source(WAKEUP_UKWNOWN);
return 0;
}
diff --git a/include/reset_source.h b/include/reset_source.h
index af4246a..1777b2b 100644
--- a/include/reset_source.h
+++ b/include/reset_source.h
@@ -31,4 +31,15 @@ static inline void set_reset_source(enum reset_src_type unused)
}
#endif
+enum wakeup_src_type {
+ WAKEUP_UKWNOWN, /* maybe the SoC cannot detect the wakeup source */
+ WAKEUP_POWER, /* Power restore */
+ WAKEUP_RTC, /* rtc */
+ WAKEUP_TIMER, /* timer */
+ WAKEUP_USER, /* user */
+ WAKEUP_WOL, /* wakeup on lan */
+};
+
+void set_wakeup_source(enum wakeup_src_type);
+
#endif /* __INCLUDE_RESET_SOURCE_H */
--
1.7.10.4
More information about the barebox
mailing list