aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/flash/nor/stm32f1x.c6
-rw-r--r--src/flash/nor/stm32f2x.c6
-rw-r--r--src/flash/nor/stm32lx.c6
3 files changed, 12 insertions, 6 deletions
diff --git a/src/flash/nor/stm32f1x.c b/src/flash/nor/stm32f1x.c
index 8f2e69e6..7e32098c 100644
--- a/src/flash/nor/stm32f1x.c
+++ b/src/flash/nor/stm32f1x.c
@@ -125,6 +125,7 @@ struct stm32x_flash_bank {
uint16_t default_rdp;
int user_data_offset;
int option_offset;
+ uint32_t user_bank_size;
};
static int stm32x_mass_erase(struct flash_bank *bank);
@@ -147,6 +148,7 @@ FLASH_BANK_COMMAND_HANDLER(stm32x_flash_bank_command)
stm32x_info->probed = 0;
stm32x_info->has_dual_banks = false;
stm32x_info->register_base = FLASH_REG_BASE_B0;
+ stm32x_info->user_bank_size = bank->size;
return ERROR_OK;
}
@@ -963,9 +965,9 @@ static int stm32x_probe(struct flash_bank *bank)
/* if the user sets the size manually then ignore the probed value
* this allows us to work around devices that have a invalid flash size register value */
- if (bank->size) {
+ if (stm32x_info->user_bank_size) {
LOG_INFO("ignoring flash probed value, using configured bank size");
- flash_size_in_kb = bank->size / 1024;
+ flash_size_in_kb = stm32x_info->user_bank_size / 1024;
}
LOG_INFO("flash size = %dkbytes", flash_size_in_kb);
diff --git a/src/flash/nor/stm32f2x.c b/src/flash/nor/stm32f2x.c
index 1d59e3c0..aa749a51 100644
--- a/src/flash/nor/stm32f2x.c
+++ b/src/flash/nor/stm32f2x.c
@@ -158,6 +158,7 @@ struct stm32x_flash_bank {
struct stm32x_options option_bytes;
int probed;
bool has_large_mem; /* stm32f42x/stm32f43x family */
+ uint32_t user_bank_size;
};
/* flash bank stm32x <base> <size> 0 0 <target#>
@@ -173,6 +174,7 @@ FLASH_BANK_COMMAND_HANDLER(stm32x_flash_bank_command)
bank->driver_priv = stm32x_info;
stm32x_info->probed = 0;
+ stm32x_info->user_bank_size = bank->size;
return ERROR_OK;
}
@@ -793,9 +795,9 @@ static int stm32x_probe(struct flash_bank *bank)
/* if the user sets the size manually then ignore the probed value
* this allows us to work around devices that have a invalid flash size register value */
- if (bank->size) {
+ if (stm32x_info->user_bank_size) {
LOG_INFO("ignoring flash probed value, using configured bank size");
- flash_size_in_kb = bank->size / 1024;
+ flash_size_in_kb = stm32x_info->user_bank_size / 1024;
}
LOG_INFO("flash size = %dkbytes", flash_size_in_kb);
diff --git a/src/flash/nor/stm32lx.c b/src/flash/nor/stm32lx.c
index a475841a..61ae5740 100644
--- a/src/flash/nor/stm32lx.c
+++ b/src/flash/nor/stm32lx.c
@@ -122,6 +122,7 @@ static int stm32lx_wait_until_bsy_clear(struct flash_bank *bank);
struct stm32lx_flash_bank {
int probed;
bool has_dual_banks;
+ uint32_t user_bank_size;
};
/* flash bank stm32lx <base> <size> 0 0 <target#>
@@ -145,6 +146,7 @@ FLASH_BANK_COMMAND_HANDLER(stm32lx_flash_bank_command)
stm32lx_info->probed = 0;
stm32lx_info->has_dual_banks = false;
+ stm32lx_info->user_bank_size = bank->size;
return ERROR_OK;
}
@@ -597,8 +599,8 @@ static int stm32lx_probe(struct flash_bank *bank)
/* if the user sets the size manually then ignore the probed value
* this allows us to work around devices that have a invalid flash size register value */
- if (bank->size) {
- flash_size_in_kb = bank->size / 1024;
+ if (stm32lx_info->user_bank_size) {
+ flash_size_in_kb = stm32lx_info->user_bank_size / 1024;
LOG_INFO("ignoring flash probed value, using configured bank size: %dkbytes", flash_size_in_kb);
}