This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git


The following commit(s) were added to refs/heads/master by this push:
     new 251b19272fe arch/arm/src/stm32f0l0g0: add FLASH support for STM32C0
251b19272fe is described below

commit 251b19272fef71144635935f96fe2da132969b9d
Author: raiden00pl <[email protected]>
AuthorDate: Wed Oct 1 14:07:28 2025 +0200

    arch/arm/src/stm32f0l0g0: add FLASH support for STM32C0
    
    Add FLASH support for STM32C0 based on STM32G0 FLASH driver.
    FLASH support is identical for these two, except that the STM32G0 can 
support
    dual bank, which is not available in the STM32C0.
    
    Signed-off-by: raiden00pl <[email protected]>
---
 arch/arm/src/stm32f0l0g0/Kconfig                   |  43 ++++++++
 arch/arm/src/stm32f0l0g0/hardware/stm32c0_flash.h  | 115 ++++++++++++++++++++-
 arch/arm/src/stm32f0l0g0/stm32_flash.c             |   4 +-
 .../{stm32g0_flash.c => stm32g0c0_flash.c}         |  37 ++++---
 4 files changed, 180 insertions(+), 19 deletions(-)

diff --git a/arch/arm/src/stm32f0l0g0/Kconfig b/arch/arm/src/stm32f0l0g0/Kconfig
index ae2f6954add..823254a704c 100644
--- a/arch/arm/src/stm32f0l0g0/Kconfig
+++ b/arch/arm/src/stm32f0l0g0/Kconfig
@@ -909,166 +909,207 @@ config ARCH_CHIP_STM32L073RZ
 config ARCH_CHIP_STM32C051D8
        bool "STM32C051D8"
        select ARCH_CHIP_STM32C051XX
+       select STM32F0L0G0_FLASH_CONFIG_8
 
 config ARCH_CHIP_STM32C051F6
        bool "STM32C051F6"
        select ARCH_CHIP_STM32C051XX
+       select STM32F0L0G0_FLASH_CONFIG_6
 
 config ARCH_CHIP_STM32C051F8
        bool "STM32C051F8"
        select ARCH_CHIP_STM32C051XX
+       select STM32F0L0G0_FLASH_CONFIG_8
 
 config ARCH_CHIP_STM32C051G6
        bool "STM32C051G6"
        select ARCH_CHIP_STM32C051XX
+       select STM32F0L0G0_FLASH_CONFIG_6
 
 config ARCH_CHIP_STM32C051G8
        bool "STM32C051G8"
        select ARCH_CHIP_STM32C051XX
+       select STM32F0L0G0_FLASH_CONFIG_8
 
 config ARCH_CHIP_STM32C051K6
        bool "STM32C051K6"
        select ARCH_CHIP_STM32C051XX
+       select STM32F0L0G0_FLASH_CONFIG_6
 
 config ARCH_CHIP_STM32C051K8
        bool "STM32C051K8"
        select ARCH_CHIP_STM32C051XX
+       select STM32F0L0G0_FLASH_CONFIG_8
 
 config ARCH_CHIP_STM32C051C6
        bool "STM32C051C6"
        select ARCH_CHIP_STM32C051XX
+       select STM32F0L0G0_FLASH_CONFIG_6
 
 config ARCH_CHIP_STM32C051C8
        bool "STM32C051C8"
        select ARCH_CHIP_STM32C051XX
+       select STM32F0L0G0_FLASH_CONFIG_8
 
 config ARCH_CHIP_STM32C071F8
        bool "STM32C071F8"
        select ARCH_CHIP_STM32C071XX
+       select STM32F0L0G0_FLASH_CONFIG_8
 
 config ARCH_CHIP_STM32C071FB
        bool "STM32C071FB"
        select ARCH_CHIP_STM32C071XX
+       select STM32F0L0G0_FLASH_CONFIG_B
 
 config ARCH_CHIP_STM32C071G8
        bool "STM32C071G8"
        select ARCH_CHIP_STM32C071XX
