diff options
author | Michael Walle <michael@walle.cc> | 2021-11-15 23:45:49 +0100 |
---|---|---|
committer | Priyanka Jain <priyanka.jain@nxp.com> | 2022-02-28 11:59:35 +0530 |
commit | 453d1711d22c4bccd48848a8450aa95cbc5008cc (patch) | |
tree | c8ccdc9f46d091dea6f7bd7b35178ca70fb51b42 /board/kontron/sl28 | |
parent | 2ba8a446ceece208c5926b623ddfd66bd163ff27 (diff) | |
download | u-boot-453d1711d22c4bccd48848a8450aa95cbc5008cc.tar.gz u-boot-453d1711d22c4bccd48848a8450aa95cbc5008cc.tar.bz2 u-boot-453d1711d22c4bccd48848a8450aa95cbc5008cc.zip |
board: sl28: disable recovery watchdog
This board has an internal watchdog which supervises the board startup.
Although, the initial state of the watchdog is configurable, it is
enabled by default. In board_late_init(), which means almost everything
worked as expected, disable the watchdog.
Signed-off-by: Michael Walle <michael@walle.cc>
Reviewed-by: Priyanka Jain <priyanka.jain@nxp.com>
Diffstat (limited to 'board/kontron/sl28')
-rw-r--r-- | board/kontron/sl28/sl28.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/board/kontron/sl28/sl28.c b/board/kontron/sl28/sl28.c index 9cde48e61e..3c48a9141d 100644 --- a/board/kontron/sl28/sl28.c +++ b/board/kontron/sl28/sl28.c @@ -15,6 +15,7 @@ #include <asm/arch/soc.h> #include <fsl_immap.h> #include <netdev.h> +#include <wdt.h> #include <sl28cpld.h> #include <fdtdec.h> @@ -73,6 +74,34 @@ int checkboard(void) return 0; } +static void stop_recovery_watchdog(void) +{ + struct udevice *dev; + int ret; + + ret = uclass_get_device_by_driver(UCLASS_WDT, + DM_DRIVER_GET(sl28cpld_wdt), &dev); + if (!ret) + wdt_stop(dev); +} + +int fsl_board_late_init(void) +{ + /* + * Usually, the after a board reset, the watchdog is enabled by + * default. This is to supervise the bootloader boot-up. Therefore, + * to prevent a watchdog reset if we don't actively kick it, we have + * to disable it. + * + * If the watchdog isn't enabled at reset (which is a configuration + * option) disabling it doesn't hurt either. + */ + if (!CONFIG_IS_ENABLED(WATCHDOG_AUTOSTART)) + stop_recovery_watchdog(); + + return 0; +} + void detail_board_ddr_info(void) { print_ddr_info(0); |