From: Denis Mukhin <[email protected]> 

Some prototype boards may not have (temporarily) all required reset
types supported (e.g. only warm reset supported).

Add `board_sysreset_default()` to obtain board-specific default reset
type to enable `reset` command on such boards.

Signed-off-by: Denis Mukhin <[email protected]>
---
 drivers/sysreset/sysreset-uclass.c | 7 ++++++-
 include/sysreset.h                 | 7 +++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/drivers/sysreset/sysreset-uclass.c 
b/drivers/sysreset/sysreset-uclass.c
index f25e09e9cd06..dc569a6b8ade 100644
--- a/drivers/sysreset/sysreset-uclass.c
+++ b/drivers/sysreset/sysreset-uclass.c
@@ -150,9 +150,14 @@ void reset_cpu(void)
 }
 
 #if IS_ENABLED(CONFIG_SYSRESET_CMD_RESET)
+__weak enum sysreset_t board_sysreset_default(void)
+{
+       return SYSRESET_COLD;
+}
+
 int do_reset(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
 {
-       enum sysreset_t reset_type = SYSRESET_COLD;
+       enum sysreset_t reset_type = board_sysreset_default();
 
        if (argc > 2)
                return CMD_RET_USAGE;
diff --git a/include/sysreset.h b/include/sysreset.h
index d1cc9ebc542a..a9e743c13e8b 100644
--- a/include/sysreset.h
+++ b/include/sysreset.h
@@ -161,4 +161,11 @@ void reset_cpu(void);
  */
 int sysreset_register_wdt(struct udevice *dev);
 
+/**
+ * board_sysreset_default() - Get board-specific reset type.
+ *
+ * @return:    Board-specific reset type.
+ */
+enum sysreset_t board_sysreset_default(void);
+
 #endif
-- 
2.54.0

Reply via email to