diff options
author | Tom Rini <trini@ti.com> | 2013-04-22 13:12:16 (GMT) |
---|---|---|
committer | Tom Rini <trini@ti.com> | 2013-04-22 13:12:16 (GMT) |
commit | 500bccf84408ad71674b714cd9db3480736ad8e1 (patch) | |
tree | e91fdb3890025ce542a15e05b954c05b3bbfa41d | |
parent | 7fbf93e6b8928119c8b3d87ab55739f50aea5552 (diff) | |
parent | 352ef3f1b613cb711c51ec962d2cc1eafff1bf95 (diff) | |
download | u-boot-fsl-qoriq-500bccf84408ad71674b714cd9db3480736ad8e1.tar.xz |
Merge branch 'master' of git://www.denx.de/git/u-boot-cfi-flash
-rw-r--r-- | README | 9 | ||||
-rw-r--r-- | common/flash.c | 11 |
2 files changed, 20 insertions, 0 deletions
@@ -3248,6 +3248,15 @@ Configuration Settings: digits and dots. Recommended value: 45 (9..1) for 80 column displays, 15 (3..1) for 40 column displays. +- CONFIG_FLASH_VERIFY + If defined, the content of the flash (destination) is compared + against the source after the write operation. An error message + will be printed when the contents are not identical. + Please note that this option is useless in nearly all cases, + since such flash programming errors usually are detected earlier + while unprotecting/erasing/programming. Please only enable + this option if you really know what you are doing. + - CONFIG_SYS_RX_ETH_BUFFER: Defines the number of Ethernet receive buffers. On some Ethernet controllers it is recommended to set this value diff --git a/common/flash.c b/common/flash.c index 8244ba2..0c57a3f 100644 --- a/common/flash.c +++ b/common/flash.c @@ -149,6 +149,9 @@ flash_write (char *src, ulong addr, ulong cnt) flash_info_t *info_first = addr2info (addr); flash_info_t *info_last = addr2info (end ); flash_info_t *info; + __maybe_unused char *src_orig = src; + __maybe_unused char *addr_orig = (char *)addr; + __maybe_unused ulong cnt_orig = cnt; if (cnt == 0) { return (ERR_OK); @@ -185,6 +188,14 @@ flash_write (char *src, ulong addr, ulong cnt) addr += len; src += len; } + +#if defined(CONFIG_FLASH_VERIFY) + if (memcmp(src_orig, addr_orig, cnt_orig)) { + printf("\nVerify failed!\n"); + return ERR_PROG_ERROR; + } +#endif /* CONFIG_SYS_FLASH_VERIFY_AFTER_WRITE */ + return (ERR_OK); #endif /* CONFIG_SPD823TS */ } |