[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