public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH] flash: Add optional verify-after-write feature
@ 2013-04-04  7:12 Stefan Roese
  2013-04-04 12:46 ` Wolfgang Denk
  2013-04-04 13:53 ` [U-Boot] [PATCH v2] " Stefan Roese
  0 siblings, 2 replies; 5+ messages in thread
From: Stefan Roese @ 2013-04-04  7:12 UTC (permalink / raw)
  To: u-boot

Sometimes it might make sense to verify the written data to NOR flash.
This patch adds this feature. To enable this verify-after-write, you
need to define CONFIG_SYS_FLASH_VERIFY_AFTER_WRITE in your board
config header.

Signed-off-by: Stefan Roese <sr@denx.de>
---
 common/flash.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/common/flash.c b/common/flash.c
index 8244ba2..3ae3c9a 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_SYS_FLASH_VERIFY_AFTER_WRITE)
+	if (memcmp(src_orig, addr_orig, cnt_orig)) {
+		printf("\nVerify-after-write failed!\n");
+		return ERR_PROG_ERROR;
+	}
+#endif /* CONFIG_SYS_FLASH_VERIFY_AFTER_WRITE */
+
 	return (ERR_OK);
 #endif /* CONFIG_SPD823TS */
 }
-- 
1.8.2

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2013-04-22  9:08 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-04-04  7:12 [U-Boot] [PATCH] flash: Add optional verify-after-write feature Stefan Roese
2013-04-04 12:46 ` Wolfgang Denk
2013-04-04 13:29   ` Stefan Roese
2013-04-04 13:53 ` [U-Boot] [PATCH v2] " Stefan Roese
2013-04-22  9:08   ` Stefan Roese

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox