[PATCH v1 0/9] Add STM32MP2 SoCs and STM32MP257F-EV board support

Add STM32MP257F Evaluation board support, it embeds a STM32MP257FAI SoC, with 4GB of DDR4, TSN switch (2+1 ports), 2*USB typeA, 1*USB2 typeC, SNOR OctoSPI, mini PCIe, STPMIC2 for power distribution ...
Patrice Chotard (8): arm: caches: Make DCACHE_DEFAULT_OPTION accessible for ARM64 arch stm32mp: dram_init: Get RAM size from DT if no RAM driver found stm32mp: dram_init: Limit DDR usage under 4GB boundary for STM32MP stm32mp: bsec: Fix AARCH64 compilation warnings serial: stm32: Fix AARCH64 compilation warnings pinctrl: pinctrl_stm32: Add stm32mp2 support ARM: dts: stm32: Add STM32MP257F Evaluation board support stm32mp2: initial support
Patrick Delaunay (1): stm32mp: dram_init: Fix AARCH64 compilation warnings
arch/arm/Kconfig | 2 +- arch/arm/dts/Makefile | 3 + arch/arm/dts/stm32mp25-pinctrl.dtsi | 38 +++ arch/arm/dts/stm32mp25-u-boot.dtsi | 102 +++++++ arch/arm/dts/stm32mp251.dtsi | 285 ++++++++++++++++++ arch/arm/dts/stm32mp253.dtsi | 23 ++ arch/arm/dts/stm32mp255.dtsi | 9 + arch/arm/dts/stm32mp257.dtsi | 9 + arch/arm/dts/stm32mp257f-ev1-u-boot.dtsi | 20 ++ arch/arm/dts/stm32mp257f-ev1.dts | 55 ++++ arch/arm/dts/stm32mp25xc.dtsi | 8 + arch/arm/dts/stm32mp25xf.dtsi | 8 + arch/arm/dts/stm32mp25xxai-pinctrl.dtsi | 83 +++++ arch/arm/dts/stm32mp25xxak-pinctrl.dtsi | 71 +++++ arch/arm/dts/stm32mp25xxal-pinctrl.dtsi | 71 +++++ arch/arm/include/asm/system.h | 16 +- arch/arm/mach-stm32mp/Kconfig | 26 +- arch/arm/mach-stm32mp/Kconfig.25x | 43 +++ arch/arm/mach-stm32mp/Makefile | 15 +- arch/arm/mach-stm32mp/bsec.c | 29 +- arch/arm/mach-stm32mp/dram_init.c | 17 +- arch/arm/mach-stm32mp/include/mach/stm32.h | 141 +++++---- .../arm/mach-stm32mp/include/mach/sys_proto.h | 26 ++ arch/arm/mach-stm32mp/stm32mp1/Makefile | 20 ++ arch/arm/mach-stm32mp/{ => stm32mp1}/cpu.c | 0 arch/arm/mach-stm32mp/{ => stm32mp1}/fdt.c | 0 arch/arm/mach-stm32mp/{ => stm32mp1}/psci.c | 0 .../{ => stm32mp1}/pwr_regulator.c | 0 arch/arm/mach-stm32mp/{ => stm32mp1}/spl.c | 0 .../mach-stm32mp/{ => stm32mp1}/stm32mp13x.c | 0 .../mach-stm32mp/{ => stm32mp1}/stm32mp15x.c | 0 arch/arm/mach-stm32mp/{ => stm32mp1}/tzc400.c | 0 arch/arm/mach-stm32mp/stm32mp2/Makefile | 9 + arch/arm/mach-stm32mp/stm32mp2/arm64-mmu.c | 68 +++++ arch/arm/mach-stm32mp/stm32mp2/cpu.c | 108 +++++++ arch/arm/mach-stm32mp/stm32mp2/fdt.c | 16 + arch/arm/mach-stm32mp/stm32mp2/stm32mp25x.c | 194 ++++++++++++ arch/arm/mach-stm32mp/syscon.c | 4 +- board/st/stm32mp2/Kconfig | 13 + board/st/stm32mp2/MAINTAINERS | 9 + board/st/stm32mp2/Makefile | 6 + board/st/stm32mp2/stm32mp2.c | 52 ++++ configs/stm32mp25_defconfig | 52 ++++ drivers/pinctrl/pinctrl_stm32.c | 2 + drivers/serial/serial_stm32.c | 23 +- drivers/serial/serial_stm32.h | 2 +- include/configs/stm32mp25_common.h | 24 ++ include/dt-bindings/pinctrl/stm32-pinfunc.h | 3 + 48 files changed, 1597 insertions(+), 108 deletions(-) create mode 100644 arch/arm/dts/stm32mp25-pinctrl.dtsi create mode 100644 arch/arm/dts/stm32mp25-u-boot.dtsi create mode 100644 arch/arm/dts/stm32mp251.dtsi create mode 100644 arch/arm/dts/stm32mp253.dtsi create mode 100644 arch/arm/dts/stm32mp255.dtsi create mode 100644 arch/arm/dts/stm32mp257.dtsi create mode 100644 arch/arm/dts/stm32mp257f-ev1-u-boot.dtsi create mode 100644 arch/arm/dts/stm32mp257f-ev1.dts create mode 100644 arch/arm/dts/stm32mp25xc.dtsi create mode 100644 arch/arm/dts/stm32mp25xf.dtsi create mode 100644 arch/arm/dts/stm32mp25xxai-pinctrl.dtsi create mode 100644 arch/arm/dts/stm32mp25xxak-pinctrl.dtsi create mode 100644 arch/arm/dts/stm32mp25xxal-pinctrl.dtsi create mode 100644 arch/arm/mach-stm32mp/Kconfig.25x create mode 100644 arch/arm/mach-stm32mp/stm32mp1/Makefile rename arch/arm/mach-stm32mp/{ => stm32mp1}/cpu.c (100%) rename arch/arm/mach-stm32mp/{ => stm32mp1}/fdt.c (100%) rename arch/arm/mach-stm32mp/{ => stm32mp1}/psci.c (100%) rename arch/arm/mach-stm32mp/{ => stm32mp1}/pwr_regulator.c (100%) rename arch/arm/mach-stm32mp/{ => stm32mp1}/spl.c (100%) rename arch/arm/mach-stm32mp/{ => stm32mp1}/stm32mp13x.c (100%) rename arch/arm/mach-stm32mp/{ => stm32mp1}/stm32mp15x.c (100%) rename arch/arm/mach-stm32mp/{ => stm32mp1}/tzc400.c (100%) create mode 100644 arch/arm/mach-stm32mp/stm32mp2/Makefile create mode 100644 arch/arm/mach-stm32mp/stm32mp2/arm64-mmu.c create mode 100644 arch/arm/mach-stm32mp/stm32mp2/cpu.c create mode 100644 arch/arm/mach-stm32mp/stm32mp2/fdt.c create mode 100644 arch/arm/mach-stm32mp/stm32mp2/stm32mp25x.c create mode 100644 board/st/stm32mp2/Kconfig create mode 100644 board/st/stm32mp2/MAINTAINERS create mode 100644 board/st/stm32mp2/Makefile create mode 100644 board/st/stm32mp2/stm32mp2.c create mode 100644 configs/stm32mp25_defconfig create mode 100644 include/configs/stm32mp25_common.h

