mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-29 08:01:08 +00:00
arm: stm32f4: fix a bug when a random sector gets erased
Old sector number is not being cleared from FLASH_CR register. For example when first erased sector was 001 and then you want to erase sector 010, sector 011 gets erased instead. This patch clears old sector number from FLASH_CR register before a new one is written. Signed-off-by: Vadzim Dambrouski <pftbest@gmail.com>
This commit is contained in:
parent
4cd3246f2a
commit
43fb0e3926
2 changed files with 4 additions and 0 deletions
|
@ -97,6 +97,9 @@ int flash_erase(flash_info_t *info, int first, int last)
|
|||
while (readl(&STM32_FLASH->sr) & STM32_FLASH_SR_BSY)
|
||||
;
|
||||
|
||||
/* clear old sector number before writing a new one */
|
||||
clrbits_le32(&STM32_FLASH->cr, STM32_FLASH_CR_SNB_MASK);
|
||||
|
||||
if (bank == 0) {
|
||||
setbits_le32(&STM32_FLASH->cr,
|
||||
(i << STM32_FLASH_CR_SNB_OFFSET));
|
||||
|
|
|
@ -104,6 +104,7 @@ struct stm32_flash_regs {
|
|||
#define STM32_FLASH_CR_STRT (1 << 16)
|
||||
#define STM32_FLASH_CR_LOCK (1 << 31)
|
||||
#define STM32_FLASH_CR_SNB_OFFSET 3
|
||||
#define STM32_FLASH_CR_SNB_MASK (15 << STM32_FLASH_CR_SNB_OFFSET)
|
||||
|
||||
enum clock {
|
||||
CLOCK_CORE,
|
||||
|
|
Loading…
Reference in a new issue