
On 29.6.2018 23:51, Shreenidhi Shedi wrote:
Signed-off-by: Shreenidhi Shedi yesshedi@gmail.com
Changes in v1: None
.../microblaze-generic/microblaze-generic.c | 43 +++++++++++++++++-- 1 file changed, 39 insertions(+), 4 deletions(-)
diff --git a/board/xilinx/microblaze-generic/microblaze-generic.c b/board/xilinx/microblaze-generic/microblaze-generic.c index 7d8f247fa9..1d48bfb20e 100644 --- a/board/xilinx/microblaze-generic/microblaze-generic.c +++ b/board/xilinx/microblaze-generic/microblaze-generic.c @@ -17,6 +17,7 @@ #include <asm/microblaze_intc.h> #include <asm/asm.h> #include <asm/gpio.h> +#include <dm/uclass.h>
DECLARE_GLOBAL_DATA_PTR;
@@ -24,6 +25,12 @@ DECLARE_GLOBAL_DATA_PTR; static int reset_pin = -1; #endif
+#if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_XILINX_TB_WATCHDOG)
CONFIG_WDT here because it doesn't need to be just XILINX_TB.
+#include <wdt.h>
Please move this header out of if - it is not needed.
+static struct udevice *watchdog_dev; +#endif /* !CONFIG_SPL_BUILD && CONFIG_XILINX_TB_WATCHDOG */
ulong ram_base;
int dram_init_banksize(void) @@ -68,10 +75,6 @@ int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) if (reset_pin != -1) gpio_direction_output(reset_pin, 1); #endif
-#ifdef CONFIG_XILINX_TB_WATCHDOG
- hw_watchdog_disable();
-#endif #endif puts("Resetting board\n"); __asm__ __volatile__ (" mts rmsr, r0;" \ @@ -91,9 +94,41 @@ static int gpio_init(void) return 0; }
+#ifdef CONFIG_XILINX_TB_WATCHDOG
CONFIG_WATCHDOG here.
+/* Called by macro WATCHDOG_RESET */ +void watchdog_reset(void) +{ +#if !defined(CONFIG_SPL_BUILD)
- ulong now;
- static ulong next_reset;
- if (!watchdog_dev)
return;
- now = timer_get_us();
- /* Do not reset the watchdog too often */
- if (now > next_reset) {
wdt_reset(watchdog_dev);
next_reset = now + 1000;
- }
+#endif /* !CONFIG_SPL_BUILD */ +} +#endif /* CONFIG_XILINX_TB_WATCHDOG */
int board_late_init(void) { gpio_init();
+#if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_XILINX_TB_WATCHDOG)
CONFIG_WDT here.
- watchdog_dev = NULL;
- if (uclass_get_device(UCLASS_WDT, 0, &watchdog_dev)) {
puts("Watchdog: Not found!\n");
- } else {
wdt_start(watchdog_dev, 0, 0);
puts("Watchdog: Started\n");
- }
I have sent today update on this code for zynq and zynqmp. And I hope that this will be accepted to get this code to work properly. https://lists.denx.de/pipermail/u-boot/2018-July/334227.html
if (uclass_get_device_by_seq(UCLASS_WDT, 0, &watchdog_dev)) { debug("Watchdog: Not found by seq!\n"); if (uclass_get_device(UCLASS_WDT, 0, &watchdog_dev)) { puts("Watchdog: Not found!\n"); return 0; } }
wdt_start(watchdog_dev, 0, 0); puts("Watchdog: Started\n");
+#endif /* !CONFIG_SPL_BUILD && CONFIG_XILINX_TB_WATCHDOG */
- return 0;
}
Thanks, Michal