+       select STM32F0L0G0_FLASH_CONFIG_8
 
 config ARCH_CHIP_STM32C071GB
        bool "STM32C071GB"
        select ARCH_CHIP_STM32C071XX
+       select STM32F0L0G0_FLASH_CONFIG_B
 
 config ARCH_CHIP_STM32C071K8
        bool "STM32C071K8"
        select ARCH_CHIP_STM32C071XX
+       select STM32F0L0G0_FLASH_CONFIG_8
 
 config ARCH_CHIP_STM32C071KB
        bool "STM32C071KB"
        select ARCH_CHIP_STM32C071XX
+       select STM32F0L0G0_FLASH_CONFIG_B
 
 config ARCH_CHIP_STM32C071C8
        bool "STM32C071C8"
        select ARCH_CHIP_STM32C071XX
+       select STM32F0L0G0_FLASH_CONFIG_8
 
 config ARCH_CHIP_STM32C071CB
        bool "STM32C071CB"
        select ARCH_CHIP_STM32C071XX
+       select STM32F0L0G0_FLASH_CONFIG_B
 
 config ARCH_CHIP_STM32C071R8
        bool "STM32C071R8"
        select ARCH_CHIP_STM32C071XX
+       select STM32F0L0G0_FLASH_CONFIG_8
 
 config ARCH_CHIP_STM32C071RB
        bool "STM32C071RB"
        select ARCH_CHIP_STM32C071XX
+       select STM32F0L0G0_FLASH_CONFIG_B
 
 config ARCH_CHIP_STM32C091FB
        bool "STM32C091FB"
        select ARCH_CHIP_STM32C091XX
+       select STM32F0L0G0_FLASH_CONFIG_B
 
 config ARCH_CHIP_STM32C091FC
        bool "STM32C091FC"
        select ARCH_CHIP_STM32C091XX
+       select STM32F0L0G0_FLASH_CONFIG_C
 
 config ARCH_CHIP_STM32C091EC
        bool "STM32C091EC"
        select ARCH_CHIP_STM32C091XX
+       select STM32F0L0G0_FLASH_CONFIG_C
 
 config ARCH_CHIP_STM32C091GB
        bool "STM32C091GB"
        select ARCH_CHIP_STM32C091XX
+       select STM32F0L0G0_FLASH_CONFIG_B
 
 config ARCH_CHIP_STM32C091GC
        bool "STM32C091GC"
        select ARCH_CHIP_STM32C091XX
+       select STM32F0L0G0_FLASH_CONFIG_C
 
 config ARCH_CHIP_STM32C091KB
        bool "STM32C091KB"
        select ARCH_CHIP_STM32C091XX
+       select STM32F0L0G0_FLASH_CONFIG_B
 
 config ARCH_CHIP_STM32C091KC
        bool "STM32C091KC"
        select ARCH_CHIP_STM32C091XX
+       select STM32F0L0G0_FLASH_CONFIG_C
 
 config ARCH_CHIP_STM32C091CB
        bool "STM32C091CB"
        select ARCH_CHIP_STM32C091XX
+       select STM32F0L0G0_FLASH_CONFIG_B
 
 config ARCH_CHIP_STM32C091CC
        bool "STM32C091CC"
        select ARCH_CHIP_STM32C091XX
+       select STM32F0L0G0_FLASH_CONFIG_C
 
 config ARCH_CHIP_STM32C091RB
        bool "STM32C091RB"
        select ARCH_CHIP_STM32C091XX
+       select STM32F0L0G0_FLASH_CONFIG_B
 
 config ARCH_CHIP_STM32C091RC
        bool "STM32C091RC"
        select ARCH_CHIP_STM32C091XX
+       select STM32F0L0G0_FLASH_CONFIG_C
 
 config ARCH_CHIP_STM32C092FB
        bool "STM32C092FB"
        select ARCH_CHIP_STM32C092XX
