Patchwork [U-Boot,2/2] microblaze: Fix watchdog initialization

login
register
mail settings
Submitter Michal Simek
Date Oct. 16, 2013, 7:06 a.m.
Message ID <aff1e9baf07fca7b7ab83b60091c2a2f4d6edd7a.1381907186.git.michal.simek@xilinx.com>
Download mbox | patch
Permalink /patch/283868/
State Accepted
Delegated to: Michal Simek
Headers show

Comments

Michal Simek - Oct. 16, 2013, 7:06 a.m.
The patch:
"blackfin: Move blackfin watchdog driver out of the blackfin arch folder."
(sha1: e9a389a18477c1c57a0b30e9ea8f4d38c6e26e63)
changed hw_watchdog_init() prototype which didn't match
with Microblaze one.
This patch fixes the driver and Microblaze initialization.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
---
Compilation error:
/mnt/disk/u-boot/include/asm/processor.h:19:12: error: conflicting types for 'hw_watchdog_init'
/mnt/disk/u-boot/include/watchdog.h:96:7: note: previous declaration of 'hw_watchdog_init' was here

---
 arch/microblaze/include/asm/processor.h | 1 -
 arch/microblaze/lib/board.c             | 6 +++---
 drivers/watchdog/xilinx_tb_wdt.c        | 6 ++----
 3 files changed, 5 insertions(+), 8 deletions(-)

--
1.8.2.3

Patch

diff --git a/arch/microblaze/include/asm/processor.h b/arch/microblaze/include/asm/processor.h
index a2a5811..5afc8f9 100644
--- a/arch/microblaze/include/asm/processor.h
+++ b/arch/microblaze/include/asm/processor.h
@@ -16,7 +16,6 @@  extern char __text_start[];
 void board_init(void);

 /* Watchdog functions */
-extern int hw_watchdog_init(void);
 extern void hw_watchdog_disable(void);

 #endif /* __ASM_MICROBLAZE_PROCESSOR_H */
diff --git a/arch/microblaze/lib/board.c b/arch/microblaze/lib/board.c
index f7182f2..896e73a 100644
--- a/arch/microblaze/lib/board.c
+++ b/arch/microblaze/lib/board.c
@@ -46,9 +46,6 @@  init_fnc_t *init_sequence[] = {
 	serial_init,
 	console_init_f,
 	interrupts_init,
-#ifdef CONFIG_XILINX_TB_WATCHDOG
-	hw_watchdog_init,
-#endif
 	timer_init,
 	NULL,
 };
@@ -97,6 +94,9 @@  void board_init_f(ulong not_used)

 	serial_initialize();

+#ifdef CONFIG_XILINX_TB_WATCHDOG
+	hw_watchdog_init();
+#endif
 	for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) {
 		WATCHDOG_RESET();
 		if ((*init_fnc_ptr) () != 0)
diff --git a/drivers/watchdog/xilinx_tb_wdt.c b/drivers/watchdog/xilinx_tb_wdt.c
index 4e46e4c..6336c94 100644
--- a/drivers/watchdog/xilinx_tb_wdt.c
+++ b/drivers/watchdog/xilinx_tb_wdt.c
@@ -54,7 +54,7 @@  static void hw_watchdog_isr(void *arg)
 	hw_watchdog_reset();
 }

-int hw_watchdog_init(void)
+void hw_watchdog_init(void)
 {
 	int ret;

@@ -65,7 +65,5 @@  int hw_watchdog_init(void)
 	ret = install_interrupt_handler(CONFIG_WATCHDOG_IRQ,
 						hw_watchdog_isr, NULL);
 	if (ret)
-		return 1;
-
-	return 0;
+		puts("Watchdog IRQ registration failed.");
 }