flash: nor: jtagspi: make read_status report errors
This is a follow-up to 3c9bd7c6f3
.
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>
This commit is contained in:
parent
11c5efd2ec
commit
e41c0f4906
|
@ -228,13 +228,16 @@ static int jtagspi_probe(struct flash_bank *bank)
|
||||||
return ERROR_OK;
|
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;
|
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;
|
*status = buf;
|
||||||
/* LOG_DEBUG("status=0x%08" PRIx32, *status); */
|
/* LOG_DEBUG("status=0x%08" PRIx32, *status); */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int jtagspi_wait(struct flash_bank *bank, int timeout_ms)
|
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 {
|
do {
|
||||||
dt = timeval_ms() - t0;
|
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) {
|
if ((status & SPIFLASH_BSY_BIT) == 0) {
|
||||||
LOG_DEBUG("waited %" PRId64 " ms", dt);
|
LOG_DEBUG("waited %" PRId64 " ms", dt);
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
|
@ -262,7 +269,11 @@ static int jtagspi_write_enable(struct flash_bank *bank)
|
||||||
uint32_t status;
|
uint32_t status;
|
||||||
|
|
||||||
jtagspi_cmd(bank, SPIFLASH_WRITE_ENABLE, NULL, NULL, 0);
|
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) {
|
if ((status & SPIFLASH_WE_BIT) == 0) {
|
||||||
LOG_ERROR("Cannot enable write to flash. Status=0x%08" PRIx32, status);
|
LOG_ERROR("Cannot enable write to flash. Status=0x%08" PRIx32, status);
|
||||||
return ERROR_FAIL;
|
return ERROR_FAIL;
|
||||||
|
|
Loading…
Reference in New Issue