+       select STM32F0L0G0_FLASH_CONFIG_B
 
 config ARCH_CHIP_STM32C092FC
        bool "STM32C092FC"
        select ARCH_CHIP_STM32C092XX
+       select STM32F0L0G0_FLASH_CONFIG_C
 
 config ARCH_CHIP_STM32C092EC
        bool "STM32C092EC"
        select ARCH_CHIP_STM32C092XX
+       select STM32F0L0G0_FLASH_CONFIG_C
 
 config ARCH_CHIP_STM32C092GB
        bool "STM32C092GB"
        select ARCH_CHIP_STM32C092XX
+       select STM32F0L0G0_FLASH_CONFIG_B
 
 config ARCH_CHIP_STM32C092GC
        bool "STM32C092GC"
        select ARCH_CHIP_STM32C092XX
+       select STM32F0L0G0_FLASH_CONFIG_C
 
 config ARCH_CHIP_STM32C092KB
        bool "STM32C092KB"
        select ARCH_CHIP_STM32C092XX
+       select STM32F0L0G0_FLASH_CONFIG_B
 
 config ARCH_CHIP_STM32C092KC
        bool "STM32C092KC"
        select ARCH_CHIP_STM32C092XX
+       select STM32F0L0G0_FLASH_CONFIG_C
 
 config ARCH_CHIP_STM32C092CB
        bool "STM32C092CB"
        select ARCH_CHIP_STM32C092XX
+       select STM32F0L0G0_FLASH_CONFIG_B
 
 config ARCH_CHIP_STM32C092CC
        bool "STM32C092CC"
        select ARCH_CHIP_STM32C092XX
+       select STM32F0L0G0_FLASH_CONFIG_C
 
 config ARCH_CHIP_STM32C092RB
        bool "STM32C092RB"
        select ARCH_CHIP_STM32C092XX
+       select STM32F0L0G0_FLASH_CONFIG_B
 
 config ARCH_CHIP_STM32C092RC
        bool "STM32C092RC"
        select ARCH_CHIP_STM32C092XX
+       select STM32F0L0G0_FLASH_CONFIG_C
 
 endchoice # ST STM32F0/L0/G0/C0 Chip Selection
 
@@ -1210,6 +1251,7 @@ config STM32F0L0G0_STM32G0
        select STM32F0L0G0_HAVE_TIM16
        select STM32F0L0G0_HAVE_TIM17
        select STM32F0L0G0_HAVE_I2C2
+       select ARCH_HAVE_PROGMEM
 
 config STM32F0L0G0_STM32L0
        bool
@@ -1235,6 +1277,7 @@ config STM32F0L0G0_STM32C0
        select STM32F0L0G0_HAVE_TIM14
        select STM32F0L0G0_HAVE_TIM16
        select STM32F0L0G0_HAVE_TIM17
+       select ARCH_HAVE_PROGMEM
 
 config STM32F0L0G0_STM32F03X
        bool
diff --git a/arch/arm/src/stm32f0l0g0/hardware/stm32c0_flash.h 
b/arch/arm/src/stm32f0l0g0/hardware/stm32c0_flash.h
index 2d7480429db..dfcdb1e5e13 100644
--- a/arch/arm/src/stm32f0l0g0/hardware/stm32c0_flash.h
+++ b/arch/arm/src/stm32f0l0g0/hardware/stm32c0_flash.h
@@ -87,6 +87,119 @@
 #define FLASH_ACR_DBGSWEN           (1 << 18) /* Bit 18: Debug access software 
enable */
                                               /* Bits 19-31: Reserved */
 