This fixes the following compilation error in ARM64: arch/arm/mach-stm32mp/dram_init.c: In function ‘board_get_usable_ram_top’: arch/arm/mach-stm32mp/dram_init.c:59:45: error: ‘DCACHE_DEFAULT_OPTION’ undeclared (first use in this function) 59 | mmu_set_region_dcache_behaviour(reg, size, DCACHE_DEFAULT_OPTION); | ^~~~~~~~~~~~~~~~~~~~~
Signed-off-by: Patrice Chotard patrice.chotard@foss.st.com ---
arch/arm/include/asm/system.h | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/arch/arm/include/asm/system.h b/arch/arm/include/asm/system.h index 0eae857e73a..43f7503571d 100644 --- a/arch/arm/include/asm/system.h +++ b/arch/arm/include/asm/system.h @@ -513,14 +513,6 @@ enum dcache_option { }; #endif
-#if defined(CONFIG_SYS_ARM_CACHE_WRITETHROUGH) -#define DCACHE_DEFAULT_OPTION DCACHE_WRITETHROUGH -#elif defined(CONFIG_SYS_ARM_CACHE_WRITEALLOC) -#define DCACHE_DEFAULT_OPTION DCACHE_WRITEALLOC -#elif defined(CONFIG_SYS_ARM_CACHE_WRITEBACK) -#define DCACHE_DEFAULT_OPTION DCACHE_WRITEBACK -#endif - /* Size of an MMU section */ enum { #ifdef CONFIG_ARMV7_LPAE @@ -578,6 +570,14 @@ void psci_system_reset(void);
#endif /* CONFIG_ARM64 */
+#if defined(CONFIG_SYS_ARM_CACHE_WRITETHROUGH) +#define DCACHE_DEFAULT_OPTION DCACHE_WRITETHROUGH +#elif defined(CONFIG_SYS_ARM_CACHE_WRITEALLOC) +#define DCACHE_DEFAULT_OPTION DCACHE_WRITEALLOC +#elif defined(CONFIG_SYS_ARM_CACHE_WRITEBACK) +#define DCACHE_DEFAULT_OPTION DCACHE_WRITEBACK +#endif + #ifndef __ASSEMBLY__ /** * save_boot_params() - Save boot parameters before starting reset sequence

