From 144f96c35afbff6771481dbfd39e863ff1a63bd7 Mon Sep 17 00:00:00 2001 From: Alexander Kurz Date: Sat, 13 Feb 2016 15:11:59 +0100 Subject: [PATCH] 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 Reviewed-on: http://openocd.zylin.com/3233 Tested-by: jenkins Reviewed-by: Spencer Oliver --- src/flash/nor/cfi.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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; -- 2.39.5