board: freescale: p1_p2_rdb_pc: Turn off watchdog before reset
P1/P2 RDB boards have external max6370 watchdog connected to CPLD and this watchdog is not deactivated on board reset. So if it is active during board reset, it can trigger another reset when CPU is booting U-Boot. To prevent possible infinite reset loop caused by external watchdog, turn it off before reset. Do it via a new board_reset_prepare() callback which is called from do_reset() function before any reset sequence. Signed-off-by: Pali Rohár <pali@kernel.org> Signed-off-by: Peng Fan <peng.fan@nxp.com>
This commit is contained in:
@@ -44,6 +44,7 @@ __board_reset(void)
|
||||
{
|
||||
/* Do nothing */
|
||||
}
|
||||
void board_reset_prepare(void) __attribute__((weak, alias("__board_reset")));
|
||||
void board_reset(void) __attribute__((weak, alias("__board_reset")));
|
||||
void board_reset_last(void) __attribute__((weak, alias("__board_reset")));
|
||||
|
||||
@@ -320,6 +321,9 @@ int do_reset(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
|
||||
#else
|
||||
volatile ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
|
||||
|
||||
/* Call board-specific preparation for reset */
|
||||
board_reset_prepare();
|
||||
|
||||
/* Attempt board-specific reset */
|
||||
board_reset();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user