aboutsummaryrefslogtreecommitdiff
path: root/src/flash
diff options
context:
space:
mode:
authorMarc Schink <dev@zapb.de>2021-06-21 16:18:38 +0200
committerAntonio Borneo <borneo.antonio@gmail.com>2021-06-27 14:57:16 +0100
commit94ba5219ede27d6193ebac15af0468de60c9bfca (patch)
tree709245a2bec8eade797642146554194bfe4c9a16 /src/flash
parent0478a93ed52fd8ddc0f68434cb2f05f22cbcad70 (diff)
downloadriscv-openocd-94ba5219ede27d6193ebac15af0468de60c9bfca.zip
riscv-openocd-94ba5219ede27d6193ebac15af0468de60c9bfca.tar.gz
riscv-openocd-94ba5219ede27d6193ebac15af0468de60c9bfca.tar.bz2
flash/nor/stm32l4: Fix stm32l4_probe()
The current implementation fails due to the assert() statements in get_stm32l4_rev_str() and get_stm32l4_bank_type_str(). Rearrange the code in order to fix the problem. Change-Id: If19c648dec8ddd3ef2fb801150114104b34c3bf2 Signed-off-by: Marc Schink <dev@zapb.de> Fixes: 64c2e03b23 ("flash/nor: improved API of flash_driver.info & fixed buffer overruns") Reviewed-on: http://openocd.zylin.com/6326 Tested-by: jenkins Reviewed-by: Jan Matyas <matyas@codasip.com> Reviewed-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com> Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Diffstat (limited to 'src/flash')
-rw-r--r--src/flash/nor/stm32l4x.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/flash/nor/stm32l4x.c b/src/flash/nor/stm32l4x.c
index cd62295..9598345 100644
--- a/src/flash/nor/stm32l4x.c
+++ b/src/flash/nor/stm32l4x.c
@@ -1350,7 +1350,6 @@ static const char *get_stm32l4_bank_type_str(struct flash_bank *bank)
{
struct stm32l4_flash_bank *stm32l4_info = bank->driver_priv;
assert(stm32l4_info->part_info);
- assert(stm32l4_info->probed);
return stm32l4_is_otp(bank) ? "OTP" :
stm32l4_info->dual_bank_mode ? "Flash dual" :
"Flash single";
@@ -1372,8 +1371,6 @@ static int stm32l4_probe(struct flash_bank *bank)
return retval;
const uint32_t device_id = stm32l4_info->idcode & 0xFFF;
- const uint16_t rev_id = stm32l4_info->idcode >> 16;
- const char *rev_str = get_stm32l4_rev_str(bank);
for (unsigned int n = 0; n < ARRAY_SIZE(stm32l4_parts); n++) {
if (device_id == stm32l4_parts[n].id) {
@@ -1388,12 +1385,15 @@ static int stm32l4_probe(struct flash_bank *bank)
}
part_info = stm32l4_info->part_info;
- stm32l4_info->flash_regs = stm32l4_info->part_info->default_flash_regs;
+ const char *rev_str = get_stm32l4_rev_str(bank);
+ const uint16_t rev_id = stm32l4_info->idcode >> 16;
LOG_INFO("device idcode = 0x%08" PRIx32 " (%s - Rev %s : 0x%04x - %s-bank)",
stm32l4_info->idcode, part_info->device_str, rev_str, rev_id,
get_stm32l4_bank_type_str(bank));
+ stm32l4_info->flash_regs = stm32l4_info->part_info->default_flash_regs;
+
/* read flash option register */
retval = stm32l4_read_flash_reg_by_index(bank, STM32_FLASH_OPTR_INDEX, &options);
if (retval != ERROR_OK)