This will allow to known the source of wakeup Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@xxxxxxxxxxxx> --- 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 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox