autoboot: make sure watchdog device(s) are handled with keyed autoboot
authorRasmus Villemoes <rasmus.villemoes@prevas.dk>
Tue, 27 Sep 2022 09:54:02 +0000 (11:54 +0200)
committerStefan Roese <sr@denx.de>
Tue, 27 Sep 2022 10:25:51 +0000 (12:25 +0200)
commitc11cedc876631c1753427a68db4efaa00f700a79
tree97324575af6a4e81af4140d6281bd6f383c17e46
parentc5f5ee373267d8a73b44ffa0de0d0a1a08115d8f
autoboot: make sure watchdog device(s) are handled with keyed autoboot

Currently, AUTOBOOT_KEYED and its variant AUTOBOOT_ENCRYPTION are
broken when one has an external always-running watchdog device with a
timeout shorter than the configured boot delay (in my case, I have a
gpio-wdt one with a timeout of 1 second), because we fail to call
WATCHDOG_RESET() in the loops where we wait for the bootdelay to
elapse.

This is done implicitly in the !AUTOBOOT_KEYED case,
i.e. abortboot_single_key(), because that loop contains a
udelay(10000), and udelay() does a WATCHDOG_RESET().

To fix this, simply add similar udelay() calls in the other loops.

Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
Reviewed-by: Stefan Roese <sr@denx.de>
common/autoboot.c