Add a CONFIG_CHECK_ECC_ERRORS define which causes the SDRAM POST and mtest command to check for ECC errors during execution.
The 83xx, 85xx, and 86xx architectures currently support enabling CONFIG_CHECK_ECC_ERRORS. Other architectures/boards can use it if they implement an ecc_count() and ecc_info() function. Signed-off-by: Peter Tyser <pty...@xes-inc.com> --- common/cmd_mem.c | 10 ++++++++++ include/common.h | 6 ++++++ post/drivers/memory.c | 5 +++++ 3 files changed, 21 insertions(+), 0 deletions(-) diff --git a/common/cmd_mem.c b/common/cmd_mem.c index a34b342..efedf79 100644 --- a/common/cmd_mem.c +++ b/common/cmd_mem.c @@ -691,6 +691,11 @@ int do_mem_mtest (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) __FUNCTION__, __LINE__, start, end); for (;;) { +#ifdef CONFIG_CHECK_ECC_ERRORS + if (ecc_count()) + ecc_info(); +#endif + if (ctrlc()) { putc ('\n'); return 1; @@ -917,6 +922,11 @@ int do_mem_mtest (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) #else /* The original, quickie test */ incr = 1; for (;;) { +#ifdef CONFIG_CHECK_ECC_ERRORS + if (ecc_count()) + ecc_info(); +#endif + if (ctrlc()) { putc ('\n'); return 1; diff --git a/include/common.h b/include/common.h index 7df9afa..e606a74 100644 --- a/include/common.h +++ b/include/common.h @@ -310,6 +310,12 @@ void api_init (void); /* common/memsize.c */ long get_ram_size (volatile long *, long); +/* driver/edac/ */ +#ifdef CONFIG_CHECK_ECC_ERRORS +void ecc_info(void); +int ecc_count(void); +#endif + /* $(BOARD)/$(BOARD).c */ void reset_phy (void); void fdc_hw_init (void); diff --git a/post/drivers/memory.c b/post/drivers/memory.c index 0062360..b8bbac5 100644 --- a/post/drivers/memory.c +++ b/post/drivers/memory.c @@ -477,6 +477,11 @@ int memory_post_test (int flags) } } +#ifdef CONFIG_CHECK_ECC_ERRORS + if (ecc_count()) + printf("WARNING: %d ECC errors detected!!\n", ecc_count()); +#endif + return ret; } -- 1.6.2.1 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot