X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=package%2Fboot%2Fuboot-mvebu%2Fpatches%2F101-arm-mvebu-spl-Add-option-to-reset-the-board-on-DDR-t.patch;fp=package%2Fboot%2Fuboot-mvebu%2Fpatches%2F101-arm-mvebu-spl-Add-option-to-reset-the-board-on-DDR-t.patch;h=d7ba3ec68f5dc198009989f50a723f0c06f2873c;hb=696f0a1cb466d580a91a62717e474bb11e3d4a53;hp=0000000000000000000000000000000000000000;hpb=82da1dfd69aa80d31cd152b5c7bfb76fb25bb03f;p=openwrt%2Fstaging%2Fchunkeey.git diff --git a/package/boot/uboot-mvebu/patches/101-arm-mvebu-spl-Add-option-to-reset-the-board-on-DDR-t.patch b/package/boot/uboot-mvebu/patches/101-arm-mvebu-spl-Add-option-to-reset-the-board-on-DDR-t.patch new file mode 100644 index 0000000000..d7ba3ec68f --- /dev/null +++ b/package/boot/uboot-mvebu/patches/101-arm-mvebu-spl-Add-option-to-reset-the-board-on-DDR-t.patch @@ -0,0 +1,49 @@ +From 74767a3875c99b1a3d2818456a5fdc02ec1e4f93 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Marek=20Beh=C3=BAn?= +Date: Thu, 17 Feb 2022 13:54:42 +0100 +Subject: [PATCH 2/3] arm: mvebu: spl: Add option to reset the board on DDR + training failure +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Some boards may occacionally fail DDR training. Currently we hang() in +this case. Add an option that makes the board do an immediate reset in +such a case, so that a new training is tried as soon as possible, +instead of hanging and possibly waiting for watchdog to reset the board. + +(If the DDR training fails while booting the image via UART, we will + still hang - it doesn't make sense to reset in such a case, because + after reset the board will try booting from another medium, and the + UART booting utility does not expect that.) + +Signed-off-by: Marek Behún +Reviewed-by: Pali Rohár +Reviewed-by: Stefan Roese +--- + arch/arm/mach-mvebu/spl.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +--- a/arch/arm/mach-mvebu/spl.c ++++ b/arch/arm/mach-mvebu/spl.c +@@ -4,6 +4,7 @@ + */ + + #include ++#include + #include + #include + #include +@@ -290,7 +291,11 @@ void board_init_f(ulong dummy) + ret = ddr3_init(); + if (ret) { + debug("ddr3_init() failed: %d\n", ret); +- hang(); ++ if (IS_ENABLED(CONFIG_DDR_RESET_ON_TRAINING_FAILURE) && ++ get_boot_device() != BOOT_DEVICE_UART) ++ reset_cpu(); ++ else ++ hang(); + } + #endif +