Fix for segfault and some clang reported problems in stmqspi
Change-Id: Id003adb574085cdd603cc13aeb6f2efec73593f1 Signed-off-by: Andreas Bolsch <hyphen0break@gmail.com> Reviewed-on: https://review.openocd.org/c/openocd/+/7345 Tested-by: jenkins Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
This commit is contained in:
parent
1762aa04ce
commit
2bad55bf83
|
@ -616,8 +616,6 @@ COMMAND_HANDLER(stmqspi_handle_set)
|
||||||
|
|
||||||
LOG_DEBUG("%s", __func__);
|
LOG_DEBUG("%s", __func__);
|
||||||
|
|
||||||
dual = (stmqspi_info->saved_cr & BIT(SPI_DUAL_FLASH)) ? 1 : 0;
|
|
||||||
|
|
||||||
/* chip_erase_cmd, sectorsize and erase_cmd are optional */
|
/* chip_erase_cmd, sectorsize and erase_cmd are optional */
|
||||||
if ((CMD_ARGC < 7) || (CMD_ARGC > 10))
|
if ((CMD_ARGC < 7) || (CMD_ARGC > 10))
|
||||||
return ERROR_COMMAND_SYNTAX_ERROR;
|
return ERROR_COMMAND_SYNTAX_ERROR;
|
||||||
|
@ -628,8 +626,9 @@ COMMAND_HANDLER(stmqspi_handle_set)
|
||||||
|
|
||||||
target = bank->target;
|
target = bank->target;
|
||||||
stmqspi_info = bank->driver_priv;
|
stmqspi_info = bank->driver_priv;
|
||||||
|
dual = (stmqspi_info->saved_cr & BIT(SPI_DUAL_FLASH)) ? 1 : 0;
|
||||||
|
|
||||||
/* invalidate all old info */
|
/* invalidate all flash device info */
|
||||||
if (stmqspi_info->probed)
|
if (stmqspi_info->probed)
|
||||||
free(bank->sectors);
|
free(bank->sectors);
|
||||||
bank->size = 0;
|
bank->size = 0;
|
||||||
|
@ -721,10 +720,8 @@ COMMAND_HANDLER(stmqspi_handle_set)
|
||||||
|
|
||||||
uint32_t dcr;
|
uint32_t dcr;
|
||||||
retval = target_read_u32(target, io_base + SPI_DCR, &dcr);
|
retval = target_read_u32(target, io_base + SPI_DCR, &dcr);
|
||||||
|
|
||||||
if (retval != ERROR_OK)
|
if (retval != ERROR_OK)
|
||||||
return retval;
|
return retval;
|
||||||
|
|
||||||
fsize = (dcr >> SPI_FSIZE_POS) & (BIT(SPI_FSIZE_LEN) - 1);
|
fsize = (dcr >> SPI_FSIZE_POS) & (BIT(SPI_FSIZE_LEN) - 1);
|
||||||
|
|
||||||
LOG_DEBUG("FSIZE = 0x%04x", fsize);
|
LOG_DEBUG("FSIZE = 0x%04x", fsize);
|
||||||
|
@ -2080,16 +2077,17 @@ static int stmqspi_probe(struct flash_bank *bank)
|
||||||
bool octal_dtr;
|
bool octal_dtr;
|
||||||
int retval;
|
int retval;
|
||||||
|
|
||||||
if (stmqspi_info->probed) {
|
/* invalidate all flash device info */
|
||||||
|
if (stmqspi_info->probed)
|
||||||
|
free(bank->sectors);
|
||||||
bank->size = 0;
|
bank->size = 0;
|
||||||
bank->num_sectors = 0;
|
bank->num_sectors = 0;
|
||||||
free(bank->sectors);
|
|
||||||
bank->sectors = NULL;
|
bank->sectors = NULL;
|
||||||
memset(&stmqspi_info->dev, 0, sizeof(stmqspi_info->dev));
|
|
||||||
stmqspi_info->sfdp_dummy1 = 0;
|
stmqspi_info->sfdp_dummy1 = 0;
|
||||||
stmqspi_info->sfdp_dummy2 = 0;
|
stmqspi_info->sfdp_dummy2 = 0;
|
||||||
stmqspi_info->probed = false;
|
stmqspi_info->probed = false;
|
||||||
}
|
memset(&stmqspi_info->dev, 0, sizeof(stmqspi_info->dev));
|
||||||
|
stmqspi_info->dev.name = "unknown";
|
||||||
|
|
||||||
/* Abort any previous operation */
|
/* Abort any previous operation */
|
||||||
retval = stmqspi_abort(bank);
|
retval = stmqspi_abort(bank);
|
||||||
|
@ -2104,8 +2102,8 @@ static int stmqspi_probe(struct flash_bank *bank)
|
||||||
/* check whether QSPI_ABR is writeable and readback returns the value written */
|
/* check whether QSPI_ABR is writeable and readback returns the value written */
|
||||||
retval = target_write_u32(target, io_base + QSPI_ABR, magic);
|
retval = target_write_u32(target, io_base + QSPI_ABR, magic);
|
||||||
if (retval == ERROR_OK) {
|
if (retval == ERROR_OK) {
|
||||||
retval = target_read_u32(target, io_base + QSPI_ABR, &data);
|
(void)target_read_u32(target, io_base + QSPI_ABR, &data);
|
||||||
retval = target_write_u32(target, io_base + QSPI_ABR, 0);
|
(void)target_write_u32(target, io_base + QSPI_ABR, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data == magic) {
|
if (data == magic) {
|
||||||
|
|
Loading…
Reference in New Issue