summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Rini <trini@ti.com>2013-04-22 09:12:16 -0400
committerTom Rini <trini@ti.com>2013-04-22 09:12:16 -0400
commit500bccf84408ad71674b714cd9db3480736ad8e1 (patch)
treee91fdb3890025ce542a15e05b954c05b3bbfa41d
parent7fbf93e6b8928119c8b3d87ab55739f50aea5552 (diff)
parent352ef3f1b613cb711c51ec962d2cc1eafff1bf95 (diff)
downloadu-boot-imx-500bccf84408ad71674b714cd9db3480736ad8e1.zip
u-boot-imx-500bccf84408ad71674b714cd9db3480736ad8e1.tar.gz
u-boot-imx-500bccf84408ad71674b714cd9db3480736ad8e1.tar.bz2
Merge branch 'master' of git://www.denx.de/git/u-boot-cfi-flash
-rw-r--r--README9
-rw-r--r--common/flash.c11
2 files changed, 20 insertions, 0 deletions
diff --git a/README b/README
index 0bc0af5..862bb3e 100644
--- a/README
+++ b/README
@@ -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 */
}