From: Patrice Chotard patrice.chotard@st.com
In case there is no RAM driver retrieve RAM size from DT as fallback.
Signed-off-by: Patrice Chotard patrice.chotard@st.com Signed-off-by: Patrice Chotard patrice.chotard@foss.st.com ---
arch/arm/mach-stm32mp/dram_init.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/arch/arm/mach-stm32mp/dram_init.c b/arch/arm/mach-stm32mp/dram_init.c index 7f37b0d2aa2..a1e77a42e4f 100644 --- a/arch/arm/mach-stm32mp/dram_init.c +++ b/arch/arm/mach-stm32mp/dram_init.c @@ -24,8 +24,11 @@ int dram_init(void) int ret;
ret = uclass_get_device(UCLASS_RAM, 0, &dev); - if (ret) { - log_debug("RAM init failed: %d\n", ret); + /* in case there is no RAM driver, retrieve DDR size from DT */ + if (ret == -ENODEV) { + return fdtdec_setup_mem_size_base(); + } else if (ret) { + log_err("RAM init failed: %d\n", ret); return ret; } ret = ram_get_info(dev, &ram);

From: Patrick Delaunay patrick.delaunay@foss.st.com
When building with AARCH64 defconfig, we got warnings for debug message - format '%x' expects argument of type 'unsigned int', but argument 3 has type 'size_t' {aka 'long unsigned int'}). - format '%lx' expects argument of type 'long unsigned int', but argument 2 has type 'phys_addr_t' {aka 'long long unsigned int'}
Signed-off-by: Patrick Delaunay patrick.delaunay@foss.st.com Signed-off-by: Patrice Chotard patrice.chotard@foss.st.com ---
arch/arm/mach-stm32mp/dram_init.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/mach-stm32mp/dram_init.c b/arch/arm/mach-stm32mp/dram_init.c index a1e77a42e4f..cb35ed60ca1 100644 --- a/arch/arm/mach-stm32mp/dram_init.c +++ b/arch/arm/mach-stm32mp/dram_init.c @@ -36,7 +36,7 @@ int dram_init(void) log_debug("Cannot get RAM size: %d\n", ret); return ret; } - log_debug("RAM init base=%lx, size=%x\n", ram.base, ram.size); + log_debug("RAM init base=%p, size=%zx\n", (void *)ram.base, ram.size);
gd->ram_size = ram.size;

