diff options
author | Alexander Kurz <akurz@blala.de> | 2016-02-13 15:11:59 +0100 |
---|---|---|
committer | Andreas Fritiofson <andreas.fritiofson@gmail.com> | 2016-02-29 19:08:45 +0000 |
commit | 144f96c35afbff6771481dbfd39e863ff1a63bd7 (patch) | |
tree | fc21f51671222ef6a492e0f745f324b04737b272 | |
parent | e0a28b290f77df9e9a7e9f80e006cc9e2202c89d (diff) |
cfi intel: fixing faulty flash write error message
Writing to Intel CFI flash with unaligned tail bytes raised a false
error message although all data was programmed successfully. e.g.:
> flash write_image image 0x602e0000 bin
> Programming at 0x602e0000, count 0x00000002 bytes remaining
> couldn't write word at base 0x60000000, address 0x602e0000
> error writing to flash at address 0x60000000 at offset 0x002e0000
Root cause for this false error was a mixup of two result variables
introduced with ecc8041c.
Change-Id: Ib6b85293dbed946a36a307e5b198c47b901145bf
Signed-off-by: Alexander Kurz <akurz@blala.de>
Reviewed-on: http://openocd.zylin.com/3233
Tested-by: jenkins
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
-rw-r--r-- | src/flash/nor/cfi.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/flash/nor/cfi.c b/src/flash/nor/cfi.c index b8088300..df1de8c7 100644 --- a/src/flash/nor/cfi.c +++ b/src/flash/nor/cfi.c @@ -2002,7 +2002,9 @@ static int cfi_intel_write_word(struct flash_bank *bank, uint8_t *word, uint32_t uint8_t status; retval = cfi_intel_wait_status_busy(bank, cfi_info->word_write_timeout, &status); - if (retval != 0x80) { + if (retval != ERROR_OK) + return retval; + if (status != 0x80) { retval = cfi_send_command(bank, 0xff, flash_address(bank, 0, 0x0)); if (retval != ERROR_OK) return retval; |