-/* TODO */
+/* Flash Status Register (SR) */
+
+#define FLASH_SR_EOP                 (1)       /* Bit 0: End of operation */
+#define FLASH_SR_OPERR               (1 << 1)  /* Bit 1: Operation error */
+                                               /* Bit 2: Reserved */
+#define FLASH_SR_PROGERR             (1 << 3)  /* Bit 3: Programming error */
+#define FLASH_SR_WRPERR              (1 << 4)  /* Bit 4: Write protection 
error */
+#define FLASH_SR_PGAERR              (1 << 5)  /* Bit 5: Programming alignment 
error */
+#define FLASH_SR_SIZERR              (1 << 6)  /* Bit 6: Size error */
+#define FLASH_SR_PGSERR              (1 << 7)  /* Bit 7: Programming sequence 
error */
+#define FLASH_SR_MISSERR             (1 << 8)  /* Bit 8: Fast programming data 
miss error */
+#define FLASH_SR_FASTERR             (1 << 9)  /* Bit 9: Fast programming 
error */
+                                               /* Bits 10-13: Reserved */
+#define FLASH_SR_RDERR               (1 << 14) /* Bit 14: PCROP read error */
+#define FLASH_SR_OPTVERR             (1 << 15) /* Bit 15: Option and 
engineering bits loading validity error */
+#define FLASH_SR_BSY1                (1 << 16) /* Bit 16: Busy */
+                                               /* Bit 17: Reserved */
+#define FLASH_SR_CFGBSY              (1 << 18) /* Bit 18: Programming or erase 
configuration busy */
+                                               /* Bits 19-31: Reserved */
+
+/* Flash Control Register (CR) */
+
+#define FLASH_CR_PG                  (1)      /* Bit 0: Flash memory 
programming enable */
+#define FLASH_CR_PER                 (1 << 1) /* Bit 1: Page erase enable */
+#define FLASH_CR_MER1                (1 << 2) /* Bit 2: Mass erase */
+#define FLASH_CR_PNB_SHIFT           (3)      /* Bits 3-9: Page number 
selection */
+#define FLASH_CR_PNB_MASK            (0x7f << FLASH_CR_PNB_SHIFT)
+#  define FLASH_CR_PNB(n)            ((n) << FLASH_CR_PNB_SHIFT)
+
+#define FLASH_CR_STRT                (1 << 16) /* Bit 16: Start erase 
operation */
+#define FLASH_CR_OPTSTRT             (1 << 17) /* Bit 17: Start of 
modification of option bytes */
+#define FLASH_CR_FSTPG               (1 << 18) /* Bit 18: Fast programming 
enable */
+                                               /* Bits 19-23: Reserved */
+#define FLASH_CR_EOPIE               (1 << 24) /* Bit 24: End-of-operation 
interrupt enable */
+#define FLASH_CR_ERRIE               (1 << 25) /* Bit 25: Error interrupt 
enable */
+#define FLASH_CR_RDERRIE             (1 << 26) /* Bit 26: PCROP read error 
interrupt enable */
+#define FLASH_CR_OBL_LAUNCH          (1 << 27) /* Bit 27: Option byte load 
launch */
+#define FLASH_CR_SEC_PROT            (1 << 28) /* Bit 28: Securable memory 
area protection enable */
+                                               /* Bit 29: Reserved */
+#define FLASH_CR_OPTLOCK             (1 << 30) /* Bit 30: Options Lock */
+#define FLASH_CR_LOCK                (1 << 31) /* Bit 31: FLASH_CR Lock */
+
+/* Flash Option Register (OPTR) */
+
+#define FLASH_OPTR_RDP_SHIFT         (0)
+#define FLASH_OPTR_RDP_MASK          (0xff << FLASH_OPTR_RDP_SHIFT)
+#define FLASH_OPTR_BOR_EN            (1 << 8) /* Brown out reset enable */
+#define FLASH_OPTR_BORR_LEV_SHIFT    (9)      /* BOR threshold at rising Vdd 
supply */
+#define FLASH_OPTR_BORR_LEV_MASK     (0x3 << FLASH_OPTR_BORR_LEV_SHIFT)
+#define FLASH_OPTR_BORF_LEV_SHIFT    (11)     /* BOR thresholda t falling Vdd 
supply */
+#define FLASH_OPTR_BORF_LEV_MASK     (0x3 << FLASH_OPTR_BORF_LEV_SHIFT)
+#define FLASH_OPTR_NRST_STOP         (1 << 13)
+#define FLASH_OPTR_NRST_STDBY        (1 << 14)
+#define FLASH_OPTR_NRSTS_SHDW        (1 << 15)
+#define FLASH_OPTR_IDWG_SW           (1 << 16) /* Bit 16: Independent watchdog 
selection */
+#define FLASH_OPTR_IDWG_STOP         (1 << 17) /* Bit 17: Independent watchdog 
counter freeze in stop mode */
+#define FLASH_OPTR_IDWG_STDBY        (1 << 18) /* Bit 18: Independent watchdog 
counter freeze in Standby mode */
+#define FLASH_OPTR_WWDG_SW           (1 << 19) /* Bit 19: Window watchdog 
selection */
+                                               /* Bit 20: Reserved */
+#define FLASH_OPTR_HSE_NOT_REMAPPED  (1 << 21) /* Bit 21: HSE remapping 
enable/disable */
+#define FLASH_OPTR_RAM_PARITY_CHECK  (1 << 22) /* Bit 22: SRAM parity check 
control */
+#define FLASH_OPTR_SECURE_MUXING_EN  (1 << 23) /* Bit 23: Multiple-bonding 
security */
+                                               /* Bit 23: Reserved */
+#define FLASH_OPTR_NBOOT_SEL         (1 << 24) /* Bit 24: BOOT0 signal source 
selection */
+#define FLASH_OPTR_NBOOT1            (1 << 25) /* Bit 25: NBOOT1 boot 
configuration */
+#define FLASH_OPTR_NBOOT0            (1 << 26) /* Bit 26: NBOOT0 option bit */
+#define FLASH_OPTR_NRST_MODE_SHIFT   (27)      /* Bits 27-28: PF2-NRST pin 
configuration */
+#define FLASH_OPTR_NRST_MODE_MASK    (0x3 << FLASH_OPTR_NRST_MODE_SHIFT)
+#define FLASH_OPTR_IRHEN             (1 << 29) /* Bit 29: Internal reset 
holder enable */
+#define FLASH_OPTR_FDCAN_BLCK_SHIFT  (30)      /* Bits 30-31: FDCAN bootloader 
clock source */
+#define FLASH_OPTR_FDCAN_BLCK_MASK   (0x3 << FLASH_OPTR_FDCAN_BLCK_SHIFT)
+
+/* Flash PCROP area A start address register (PCROP1ASR) */
+
+#define FLASH_PCROP1ASR_STRT_SHIFT          (0)
+#define FLASH_PCROP1ASR_STRT_MASK           (0x1ff << 
FLASH_PCROP1ASR_STRT_SHIFT)
+
+/* Flash PCROP area A end address register (PCROP1AER) */
+
+#define FLASH_PCROP1AER_PCROP1A_END_SHIFT   (0)
+#define FLASH_PCROP1AER_PCROP1A_END_MASK    (0x1ff << 
FLASH_PCROP1AER_PCROP1A_END_SHIFT)
+#define FLASH_PCROP1AER_PCROP_RDP           (1 << 31)
+
+/* Flash WRP area A address register (WRP1AR) */
+
+#define FLASH_WRP1AR_WRP1A_STRT_SHIFT       (0)
+#define FLASH_WRP1AR_WRP1A_STRT_MASK        (0x7f << 
FLASH_WRP1AR_WRP1A_STRT_SHIFT)
+#define FLASH_WRP1AR_WRP1A_END_SHIFT        (16)
+#define FLASH_WRP1AR_WRP1A_END_MASK         (0x7f << 
FLASH_WRP1AR_WRP1A_END_SHIFT)
+
+/* Flash WRP area B address register (WRP1BR) */
+
+#define FLASH_WRP1BR_WRP1B_STRT_SHIFT       (0)
+#define FLASH_WRP1BR_WRP1B_STRT_MASK        (0x7f << 
FLASH_WRP1BR_WRP1B_STRT_SHIFT)
+#define FLASH_WRP1BR_WRP1B_END_SHIFT        (16)
+#define FLASH_WRP1BR_WRP1B_END_MASK         (0x7f << 
FLASH_WRP1BR_WRP1B_END_SHIFT)
+
+/* Flash PCROP area B start address register (PCROP1BSR) */
+
+#define FLASH_PCROP1BSR_PCROP1B_STRT_SHIFT  (0)
+#define FLASH_PCROP1BSR_PCROP1B_STRT_MASK   (0x1ff << 
FLASH_PCROP1BSR_PCROP1B_STRT_SHIFT)
+
+/* Flash PCROP area B end address register (PCROP1BER) */
+
+#define FLASH_PCROP1BER_PCROP1B_END_SHIFT   (0)
+#define FLASH_PCROP1BER_PCROP1B_END_MASK    (0x1ff << 
FLASH_PCROP1BER_PCROP1B_END_SHIFT)
+
+/* Flash Security register (SECR) */
+
+#define FLASH_SECR_SEC_SIZE_SHIFT           (0)       /* Bits 0-7: Securable 
memory area size */
+#define FLASH_SECR_SEC_SIZE_MASK            (0xff << FLASH_SECR_SEC_SIZE_SHIFT)
+                                                      /* Bits 8-15: Reserved */
+#define FLASH_SECR_BOOT_LOCK                (1 << 16) /* Bit 16: Used to force 
boot from user area */
+                                                      /* Bits 20-31: Reserved 
*/
 
 #endif /* __ARCH_ARM_SRC_STM32F0L0G0_HARDWARE_STM32C0_FLASH_H */
