Skip to content

Commit 5b46335

Browse files
nvincent-vosslohcarlescufi
authored andcommitted
drivers/flash: add support for stm32h7 devices
Fixes #29831: Implements flash driver for stm32h7 devices. The driver is independant from the other stm32 families (flash_stm32.c), only the header interface is (mainly) common. Signed-off-by: Nicolas VINCENT <[email protected]>
1 parent f7078da commit 5b46335

File tree

4 files changed

+551
-12
lines changed

4 files changed

+551
-12
lines changed

drivers/flash/CMakeLists.txt

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,19 @@ zephyr_library_sources_ifdef(CONFIG_SOC_FLASH_GECKO flash_gecko.c)
1818
zephyr_library_sources_ifdef(CONFIG_SOC_FLASH_RV32M1 soc_flash_rv32m1.c)
1919

2020
if(CONFIG_SOC_FLASH_STM32)
21-
zephyr_sources(flash_stm32.c)
21+
if(CONFIG_SOC_SERIES_STM32H7X)
22+
zephyr_sources_ifdef(CONFIG_SOC_SERIES_STM32H7X flash_stm32h7x.c)
23+
else()
24+
zephyr_sources(flash_stm32.c)
2225

23-
zephyr_sources_ifdef(CONFIG_SOC_FLASH_STM32_V1 flash_stm32_v1.c)
24-
zephyr_sources_ifdef(CONFIG_SOC_SERIES_STM32F4X flash_stm32f4x.c)
25-
zephyr_sources_ifdef(CONFIG_SOC_SERIES_STM32F7X flash_stm32f7x.c)
26-
zephyr_sources_ifdef(CONFIG_SOC_SERIES_STM32L4X flash_stm32l4x.c)
27-
zephyr_sources_ifdef(CONFIG_SOC_SERIES_STM32WBX flash_stm32wbx.c)
28-
zephyr_sources_ifdef(CONFIG_SOC_SERIES_STM32G0X flash_stm32g0x.c)
29-
zephyr_sources_ifdef(CONFIG_SOC_SERIES_STM32G4X flash_stm32g4x.c)
26+
zephyr_sources_ifdef(CONFIG_SOC_FLASH_STM32_V1 flash_stm32_v1.c)
27+
zephyr_sources_ifdef(CONFIG_SOC_SERIES_STM32F4X flash_stm32f4x.c)
28+
zephyr_sources_ifdef(CONFIG_SOC_SERIES_STM32F7X flash_stm32f7x.c)
29+
zephyr_sources_ifdef(CONFIG_SOC_SERIES_STM32L4X flash_stm32l4x.c)
30+
zephyr_sources_ifdef(CONFIG_SOC_SERIES_STM32WBX flash_stm32wbx.c)
31+
zephyr_sources_ifdef(CONFIG_SOC_SERIES_STM32G0X flash_stm32g0x.c)
32+
zephyr_sources_ifdef(CONFIG_SOC_SERIES_STM32G4X flash_stm32g4x.c)
33+
endif()
3034
endif()
3135

3236
zephyr_include_directories_ifdef(

drivers/flash/Kconfig.stm32

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
config SOC_FLASH_STM32
88
bool "STM32 flash driver"
99
depends on SOC_FAMILY_STM32
10-
depends on (SOC_SERIES_STM32F0X || SOC_SERIES_STM32F1X || SOC_SERIES_STM32F3X || SOC_SERIES_STM32F4X || SOC_SERIES_STM32F7X || SOC_SERIES_STM32L0X || SOC_SERIES_STM32L1X || SOC_SERIES_STM32L4X || SOC_SERIES_STM32WBX || SOC_SERIES_STM32G0X || SOC_SERIES_STM32G4X)
10+
depends on (SOC_SERIES_STM32F0X || SOC_SERIES_STM32F1X || SOC_SERIES_STM32F3X || SOC_SERIES_STM32F4X || SOC_SERIES_STM32F7X || SOC_SERIES_STM32L0X || SOC_SERIES_STM32L1X || SOC_SERIES_STM32L4X || SOC_SERIES_STM32WBX || SOC_SERIES_STM32G0X || SOC_SERIES_STM32G4X || SOC_SERIES_STM32H7X)
1111
select FLASH_HAS_DRIVER_ENABLED
1212
default y
1313
select SOC_FLASH_STM32_V1 if SOC_SERIES_STM32F0X
@@ -21,15 +21,18 @@ config SOC_FLASH_STM32
2121
select FLASH_PAGE_LAYOUT if SOC_SERIES_STM32L4X
2222
select FLASH_PAGE_LAYOUT if SOC_SERIES_STM32WBX
2323
select FLASH_PAGE_LAYOUT if SOC_SERIES_STM32G4X
24+
select FLASH_PAGE_LAYOUT if SOC_SERIES_STM32H7X
2425
select FLASH_HAS_PAGE_LAYOUT if SOC_SERIES_STM32G0X
2526
select FLASH_HAS_PAGE_LAYOUT if SOC_SERIES_STM32F4X
2627
select FLASH_HAS_PAGE_LAYOUT if SOC_SERIES_STM32F7X
2728
select FLASH_HAS_PAGE_LAYOUT if SOC_SERIES_STM32L4X
2829
select FLASH_HAS_PAGE_LAYOUT if SOC_SERIES_STM32WBX
2930
select FLASH_HAS_PAGE_LAYOUT if SOC_SERIES_STM32G4X
31+
select FLASH_HAS_PAGE_LAYOUT if SOC_SERIES_STM32H7X
3032
help
3133
Enable STM32F0x, STM32F1x, STM32F3x, STM32F4x, STM32F7x, STM32L0x,
32-
STM32L1x, STM32L4x, STM32WBx, STM32G0x or STM32G4x series flash driver.
34+
STM32L1x, STM32L4x, STM32WBx, STM32G0x, STM32G4x or STM3H7x series
35+
flash driver.
3336

3437
config SOC_FLASH_STM32_V1
3538
bool

drivers/flash/flash_stm32.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313
defined(CONFIG_SOC_SERIES_STM32F1X) || \
1414
defined(CONFIG_SOC_SERIES_STM32F3X) || \
1515
defined(CONFIG_SOC_SERIES_STM32G0X) || \
16-
defined(CONFIG_SOC_SERIES_STM32G4X)
16+
defined(CONFIG_SOC_SERIES_STM32G4X) || \
17+
defined(CONFIG_SOC_SERIES_STM32H7X)
1718
#include <drivers/clock_control.h>
1819
#include <drivers/clock_control/stm32_clock_control.h>
1920
#endif
@@ -25,7 +26,8 @@ struct flash_stm32_priv {
2526
defined(CONFIG_SOC_SERIES_STM32F1X) || \
2627
defined(CONFIG_SOC_SERIES_STM32F3X) || \
2728
defined(CONFIG_SOC_SERIES_STM32G0X) || \
28-
defined(CONFIG_SOC_SERIES_STM32G4X)
29+
defined(CONFIG_SOC_SERIES_STM32G4X) || \
30+
defined(CONFIG_SOC_SERIES_STM32H7X)
2931
/* clock subsystem driving this peripheral */
3032
struct stm32_pclken pclken;
3133
#endif

0 commit comments

Comments
 (0)