flash: nor: jtagspi: make read_status report errors
authorPaul Fertser <fercerpav@gmail.com>
Tue, 30 Jan 2018 09:17:33 +0000 (12:17 +0300)
committerTomas Vanek <vanekt@fbl.cz>
Mon, 18 May 2020 03:50:02 +0000 (04:50 +0100)
This is a follow-up to 3c9bd7c6f30a34e3930e44dd2e8ce5f5a877b4eb.

Change-Id: If430f7fcfbba084d9cd74b32344ad43508a96a77
Signed-off-by: Paul Fertser <fercerpav@gmail.com>
Reviewed-on: http://openocd.zylin.com/4383
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
src/flash/nor/jtagspi.c

index f6e311ab820c22e25ab2adf36805ec374834b334..73b1c7a26ee994e623d876b5b50e0414f4b5508a 100644 (file)
@@ -228,13 +228,16 @@ static int jtagspi_probe(struct flash_bank *bank)
        return ERROR_OK;
 }
 
-static void jtagspi_read_status(struct flash_bank *bank, uint32_t *status)
+static int jtagspi_read_status(struct flash_bank *bank, uint32_t *status)
 {
        uint8_t buf;
-       if (jtagspi_cmd(bank, SPIFLASH_READ_STATUS, NULL, &buf, -8) == ERROR_OK) {
+       int err = jtagspi_cmd(bank, SPIFLASH_READ_STATUS, NULL, &buf, -8);
+       if (err == ERROR_OK) {
                *status = buf;
                /* LOG_DEBUG("status=0x%08" PRIx32, *status); */
        }
+
+       return err;
 }
 
 static int jtagspi_wait(struct flash_bank *bank, int timeout_ms)
@@ -245,7 +248,11 @@ static int jtagspi_wait(struct flash_bank *bank, int timeout_ms)
 
        do {
                dt = timeval_ms() - t0;
-               jtagspi_read_status(bank, &status);
+
+               int retval = jtagspi_read_status(bank, &status);
+               if (retval != ERROR_OK)
+                       return retval;
+
                if ((status & SPIFLASH_BSY_BIT) == 0) {
                        LOG_DEBUG("waited %" PRId64 " ms", dt);
                        return ERROR_OK;
@@ -262,7 +269,11 @@ static int jtagspi_write_enable(struct flash_bank *bank)
        uint32_t status;
 
        jtagspi_cmd(bank, SPIFLASH_WRITE_ENABLE, NULL, NULL, 0);
-       jtagspi_read_status(bank, &status);
+
+       int retval = jtagspi_read_status(bank, &status);
+       if (retval != ERROR_OK)
+               return retval;
+
        if ((status & SPIFLASH_WE_BIT) == 0) {
                LOG_ERROR("Cannot enable write to flash. Status=0x%08" PRIx32, status);
                return ERROR_FAIL;