diff --git a/arch/arm/src/stm32f0l0g0/stm32_flash.c 
b/arch/arm/src/stm32f0l0g0/stm32_flash.c
index cd3b6e2ace5..8e2d4b7dd59 100644
--- a/arch/arm/src/stm32f0l0g0/stm32_flash.c
+++ b/arch/arm/src/stm32f0l0g0/stm32_flash.c
@@ -26,8 +26,8 @@
 
 #include <nuttx/config.h>
 
-#if defined(CONFIG_STM32F0L0G0_STM32G0)
-#  include "stm32g0_flash.c"
+#if defined(CONFIG_STM32F0L0G0_STM32G0) || defined(CONFIG_STM32F0L0G0_STM32C0)
+#  include "stm32g0c0_flash.c"
 #else
 #  error "Flash driver unsupported on selected chip."
 #endif
diff --git a/arch/arm/src/stm32f0l0g0/stm32g0_flash.c 
b/arch/arm/src/stm32f0l0g0/stm32g0c0_flash.c
similarity index 96%
rename from arch/arm/src/stm32f0l0g0/stm32g0_flash.c
rename to arch/arm/src/stm32f0l0g0/stm32g0c0_flash.c
index e32010190dd..201619738e2 100644
--- a/arch/arm/src/stm32f0l0g0/stm32g0_flash.c
+++ b/arch/arm/src/stm32f0l0g0/stm32g0c0_flash.c
@@ -1,5 +1,5 @@
 /****************************************************************************
- * arch/arm/src/stm32f0l0g0/stm32g0_flash.c
+ * arch/arm/src/stm32f0l0g0/stm32g0c0_flash.c
  *
  * SPDX-License-Identifier: Apache-2.0
  *
@@ -98,29 +98,35 @@
 #endif
 
 #if defined(CONFIG_STM32F0L0G0_FLASH_CONFIG_4)
-#  define FLASH_NBLOCKS     8
+#  define FLASH_NBLOCKS      8
 #elif defined(CONFIG_STM32F0L0G0_FLASH_CONFIG_6)
-#  define FLASH_NBLOCKS     16
+#  define FLASH_NBLOCKS      16
 #elif defined(CONFIG_STM32F0L0G0_FLASH_CONFIG_8)
-#  define FLASH_NBLOCKS     32
+#  define FLASH_NBLOCKS      32
 #elif defined(CONFIG_STM32F0L0G0_FLASH_CONFIG_B)
-#  define FLASH_NBLOCKS     64
+#  define FLASH_NBLOCKS      64
 #elif defined(CONFIG_STM32F0L0G0_FLASH_CONFIG_C)
-#  define FLASH_NBLOCKS     128
-#  define FLASH_DUAL_BANK   1
-#  define FLASH_BANK2_BASE  0x08020000
+#  define FLASH_NBLOCKS      128
+#  ifdef CONFIG_ARCH_CHIP_STM32G0
+#    define FLASH_DUAL_BANK  1
+#    define FLASH_BANK2_BASE 0x08020000
+#  endif
 #elif defined(CONFIG_STM32F0L0G0_FLASH_CONFIG_E)
-#  define FLASH_NBLOCKS     256
-#  define FLASH_DUAL_BANK   1
-#  define FLASH_BANK2_BASE  0x08040000
+#  define FLASH_NBLOCKS      256
+#  ifdef CONFIG_ARCH_CHIP_STM32G0
+#    define FLASH_DUAL_BANK  1
+#    define FLASH_BANK2_BASE 0x08040000
+#  endif
 #else
 #  error "Invalid flash configuration defined"
 #endif
 
 #ifdef FLASH_DUAL_BANK
 #  define FLASH_BANKSIZE    (FLASH_NBLOCKS * FLASH_BLOCK_SIZE / 2)
+#  define FLASH_SR_BSY      (FLASH_SR_BSY1 | FLASH_SR_BSY2)
 #else
 #  define FLASH_BANKSIZE    (FLASH_NBLOCKS * FLASH_BLOCK_SIZE)
+#  define FLASH_SR_BSY      (FLASH_SR_BSY1)
 #endif
 
 /* Dual bank G0B1 MCUs have a non-linear mapping of block number between
@@ -301,8 +307,7 @@ static int flash_wait_for_operation(void)
 
   for (i = 0; i < FLASH_TIMEOUT; i += 10)
     {
-      if (!(getreg32(STM32_FLASH_SR) &
-          (FLASH_SR_CFGBSY | FLASH_SR_BSY1 | FLASH_SR_BSY2)))
+      if (!(getreg32(STM32_FLASH_SR) & (FLASH_SR_CFGBSY | FLASH_SR_BSY)))
         {
           timeout = false;
           break;
@@ -852,7 +857,7 @@ ssize_t up_progmem_write(size_t addr, const void *buf, 
size_t count)
           goto exit_with_unlock;
         }
 
-      /* Future improvements may add ECC checking here. */
+      /* Future improvements may add ECC checking here (STM32G0 only). */
     }
 
   modifyreg32(STM32_FLASH_CR, FLASH_CR_PG, 0);
@@ -877,7 +882,7 @@ exit_with_unlock:
               break;
             }
 
-          /* Future improvements may add ECC checking here. */
+          /* Future improvements may add ECC checking here (STM32G0 only). */
         }
 
       modifyreg32(STM32_FLASH_SR, 0, FLASH_SR_CLEAR_ERROR_FLAGS);
@@ -893,4 +898,4 @@ uint8_t up_progmem_erasestate(void)
   return FLASH_ERASEDVALUE;
 }
 
-#endif /* CONFIG_ARCH_HAVE_PROGMEM*/
\ No newline at end of file
+#endif /* CONFIG_ARCH_HAVE_PROGMEM */

Reply via email to