From 7c5925783416fc860f335cf9d403ec9ee0534390 Mon Sep 17 00:00:00 2001
From: Andrej Kazmin <funnyfish@funnyfish.botik.ru>
Date: Fri, 22 Aug 2014 11:35:06 +0400
Subject: [PATCH] flash/nor/at91samd: add small delay before checking nvm
 status

OpenOCD's SWD subsystem doesn't currently have a consistent WAIT
handling (i.e. it doesn't ever retry, just returns an error), so right
after a row write a small delay is needed as AHB access is stalled
during the flashing operation.

The issue was exposed with a samd20 using ftdi SWD transport.

Change-Id: I07d99d3a96845cc689c3904a41f4d41344f200aa
Signed-off-by: Andrej Kazmin <funnyfish@funnyfish.botik.ru>
Signed-off-by: Paul Fertser <fercerpav@gmail.com>
Reviewed-on: http://openocd.zylin.com/2268
Tested-by: jenkins
Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
---
 src/flash/nor/at91samd.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/flash/nor/at91samd.c b/src/flash/nor/at91samd.c
index ece1fd20f..de0f1cc74 100644
--- a/src/flash/nor/at91samd.c
+++ b/src/flash/nor/at91samd.c
@@ -658,6 +658,9 @@ static int samd_write_row(struct flash_bank *bank, uint32_t address,
 			return res;
 		}
 
+		/* Access through AHB is stalled while flash is being programmed */
+		usleep(200);
+
 		error = samd_check_error(bank->target);
 		if (error)
 			return ERROR_FAIL;
-- 
GitLab