drivers: flash: STM32WBA flash_stm32wba_fm.c: fix sector erase error
The STM32WBA Flash Manager driver is failing to erase a sector, instead of
erasing one sector, two sectors are erased.
Fix it by correctly calculating the number of sectors to erase
Signed-off-by: Eric Mechin <eric.mechin@st.com>
(cherry picked from commit 62a1b8a306ba011f4bc8576dd93c9e2b4cbbd786)
diff --git a/drivers/flash/flash_stm32wba_fm.c b/drivers/flash/flash_stm32wba_fm.c
index ff42c26..c248812 100644
--- a/drivers/flash/flash_stm32wba_fm.c
+++ b/drivers/flash/flash_stm32wba_fm.c
@@ -104,7 +104,7 @@
size_t len)
{
int rc;
- int sect_num = (len / FLASH_PAGE_SIZE) + 1;
+ int sect_num;
if (!flash_stm32_valid_range(dev, offset, len, true)) {
LOG_ERR("Erase range invalid. Offset: %p, len: %zu",
@@ -116,6 +116,9 @@
return 0;
}
+ /* len is a multiple of FLASH_PAGE_SIZE */
+ sect_num = len / FLASH_PAGE_SIZE;
+
flash_stm32_sem_take(dev);
LOG_DBG("Erase offset: %p, page: %ld, len: %zu, sect num: %d",