Patchwork [U-Boot,v6,08/31] Declare watchdog functions in watchdog.h

login
register
mail settings
Submitter Simon Glass
Date March 6, 2013, 12:39 a.m.
Message ID <1362530405-10824-9-git-send-email-sjg@chromium.org>
Download mbox | patch
Permalink /patch/225207/
State Accepted, archived
Delegated to: Tom Rini
Headers show

Comments

Simon Glass - March 6, 2013, 12:39 a.m.
These functions are only available for powerpc and are not declared in a
header file. We want to use the rest function in two places (board_f and
board_r), so declare the functions in watchdog.h.

Signed-off-by: Simon Glass <sjg@chromium.org>
---
Changes in v6:
- Fix up watchdog support for m68k and sh

Changes in v5:
- Avoid using static declaration for init_func_watchdog_reset()

Changes in v4: None
Changes in v3: None
Changes in v2: None

 arch/m68k/lib/board.c    |  1 +
 arch/powerpc/lib/board.c | 11 ++---------
 arch/sh/lib/board.c      |  1 +
 include/watchdog.h       | 18 ++++++++++++++++++
 4 files changed, 22 insertions(+), 9 deletions(-)

Patch

diff --git a/arch/m68k/lib/board.c b/arch/m68k/lib/board.c
index b676255..adaccfe 100644
--- a/arch/m68k/lib/board.c
+++ b/arch/m68k/lib/board.c
@@ -80,6 +80,7 @@  extern ulong __init_end;
 extern ulong __bss_end;
 
 #if defined(CONFIG_WATCHDOG)
+# undef INIT_FUNC_WATCHDOG_INIT
 # define INIT_FUNC_WATCHDOG_INIT	watchdog_init,
 # define WATCHDOG_DISABLE		watchdog_disable
 
diff --git a/arch/powerpc/lib/board.c b/arch/powerpc/lib/board.c
index 0b23d30..acb6fdb 100644
--- a/arch/powerpc/lib/board.c
+++ b/arch/powerpc/lib/board.c
@@ -237,25 +237,18 @@  static int init_func_spi(void)
 /***********************************************************************/
 
 #if defined(CONFIG_WATCHDOG)
-static int init_func_watchdog_init(void)
+int init_func_watchdog_init(void)
 {
 	puts("       Watchdog enabled\n");
 	WATCHDOG_RESET();
 	return 0;
 }
 
-#define INIT_FUNC_WATCHDOG_INIT	init_func_watchdog_init,
-
-static int init_func_watchdog_reset(void)
+int init_func_watchdog_reset(void)
 {
 	WATCHDOG_RESET();
 	return 0;
 }
-
-#define INIT_FUNC_WATCHDOG_RESET	init_func_watchdog_reset,
-#else
-#define INIT_FUNC_WATCHDOG_INIT		/* undef */
-#define INIT_FUNC_WATCHDOG_RESET	/* undef */
 #endif /* CONFIG_WATCHDOG */
 
 /*
diff --git a/arch/sh/lib/board.c b/arch/sh/lib/board.c
index 34d7881..6e43acf 100644
--- a/arch/sh/lib/board.c
+++ b/arch/sh/lib/board.c
@@ -65,6 +65,7 @@  static int sh_flash_init(void)
 #if defined(CONFIG_WATCHDOG)
 extern int watchdog_init(void);
 extern int watchdog_disable(void);
+# undef INIT_FUNC_WATCHDOG_INIT
 # define INIT_FUNC_WATCHDOG_INIT	watchdog_init,
 # define WATCHDOG_DISABLE       	watchdog_disable
 #else
diff --git a/include/watchdog.h b/include/watchdog.h
index 8c92a0b..97ec186 100644
--- a/include/watchdog.h
+++ b/include/watchdog.h
@@ -27,6 +27,24 @@ 
 #ifndef _WATCHDOG_H_
 #define _WATCHDOG_H_
 
+#if !defined(__ASSEMBLY__)
+/*
+ * Reset the watchdog timer, always returns 0
+ *
+ * This function is here since it is shared between board_f() and board_r(),
+ * and the legacy arch/<arch>/board.c code.
+ */
+int init_func_watchdog_reset(void);
+#endif
+
+#ifdef CONFIG_WATCHDOG
+#define INIT_FUNC_WATCHDOG_INIT	init_func_watchdog_init,
+#define INIT_FUNC_WATCHDOG_RESET	init_func_watchdog_reset,
+#else
+#define INIT_FUNC_WATCHDOG_INIT
+#define INIT_FUNC_WATCHDOG_RESET
+#endif
+
 #if defined(CONFIG_HW_WATCHDOG) && defined(CONFIG_WATCHDOG)
 #  error "Configuration error: CONFIG_HW_WATCHDOG and CONFIG_WATCHDOG can't be used together."
 #endif