mail archive of the barebox mailing list
 help / color / mirror / Atom feed
From: Sascha Hauer <s.hauer@pengutronix.de>
To: Barebox List <barebox@lists.infradead.org>
Subject: [PATCH 5/7] reset-source: Allow different priorities
Date: Wed, 26 Aug 2015 13:17:14 +0200	[thread overview]
Message-ID: <1440587836-22105-6-git-send-email-s.hauer@pengutronix.de> (raw)
In-Reply-To: <1440587836-22105-1-git-send-email-s.hauer@pengutronix.de>

Different devices may report the reset source with different levels
of certainty. For example a SoC may see a power-on reset, but this
may only be because an external PMIC has power cycled the SoC. This
means the PMIC knows the real reason better and thus the reset reason
from the PMIC should be preferred.

This patch introduces priorities for the reset_source to handle the
above scenario. Also add a of_get_reset_source_priority() function
to retrieve the desired priority from the device tree.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
 common/reset_source.c  | 23 ++++++++++++++++++++++-
 include/reset_source.h | 14 ++++++++++++--
 2 files changed, 34 insertions(+), 3 deletions(-)

diff --git a/common/reset_source.c b/common/reset_source.c
index f9ee99b..b02a694 100644
--- a/common/reset_source.c
+++ b/common/reset_source.c
@@ -30,6 +30,7 @@ static const char * const reset_src_names[] = {
 };
 
 static enum reset_src_type reset_source;
+static unsigned int reset_source_priority;
 
 enum reset_src_type reset_source_get(void)
 {
@@ -37,9 +38,13 @@ enum reset_src_type reset_source_get(void)
 }
 EXPORT_SYMBOL(reset_source_get);
 
-void reset_source_set(enum reset_src_type st)
+void reset_source_set_priority(enum reset_src_type st, unsigned int priority)
 {
+	if (priority <= reset_source_priority)
+		return;
+
 	reset_source = st;
+	reset_source_priority = priority;
 }
 EXPORT_SYMBOL(reset_source_set);
 
@@ -52,3 +57,19 @@ static int reset_source_init(void)
 }
 
 coredevice_initcall(reset_source_init);
+
+/**
+ * of_get_reset_source_priority() - get the desired reset source priority from
+ *                                  device tree
+ * @node:	The device_node to read the property from
+ *
+ * return: The priority
+ */
+unsigned int of_get_reset_source_priority(struct device_node *node)
+{
+	unsigned int priority = RESET_SOURCE_DEFAULT_PRIORITY;
+
+	of_property_read_u32(node, "reset-source-priority", &priority);
+
+	return priority;
+}
diff --git a/include/reset_source.h b/include/reset_source.h
index 367f93b..be9d9b1 100644
--- a/include/reset_source.h
+++ b/include/reset_source.h
@@ -25,10 +25,11 @@ enum reset_src_type {
 };
 
 #ifdef CONFIG_RESET_SOURCE
-void reset_source_set(enum reset_src_type);
+void reset_source_set_priority(enum reset_src_type, unsigned int priority);
 enum reset_src_type reset_source_get(void);
 #else
-static inline void reset_source_set(enum reset_src_type unused)
+static inline void reset_source_set_priority(enum reset_src_type,
+		unsigned int priority)
 {
 }
 
@@ -38,4 +39,13 @@ static inline enum reset_src_type reset_source_get(void)
 }
 #endif
 
+#define RESET_SOURCE_DEFAULT_PRIORITY 100
+
+static inline void reset_source_set(enum reset_src_type type)
+{
+	reset_source_set_priority(type, RESET_SOURCE_DEFAULT_PRIORITY);
+}
+
+unsigned int of_get_reset_source_priority(struct device_node *node);
+
 #endif /* __INCLUDE_RESET_SOURCE_H */
-- 
2.5.0


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

  parent reply	other threads:[~2015-08-26 11:17 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-26 11:17 Allow multiple restart/watchdog/reset-source handlers Sascha Hauer
2015-08-26 11:17 ` [PATCH 1/7] restart: replace reset_cpu with registered restart handlers Sascha Hauer
2015-08-26 11:17 ` [PATCH 2/7] watchdog: Allow multiple watchdogs Sascha Hauer
2015-08-26 11:17 ` [PATCH 3/7] watchdog: Give watchdogs a name Sascha Hauer
2015-08-26 11:17 ` [PATCH 4/7] reset-source: Use globalvar_add_simple_enum Sascha Hauer
2015-08-26 11:17 ` Sascha Hauer [this message]
2015-08-26 11:17 ` [PATCH 6/7] mfd: da9063: add da9063 watchdog and system restart driver Sascha Hauer
2015-08-26 11:17 ` [PATCH 7/7] mfd: da9053: add da9053 " Sascha Hauer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1440587836-22105-6-git-send-email-s.hauer@pengutronix.de \
    --to=s.hauer@pengutronix.de \
    --cc=barebox@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox