arm64: zynqmp: Wire watchdog internals
Enable watchdog in full U-Boot.
Similar changes were done by:
"arm: zynq: Wire watchdog internals"
(sha1: e6cc3b25d7
)
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
This commit is contained in:
parent
5b410deac6
commit
4490e013ee
@ -9,11 +9,13 @@
|
||||
#include <ahci.h>
|
||||
#include <scsi.h>
|
||||
#include <malloc.h>
|
||||
#include <wdt.h>
|
||||
#include <asm/arch/clk.h>
|
||||
#include <asm/arch/hardware.h>
|
||||
#include <asm/arch/sys_proto.h>
|
||||
#include <asm/arch/psu_init_gpl.h>
|
||||
#include <asm/io.h>
|
||||
#include <dm/uclass.h>
|
||||
#include <usb.h>
|
||||
#include <dwc3-uboot.h>
|
||||
#include <zynqmppl.h>
|
||||
@ -22,6 +24,10 @@
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
#if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_WDT)
|
||||
static struct udevice *watchdog_dev;
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_FPGA) && defined(CONFIG_FPGA_ZYNQMPPL) && \
|
||||
!defined(CONFIG_SPL_BUILD)
|
||||
static xilinx_desc zynqmppl = XILINX_ZYNQMP_DESC;
|
||||
@ -281,6 +287,11 @@ int board_early_init_f(void)
|
||||
ret = psu_init();
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_WDT) && !defined(CONFIG_SPL_BUILD)
|
||||
/* bss is not cleared at time when watchdog_reset() is called */
|
||||
watchdog_dev = NULL;
|
||||
#endif
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -299,9 +310,40 @@ int board_init(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_WDT)
|
||||
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");
|
||||
}
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_WATCHDOG
|
||||
/* Called by macro WATCHDOG_RESET */
|
||||
void watchdog_reset(void)
|
||||
{
|
||||
# if !defined(CONFIG_SPL_BUILD)
|
||||
static ulong next_reset;
|
||||
ulong now;
|
||||
|
||||
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
|
||||
}
|
||||
#endif
|
||||
|
||||
int board_early_init_r(void)
|
||||
{
|
||||
u32 val;
|
||||
|
Loading…
Reference in New Issue
Block a user