flash/nor/at91samd: add small delay before checking nvm status
authorAndrej Kazmin <funnyfish@funnyfish.botik.ru>
Fri, 22 Aug 2014 07:35:06 +0000 (11:35 +0400)
committerAndreas Fritiofson <andreas.fritiofson@gmail.com>
Wed, 11 Feb 2015 23:22:40 +0000 (23:22 +0000)
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

index ece1fd20f6d6d9bf6d3b147264377dd10df55289..de0f1cc745821f1843690a2fb6e5caa51c16ba42 100644 (file)
@@ -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;