diff options
author | Paul Fertser <fercerpav@gmail.com> | 2018-01-30 12:17:33 +0300 |
---|---|---|
committer | Tomas Vanek <vanekt@fbl.cz> | 2020-05-18 04:50:02 +0100 |
commit | e41c0f4906e46d1076ce62a0da5518aa1ca280b8 (patch) | |
tree | c9d2e3370cc4e45f51507578c3d758703c0fd62f /src/flash/nor/jtagspi.c | |
parent | 11c5efd2ecd8df002567e272b874f2e6b821d9cd (diff) | |
download | riscv-openocd-e41c0f4906e46d1076ce62a0da5518aa1ca280b8.zip riscv-openocd-e41c0f4906e46d1076ce62a0da5518aa1ca280b8.tar.gz riscv-openocd-e41c0f4906e46d1076ce62a0da5518aa1ca280b8.tar.bz2 |
flash: nor: jtagspi: make read_status report errors
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>
Diffstat (limited to 'src/flash/nor/jtagspi.c')
-rw-r--r-- | src/flash/nor/jtagspi.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/flash/nor/jtagspi.c b/src/flash/nor/jtagspi.c index f6e311a..73b1c7a 100644 --- a/src/flash/nor/jtagspi.c +++ b/src/flash/nor/jtagspi.c @@ -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; |