Hi,
I got issues with my mailer which send partially this series, please drop it.
Patrice
On 10/27/23 16:39, Patrice Chotard wrote:
Add STM32MP257F Evaluation board support, it embeds a STM32MP257FAI SoC, with 4GB of DDR4, TSN switch (2+1 ports), 2*USB typeA, 1*USB2 typeC, SNOR OctoSPI, mini PCIe, STPMIC2 for power distribution ...
Patrice Chotard (8): arm: caches: Make DCACHE_DEFAULT_OPTION accessible for ARM64 arch stm32mp: dram_init: Get RAM size from DT if no RAM driver found stm32mp: dram_init: Limit DDR usage under 4GB boundary for STM32MP stm32mp: bsec: Fix AARCH64 compilation warnings serial: stm32: Fix AARCH64 compilation warnings pinctrl: pinctrl_stm32: Add stm32mp2 support ARM: dts: stm32: Add STM32MP257F Evaluation board support stm32mp2: initial support
Patrick Delaunay (1): stm32mp: dram_init: Fix AARCH64 compilation warnings
arch/arm/Kconfig | 2 +- arch/arm/dts/Makefile | 3 + arch/arm/dts/stm32mp25-pinctrl.dtsi | 38 +++ arch/arm/dts/stm32mp25-u-boot.dtsi | 102 +++++++ arch/arm/dts/stm32mp251.dtsi | 285 ++++++++++++++++++ arch/arm/dts/stm32mp253.dtsi | 23 ++ arch/arm/dts/stm32mp255.dtsi | 9 + arch/arm/dts/stm32mp257.dtsi | 9 + arch/arm/dts/stm32mp257f-ev1-u-boot.dtsi | 20 ++ arch/arm/dts/stm32mp257f-ev1.dts | 55 ++++ arch/arm/dts/stm32mp25xc.dtsi | 8 + arch/arm/dts/stm32mp25xf.dtsi | 8 + arch/arm/dts/stm32mp25xxai-pinctrl.dtsi | 83 +++++ arch/arm/dts/stm32mp25xxak-pinctrl.dtsi | 71 +++++ arch/arm/dts/stm32mp25xxal-pinctrl.dtsi | 71 +++++ arch/arm/include/asm/system.h | 16 +- arch/arm/mach-stm32mp/Kconfig | 26 +- arch/arm/mach-stm32mp/Kconfig.25x | 43 +++ arch/arm/mach-stm32mp/Makefile | 15 +- arch/arm/mach-stm32mp/bsec.c | 29 +- arch/arm/mach-stm32mp/dram_init.c | 17 +- arch/arm/mach-stm32mp/include/mach/stm32.h | 141 +++++---- .../arm/mach-stm32mp/include/mach/sys_proto.h | 26 ++ arch/arm/mach-stm32mp/stm32mp1/Makefile | 20 ++ arch/arm/mach-stm32mp/{ => stm32mp1}/cpu.c | 0 arch/arm/mach-stm32mp/{ => stm32mp1}/fdt.c | 0 arch/arm/mach-stm32mp/{ => stm32mp1}/psci.c | 0 .../{ => stm32mp1}/pwr_regulator.c | 0 arch/arm/mach-stm32mp/{ => stm32mp1}/spl.c | 0 .../mach-stm32mp/{ => stm32mp1}/stm32mp13x.c | 0 .../mach-stm32mp/{ => stm32mp1}/stm32mp15x.c | 0 arch/arm/mach-stm32mp/{ => stm32mp1}/tzc400.c | 0 arch/arm/mach-stm32mp/stm32mp2/Makefile | 9 + arch/arm/mach-stm32mp/stm32mp2/arm64-mmu.c | 68 +++++ arch/arm/mach-stm32mp/stm32mp2/cpu.c | 108 +++++++ arch/arm/mach-stm32mp/stm32mp2/fdt.c | 16 + arch/arm/mach-stm32mp/stm32mp2/stm32mp25x.c | 194 ++++++++++++ arch/arm/mach-stm32mp/syscon.c | 4 +- board/st/stm32mp2/Kconfig | 13 + board/st/stm32mp2/MAINTAINERS | 9 + board/st/stm32mp2/Makefile | 6 + board/st/stm32mp2/stm32mp2.c | 52 ++++ configs/stm32mp25_defconfig | 52 ++++ drivers/pinctrl/pinctrl_stm32.c | 2 + drivers/serial/serial_stm32.c | 23 +- drivers/serial/serial_stm32.h | 2 +- include/configs/stm32mp25_common.h | 24 ++ include/dt-bindings/pinctrl/stm32-pinfunc.h | 3 + 48 files changed, 1597 insertions(+), 108 deletions(-) create mode 100644 arch/arm/dts/stm32mp25-pinctrl.dtsi create mode 100644 arch/arm/dts/stm32mp25-u-boot.dtsi create mode 100644 arch/arm/dts/stm32mp251.dtsi create mode 100644 arch/arm/dts/stm32mp253.dtsi create mode 100644 arch/arm/dts/stm32mp255.dtsi create mode 100644 arch/arm/dts/stm32mp257.dtsi create mode 100644 arch/arm/dts/stm32mp257f-ev1-u-boot.dtsi create mode 100644 arch/arm/dts/stm32mp257f-ev1.dts create mode 100644 arch/arm/dts/stm32mp25xc.dtsi create mode 100644 arch/arm/dts/stm32mp25xf.dtsi create mode 100644 arch/arm/dts/stm32mp25xxai-pinctrl.dtsi create mode 100644 arch/arm/dts/stm32mp25xxak-pinctrl.dtsi create mode 100644 arch/arm/dts/stm32mp25xxal-pinctrl.dtsi create mode 100644 arch/arm/mach-stm32mp/Kconfig.25x create mode 100644 arch/arm/mach-stm32mp/stm32mp1/Makefile rename arch/arm/mach-stm32mp/{ => stm32mp1}/cpu.c (100%) rename arch/arm/mach-stm32mp/{ => stm32mp1}/fdt.c (100%) rename arch/arm/mach-stm32mp/{ => stm32mp1}/psci.c (100%) rename arch/arm/mach-stm32mp/{ => stm32mp1}/pwr_regulator.c (100%) rename arch/arm/mach-stm32mp/{ => stm32mp1}/spl.c (100%) rename arch/arm/mach-stm32mp/{ => stm32mp1}/stm32mp13x.c (100%) rename arch/arm/mach-stm32mp/{ => stm32mp1}/stm32mp15x.c (100%) rename arch/arm/mach-stm32mp/{ => stm32mp1}/tzc400.c (100%) create mode 100644 arch/arm/mach-stm32mp/stm32mp2/Makefile create mode 100644 arch/arm/mach-stm32mp/stm32mp2/arm64-mmu.c create mode 100644 arch/arm/mach-stm32mp/stm32mp2/cpu.c create mode 100644 arch/arm/mach-stm32mp/stm32mp2/fdt.c create mode 100644 arch/arm/mach-stm32mp/stm32mp2/stm32mp25x.c create mode 100644 board/st/stm32mp2/Kconfig create mode 100644 board/st/stm32mp2/MAINTAINERS create mode 100644 board/st/stm32mp2/Makefile create mode 100644 board/st/stm32mp2/stm32mp2.c create mode 100644 configs/stm32mp25_defconfig create mode 100644 include/configs/stm32mp25_common.h
participants (2)
-
Patrice CHOTARD
-
Patrice Chotard