[PATCH 5/7] ARM: stm32mp: Add STM32MP21 support
Patrick DELAUNAY
patrick.delaunay at foss.st.com
Tue Feb 24 14:30:33 CET 2026
Hi,
one error for CPU_STM32MP215Fxx value....
On 2/3/26 17:49, Patrice Chotard wrote:
> STM32MP21 application processors (STM32 MPUs) based on a single
> Arm Cortex®-A35 core running up to 1.5 GHz and Cortex®-M33 core
> running at 300 MHz.
>
> It is pin-compatible with the STM32MP2 series in the VFBGA361
> 10×10 mm package: the STM32MP21 uses a subset of the STM32MP23
> pinout, which itself is a subset of the STM32MP25.
>
> More details available here :
> https://www.st.com/en/microcontrollers-microprocessors/stm32mp2-series.html
>
> Signed-off-by: Patrice Chotard <patrice.chotard at foss.st.com>
> ---
> arch/arm/mach-stm32mp/Kconfig | 27 ++++
> arch/arm/mach-stm32mp/Kconfig.21x | 37 +++++
> arch/arm/mach-stm32mp/Makefile | 3 +-
> arch/arm/mach-stm32mp/include/mach/stm32.h | 12 +-
> arch/arm/mach-stm32mp/include/mach/sys_proto.h | 22 +++
> arch/arm/mach-stm32mp/stm32mp2/Makefile | 1 +
> arch/arm/mach-stm32mp/stm32mp2/arm64-mmu.c | 2 +
> arch/arm/mach-stm32mp/stm32mp2/cpu.c | 2 +
> arch/arm/mach-stm32mp/stm32mp2/rifsc.c | 1 +
> arch/arm/mach-stm32mp/stm32mp2/stm32mp21x.c | 192 +++++++++++++++++++++++++
> board/st/common/Kconfig | 2 +-
> board/st/stm32mp2/Kconfig | 14 ++
> configs/stm32mp21_defconfig | 78 ++++++++++
> include/configs/stm32mp21_common.h | 126 ++++++++++++++++
> include/configs/stm32mp21_st_common.h | 51 +++++++
> 15 files changed, 564 insertions(+), 6 deletions(-)
>
....
>
> diff --git a/arch/arm/mach-stm32mp/include/mach/stm32.h b/arch/arm/mach-stm32mp/include/mach/stm32.h
> index 90f06a052d3..7f349f3b68d 100644
> --- a/arch/arm/mach-stm32mp/include/mach/stm32.h
> +++ b/arch/arm/mach-stm32mp/include/mach/stm32.h
> @@ -165,16 +165,20 @@ enum forced_boot_mode {
> #endif /* __ASSEMBLY__ */
> #endif /* CONFIG_STM32MP15X || CONFIG_STM32MP13X */
>
> -#if defined(CONFIG_STM32MP23X) || defined(CONFIG_STM32MP25X)
> +#if defined(CONFIG_STM32MP21X) || defined(CONFIG_STM32MP23X) || defined(CONFIG_STM32MP25X)
> #define STM32_USART2_BASE 0x400E0000
> #define STM32_USART3_BASE 0x400F0000
> #define STM32_UART4_BASE 0x40100000
> #define STM32_UART5_BASE 0x40110000
> #define STM32_USART6_BASE 0x40220000
> +#ifdef CONFIG_STM32MP25X
> #define STM32_UART9_BASE 0x402C0000
> +#endif
> #define STM32_USART1_BASE 0x40330000
> #define STM32_UART7_BASE 0x40370000
> +#ifdef CONFIG_STM32MP25X
> #define STM32_UART8_BASE 0x40380000
> +#endif
> #define STM32_RCC_BASE 0x44200000
> #define STM32_TAMP_BASE 0x46010000
> #define STM32_SDMMC1_BASE 0x48220000
> @@ -194,7 +198,7 @@ enum forced_boot_mode {
>
> #define TAMP_FWU_BOOT_IDX_MASK GENMASK(3, 0)
> #define TAMP_FWU_BOOT_IDX_OFFSET 0
> -#endif /* defined(CONFIG_STM32MP23X) || defined(CONFIG_STM32MP25X) */
> +#endif /* defined(CONFIG_STM32MP21X) || defined(CONFIG_STM32MP23X) || defined(CONFIG_STM32MP25X) */
>
> /* offset used for BSEC driver: misc_read and misc_write */
> #define STM32_BSEC_SHADOW_OFFSET 0x0
> @@ -218,14 +222,14 @@ enum forced_boot_mode {
> #define BSEC_OTP_MAC 57
> #define BSEC_OTP_BOARD 60
> #endif
> -#if defined(CONFIG_STM32MP23X) || defined(CONFIG_STM32MP25X)
> +#if defined(CONFIG_STM32MP21X) || defined(CONFIG_STM32MP23X) || defined(CONFIG_STM32MP25X)
> #define BSEC_OTP_SERIAL 5
> #define BSEC_OTP_RPN 9
> #define BSEC_OTP_REVID 102
> #define BSEC_OTP_PKG 122
> #define BSEC_OTP_BOARD 246
> #define BSEC_OTP_MAC 247
> -#endif /* defined(CONFIG_STM32MP23X) || defined(CONFIG_STM32MP25X) */
> +#endif /* defined(CONFIG_STM32MP21X) || defined(CONFIG_STM32MP23X) || defined(CONFIG_STM32MP25X) */
>
> #ifndef __ASSEMBLY__
> #include <asm/types.h>
> diff --git a/arch/arm/mach-stm32mp/include/mach/sys_proto.h b/arch/arm/mach-stm32mp/include/mach/sys_proto.h
> index 2a4837184fc..47a6db79bca 100644
> --- a/arch/arm/mach-stm32mp/include/mach/sys_proto.h
> +++ b/arch/arm/mach-stm32mp/include/mach/sys_proto.h
> @@ -30,6 +30,20 @@
> #define CPU_STM32MP131Fxx 0x05010EC8
> #define CPU_STM32MP131Dxx 0x05010EC9
>
> +/* ID for STM32MP21x = Device Part Number (RPN) (bit31:0) */
> +#define CPU_STM32MP211Axx 0x40073E7D
> +#define CPU_STM32MP211Cxx 0x0007307D
> +#define CPU_STM32MP211Dxx 0xC0073E7D
> +#define CPU_STM32MP211Fxx 0x8007307D
> +#define CPU_STM32MP213Axx 0x40073E1D
> +#define CPU_STM32MP213Cxx 0x0007301D
> +#define CPU_STM32MP213Dxx 0xC0073E1D
> +#define CPU_STM32MP213Fxx 0x8007301D
> +#define CPU_STM32MP215Axx 0x40033E0D
> +#define CPU_STM32MP215Cxx 0x0003300D
> +#define CPU_STM32MP215Dxx 0xC0033E0D
> +#define CPU_STM32MP215Fxx 0x80
Strange value this part number, I assume:
#define CPU_STM32MP215Fxx 0x8003300D
> +CPU_STM32MP215Fxx
>
> /* ID for STM32MP23x = Device Part Number (RPN) (bit31:0) */
> #define CPU_STM32MP235Cxx 0x00082182
> #define CPU_STM32MP233Cxx 0x000B318E
> @@ -67,6 +81,7 @@ u32 get_cpu_type(void);
>
> #define CPU_DEV_STM32MP15 0x500
> #define CPU_DEV_STM32MP13 0x501
> +#define CPU_DEV_STM32MP21 0x503
> #define CPU_DEV_STM32MP23 0x505
> #define CPU_DEV_STM32MP25 0x505
>
> @@ -102,6 +117,13 @@ u32 get_cpu_package(void);
> #define STM32MP15_PKG_AD_TFBGA257 1
> #define STM32MP15_PKG_UNKNOWN 0
>
> +/* package used for STM32MP21x */
> +#define STM32MP21_PKG_CUSTOM 0
> +#define STM32MP21_PKG_AL_VFBGA361 1
> +#define STM32MP21_PKG_AN_VFBGA273 3
> +#define STM32MP21_PKG_AO_VFBGA225 4
> +#define STM32MP21_PKG_AM_TFBGA289 5
> +
> /* package used for STM32MP23x */
> #define STM32MP23_PKG_CUSTOM 0
> #define STM32MP23_PKG_AL_VFBGA361 1
with the proposal for the define CPU_STM32MP215Fxx
Reviewed-by: Patrick Delaunay <patrick.delaunay at foss.st.com>
Thanks
Patrick
More information about the U-Boot
mailing list