mirror of
https://github.com/openwrt/openwrt.git
synced 2025-01-04 04:54:18 +00:00
50 lines
1.6 KiB
Diff
50 lines
1.6 KiB
Diff
|
From 74767a3875c99b1a3d2818456a5fdc02ec1e4f93 Mon Sep 17 00:00:00 2001
|
||
|
From: =?UTF-8?q?Marek=20Beh=C3=BAn?= <marek.behun@nic.cz>
|
||
|
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 <marek.behun@nic.cz>
|
||
|
Reviewed-by: Pali Rohár <pali@kernel.org>
|
||
|
Reviewed-by: Stefan Roese <sr@denx.de>
|
||
|
---
|
||
|
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 <common.h>
|
||
|
+#include <cpu_func.h>
|
||
|
#include <dm.h>
|
||
|
#include <debug_uart.h>
|
||
|
#include <fdtdec.h>
|
||
|
@@ -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
|
||
|
|