Message ID | 20250607093730.2249536-10-dario.binacchi@amarulasolutions.com |
---|---|
State | New |
Headers | show |
Series |
|
Related | show |
On 6/7/25 11:37, Dario Binacchi wrote: > The board includes an STM32H747XI SoC with the following resources: > - 2 Mbytes Flash > - 1 Mbyte SRAM > - LCD-TFT controller > - MIPI-DSI interface > - FD-CAN > - USB 2.0 high-speed/full-speed > - Ethernet MAC > - camera interface > > Detailed information can be found at: > https://www.st.com/en/evaluation-tools/stm32h747i-disco.html > > Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com> > > --- > > arch/arm/mach-stm32/stm32h7/Kconfig | 4 +++ > board/st/stm32h747-disco/Kconfig | 15 ++++++++ > board/st/stm32h747-disco/MAINTAINERS | 7 ++++ > board/st/stm32h747-disco/Makefile | 6 ++++ > board/st/stm32h747-disco/stm32h747-disco.c | 42 ++++++++++++++++++++++ > configs/stm32h747-disco_defconfig | 35 ++++++++++++++++++ > drivers/clk/stm32/clk-stm32h7.c | 5 +++ > include/configs/stm32h747-disco.h | 32 +++++++++++++++++ > 8 files changed, 146 insertions(+) > create mode 100644 board/st/stm32h747-disco/Kconfig > create mode 100644 board/st/stm32h747-disco/MAINTAINERS > create mode 100644 board/st/stm32h747-disco/Makefile > create mode 100644 board/st/stm32h747-disco/stm32h747-disco.c > create mode 100644 configs/stm32h747-disco_defconfig > create mode 100644 include/configs/stm32h747-disco.h > > diff --git a/arch/arm/mach-stm32/stm32h7/Kconfig b/arch/arm/mach-stm32/stm32h7/Kconfig > index 70233a4b23cd..72f20c477d04 100644 > --- a/arch/arm/mach-stm32/stm32h7/Kconfig > +++ b/arch/arm/mach-stm32/stm32h7/Kconfig > @@ -6,11 +6,15 @@ config TARGET_STM32H743_DISCO > config TARGET_STM32H743_EVAL > bool "STM32H743 Evaluation board" > > +config TARGET_STM32H747_DISCO > + bool "STM32H747 Discovery board" > + > config TARGET_STM32H750_ART_PI > bool "STM32H750 ART Pi board" > > source "board/st/stm32h743-eval/Kconfig" > source "board/st/stm32h743-disco/Kconfig" > +source "board/st/stm32h747-disco/Kconfig" > source "board/st/stm32h750-art-pi/Kconfig" > > endif > diff --git a/board/st/stm32h747-disco/Kconfig b/board/st/stm32h747-disco/Kconfig > new file mode 100644 > index 000000000000..a7b2c09a327f > --- /dev/null > +++ b/board/st/stm32h747-disco/Kconfig > @@ -0,0 +1,15 @@ > +if TARGET_STM32H747_DISCO > + > +config SYS_BOARD > + default "stm32h747-disco" > + > +config SYS_VENDOR > + default "st" > + > +config SYS_SOC > + default "stm32h7" > + > +config SYS_CONFIG_NAME > + default "stm32h747-disco" > + > +endif > diff --git a/board/st/stm32h747-disco/MAINTAINERS b/board/st/stm32h747-disco/MAINTAINERS > new file mode 100644 > index 000000000000..d48649f773f3 > --- /dev/null > +++ b/board/st/stm32h747-disco/MAINTAINERS > @@ -0,0 +1,7 @@ > +STM32H747 DISCOVERY BOARD > +M: Dario Binacchi <dario.binacchi@amarulasolutions.com> > +S: Maintained > +F: board/st/stm32h747-disco > +F: include/configs/stm32h747-disco.h > +F: configs/stm32h747-disco_defconfig > +F: arch/arm/dts/stm32h747* > diff --git a/board/st/stm32h747-disco/Makefile b/board/st/stm32h747-disco/Makefile > new file mode 100644 > index 000000000000..e11f052cc88f > --- /dev/null > +++ b/board/st/stm32h747-disco/Makefile > @@ -0,0 +1,6 @@ > +# SPDX-License-Identifier: GPL-2.0+ > +# > +# Copyright (c) 2025 Dario Binacchi <dario.binacchi@amarulasolutions.com> > +# > + > +obj-y := stm32h747-disco.o > diff --git a/board/st/stm32h747-disco/stm32h747-disco.c b/board/st/stm32h747-disco/stm32h747-disco.c > new file mode 100644 > index 000000000000..be0884bdeb4d > --- /dev/null > +++ b/board/st/stm32h747-disco/stm32h747-disco.c > @@ -0,0 +1,42 @@ > +// SPDX-License-Identifier: GPL-2.0+ > +/* > + * stm32h747i-disco support > + * > + * Copyright (C) 2025 Dario Binacchi <dario.binacchi@amarulasolutions.com> > + */ > + > +#include <dm.h> > +#include <init.h> > +#include <log.h> > +#include <asm/global_data.h> > + > +DECLARE_GLOBAL_DATA_PTR; > + > +int dram_init(void) > +{ > + struct udevice *dev; > + int ret; > + > + ret = uclass_get_device(UCLASS_RAM, 0, &dev); > + if (ret) { > + debug("DRAM init failed: %d\n", ret); > + return ret; > + } > + > + if (fdtdec_setup_mem_size_base() != 0) > + ret = -EINVAL; > + > + return ret; > +} > + > +int dram_init_banksize(void) > +{ > + fdtdec_setup_memory_banksize(); > + > + return 0; > +} > + > +int board_init(void) > +{ > + return 0; > +} > diff --git a/configs/stm32h747-disco_defconfig b/configs/stm32h747-disco_defconfig > new file mode 100644 > index 000000000000..8a0c72450d1e > --- /dev/null > +++ b/configs/stm32h747-disco_defconfig > @@ -0,0 +1,35 @@ > +CONFIG_ARM=y > +CONFIG_ARCH_STM32=y > +CONFIG_TEXT_BASE=0x08000000 > +CONFIG_SYS_MALLOC_LEN=0x100000 > +CONFIG_NR_DRAM_BANKS=1 > +CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y > +CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x24040000 > +CONFIG_ENV_SIZE=0x2000 > +CONFIG_DEFAULT_DEVICE_TREE="st/stm32h747i-disco" > +CONFIG_OF_LIBFDT_OVERLAY=y > +CONFIG_SYS_LOAD_ADDR=0xd0400000 > +CONFIG_STM32H7=y > +CONFIG_TARGET_STM32H747_DISCO=y > +CONFIG_DISTRO_DEFAULTS=y > +CONFIG_BOOTDELAY=3 > +CONFIG_AUTOBOOT_KEYED=y > +CONFIG_AUTOBOOT_PROMPT="Hit SPACE in %d seconds to stop autoboot.\n" > +CONFIG_AUTOBOOT_STOP_STR=" " > +CONFIG_DEFAULT_FDT_FILE="stm32h747i-disco" > +CONFIG_SYS_CBSIZE=256 > +CONFIG_SYS_PBSIZE=282 > +# CONFIG_DISPLAY_CPUINFO is not set > +CONFIG_SYS_PROMPT="U-Boot > " > +CONFIG_CMD_GPT=y > +CONFIG_CMD_MMC=y > +# CONFIG_CMD_SETEXPR is not set > +CONFIG_CMD_CACHE=y > +CONFIG_CMD_TIMER=y > +CONFIG_CMD_EXT4_WRITE=y > +# CONFIG_ISO_PARTITION is not set > +CONFIG_OF_CONTROL=y > +CONFIG_SYS_RELOC_GD_ENV_ADDR=y > +CONFIG_NO_NET=y > +CONFIG_STM32_SDMMC2=y > +# CONFIG_PINCTRL_FULL is not set > diff --git a/drivers/clk/stm32/clk-stm32h7.c b/drivers/clk/stm32/clk-stm32h7.c > index 6acf2ff0a8fb..aa3be414a29f 100644 > --- a/drivers/clk/stm32/clk-stm32h7.c > +++ b/drivers/clk/stm32/clk-stm32h7.c > @@ -114,6 +114,7 @@ > #define QSPISRC_PER_CK 3 > > #define PWR_CR3 0x0c > +#define PWR_CR3_LDOEN BIT(1) > #define PWR_CR3_SCUEN BIT(2) > #define PWR_D3CR 0x18 > #define PWR_D3CR_VOS_MASK GENMASK(15, 14) > @@ -375,7 +376,11 @@ int configure_clocks(struct udevice *dev) > clrsetbits_le32(pwr_base + PWR_D3CR, PWR_D3CR_VOS_MASK, > VOS_SCALE_1 << PWR_D3CR_VOS_SHIFT); > /* Lock supply configuration update */ > +#if IS_ENABLED(CONFIG_TARGET_STM32H747_DISCO) > + clrbits_le32(pwr_base + PWR_CR3, PWR_CR3_LDOEN); > +#else > clrbits_le32(pwr_base + PWR_CR3, PWR_CR3_SCUEN); > +#endif > while (!(readl(pwr_base + PWR_D3CR) & PWR_D3CR_VOSREADY)) > ; > > diff --git a/include/configs/stm32h747-disco.h b/include/configs/stm32h747-disco.h > new file mode 100644 > index 000000000000..393445a8ae1f > --- /dev/null > +++ b/include/configs/stm32h747-disco.h > @@ -0,0 +1,32 @@ > +/* SPDX-License-Identifier: GPL-2.0+ */ > +/* > + * Copyright (C) 2025 Dario Binacchi <dario.binacchi@amarulasolutions.com> > + */ > + > +#ifndef __CONFIG_H > +#define __CONFIG_H > + > +#include <config.h> > +#include <linux/sizes.h> > + > +/* For booting Linux, use the first 16MB of memory */ > +#define CFG_SYS_BOOTMAPSZ SZ_16M > + > +#define CFG_SYS_FLASH_BASE 0x08000000 > + > +#define CFG_SYS_HZ_CLOCK 1000000 > + > +#define BOOT_TARGET_DEVICES(func) \ > + func(MMC, mmc, 0) > + > +#include <config_distro_bootcmd.h> > +#define CFG_EXTRA_ENV_SETTINGS \ > + "kernel_addr_r=0xD0008000\0" \ > + "fdtfile=stm32h747i-disco.dtb\0" \ > + "fdt_addr_r=0xD0408000\0" \ > + "scriptaddr=0xD0418000\0" \ > + "pxefile_addr_r=0xD0428000\0" \ > + "ramdisk_addr_r=0xD0438000\0" \ > + BOOTENV > + > +#endif /* __CONFIG_H */ Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com> Thanks Patrice To unsubscribe from this group and stop receiving emails from it, send an email to linux-amarula+unsubscribe@amarulasolutions.com.
Hi Patrice, > On 6/7/25 11:37, Dario Binacchi wrote: > > The board includes an STM32H747XI SoC with the following resources: > > - 2 Mbytes Flash > > - 1 Mbyte SRAM > > - LCD-TFT controller > > - MIPI-DSI interface > > - FD-CAN > > - USB 2.0 high-speed/full-speed > > - Ethernet MAC > > - camera interface > > > > Detailed information can be found at: > > https://www.st.com/en/evaluation-tools/stm32h747i-disco.html > > > > Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com> > > > > --- > > > > arch/arm/mach-stm32/stm32h7/Kconfig | 4 +++ > > board/st/stm32h747-disco/Kconfig | 15 ++++++++ > > board/st/stm32h747-disco/MAINTAINERS | 7 ++++ > > board/st/stm32h747-disco/Makefile | 6 ++++ > > board/st/stm32h747-disco/stm32h747-disco.c | 42 > > ++++++++++++++++++++++ configs/stm32h747-disco_defconfig | > > 35 ++++++++++++++++++ drivers/clk/stm32/clk-stm32h7.c | > > 5 +++ include/configs/stm32h747-disco.h | 32 > > +++++++++++++++++ 8 files changed, 146 insertions(+) > > create mode 100644 board/st/stm32h747-disco/Kconfig > > create mode 100644 board/st/stm32h747-disco/MAINTAINERS > > create mode 100644 board/st/stm32h747-disco/Makefile > > create mode 100644 board/st/stm32h747-disco/stm32h747-disco.c > > create mode 100644 configs/stm32h747-disco_defconfig > > create mode 100644 include/configs/stm32h747-disco.h > > > > diff --git a/arch/arm/mach-stm32/stm32h7/Kconfig > > b/arch/arm/mach-stm32/stm32h7/Kconfig index > > 70233a4b23cd..72f20c477d04 100644 --- > > a/arch/arm/mach-stm32/stm32h7/Kconfig +++ > > b/arch/arm/mach-stm32/stm32h7/Kconfig @@ -6,11 +6,15 @@ config > > TARGET_STM32H743_DISCO config TARGET_STM32H743_EVAL > > bool "STM32H743 Evaluation board" > > > > +config TARGET_STM32H747_DISCO > > + bool "STM32H747 Discovery board" > > + > > config TARGET_STM32H750_ART_PI > > bool "STM32H750 ART Pi board" > > > > source "board/st/stm32h743-eval/Kconfig" > > source "board/st/stm32h743-disco/Kconfig" > > +source "board/st/stm32h747-disco/Kconfig" > > source "board/st/stm32h750-art-pi/Kconfig" > > > > endif > > diff --git a/board/st/stm32h747-disco/Kconfig > > b/board/st/stm32h747-disco/Kconfig new file mode 100644 > > index 000000000000..a7b2c09a327f > > --- /dev/null > > +++ b/board/st/stm32h747-disco/Kconfig > > @@ -0,0 +1,15 @@ > > +if TARGET_STM32H747_DISCO > > + > > +config SYS_BOARD > > + default "stm32h747-disco" > > + > > +config SYS_VENDOR > > + default "st" > > + > > +config SYS_SOC > > + default "stm32h7" > > + > > +config SYS_CONFIG_NAME > > + default "stm32h747-disco" > > + > > +endif > > diff --git a/board/st/stm32h747-disco/MAINTAINERS > > b/board/st/stm32h747-disco/MAINTAINERS new file mode 100644 > > index 000000000000..d48649f773f3 > > --- /dev/null > > +++ b/board/st/stm32h747-disco/MAINTAINERS > > @@ -0,0 +1,7 @@ > > +STM32H747 DISCOVERY BOARD > > +M: Dario Binacchi <dario.binacchi@amarulasolutions.com> > > +S: Maintained > > +F: board/st/stm32h747-disco > > +F: include/configs/stm32h747-disco.h > > +F: configs/stm32h747-disco_defconfig > > +F: arch/arm/dts/stm32h747* > > diff --git a/board/st/stm32h747-disco/Makefile > > b/board/st/stm32h747-disco/Makefile new file mode 100644 > > index 000000000000..e11f052cc88f > > --- /dev/null > > +++ b/board/st/stm32h747-disco/Makefile > > @@ -0,0 +1,6 @@ > > +# SPDX-License-Identifier: GPL-2.0+ > > +# > > +# Copyright (c) 2025 Dario Binacchi > > <dario.binacchi@amarulasolutions.com> +# > > + > > +obj-y := stm32h747-disco.o > > diff --git a/board/st/stm32h747-disco/stm32h747-disco.c > > b/board/st/stm32h747-disco/stm32h747-disco.c new file mode 100644 > > index 000000000000..be0884bdeb4d > > --- /dev/null > > +++ b/board/st/stm32h747-disco/stm32h747-disco.c > > @@ -0,0 +1,42 @@ > > +// SPDX-License-Identifier: GPL-2.0+ > > +/* > > + * stm32h747i-disco support > > + * > > + * Copyright (C) 2025 Dario Binacchi > > <dario.binacchi@amarulasolutions.com> > > + */ > > + > > +#include <dm.h> > > +#include <init.h> > > +#include <log.h> > > +#include <asm/global_data.h> > > + > > +DECLARE_GLOBAL_DATA_PTR; > > + > > +int dram_init(void) > > +{ > > + struct udevice *dev; > > + int ret; > > + > > + ret = uclass_get_device(UCLASS_RAM, 0, &dev); > > + if (ret) { > > + debug("DRAM init failed: %d\n", ret); > > + return ret; > > + } > > + > > + if (fdtdec_setup_mem_size_base() != 0) > > + ret = -EINVAL; > > + > > + return ret; > > +} > > + > > +int dram_init_banksize(void) > > +{ > > + fdtdec_setup_memory_banksize(); > > + > > + return 0; > > +} > > + > > +int board_init(void) > > +{ > > + return 0; > > +} > > diff --git a/configs/stm32h747-disco_defconfig > > b/configs/stm32h747-disco_defconfig new file mode 100644 > > index 000000000000..8a0c72450d1e > > --- /dev/null > > +++ b/configs/stm32h747-disco_defconfig > > @@ -0,0 +1,35 @@ > > +CONFIG_ARM=y > > +CONFIG_ARCH_STM32=y > > +CONFIG_TEXT_BASE=0x08000000 > > +CONFIG_SYS_MALLOC_LEN=0x100000 > > +CONFIG_NR_DRAM_BANKS=1 > > +CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y > > +CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x24040000 > > +CONFIG_ENV_SIZE=0x2000 > > +CONFIG_DEFAULT_DEVICE_TREE="st/stm32h747i-disco" > > +CONFIG_OF_LIBFDT_OVERLAY=y > > +CONFIG_SYS_LOAD_ADDR=0xd0400000 > > +CONFIG_STM32H7=y > > +CONFIG_TARGET_STM32H747_DISCO=y > > +CONFIG_DISTRO_DEFAULTS=y I'm just wondering if there is any plan to move forward to use the new approach? As fair as I remember this is the "deprecated" option... > > +CONFIG_BOOTDELAY=3 > > +CONFIG_AUTOBOOT_KEYED=y > > +CONFIG_AUTOBOOT_PROMPT="Hit SPACE in %d seconds to stop > > autoboot.\n" +CONFIG_AUTOBOOT_STOP_STR=" " > > +CONFIG_DEFAULT_FDT_FILE="stm32h747i-disco" > > +CONFIG_SYS_CBSIZE=256 > > +CONFIG_SYS_PBSIZE=282 > > +# CONFIG_DISPLAY_CPUINFO is not set > > +CONFIG_SYS_PROMPT="U-Boot > " > > +CONFIG_CMD_GPT=y > > +CONFIG_CMD_MMC=y > > +# CONFIG_CMD_SETEXPR is not set > > +CONFIG_CMD_CACHE=y > > +CONFIG_CMD_TIMER=y > > +CONFIG_CMD_EXT4_WRITE=y > > +# CONFIG_ISO_PARTITION is not set > > +CONFIG_OF_CONTROL=y > > +CONFIG_SYS_RELOC_GD_ENV_ADDR=y > > +CONFIG_NO_NET=y > > +CONFIG_STM32_SDMMC2=y > > +# CONFIG_PINCTRL_FULL is not set > > diff --git a/drivers/clk/stm32/clk-stm32h7.c > > b/drivers/clk/stm32/clk-stm32h7.c index 6acf2ff0a8fb..aa3be414a29f > > 100644 --- a/drivers/clk/stm32/clk-stm32h7.c > > +++ b/drivers/clk/stm32/clk-stm32h7.c > > @@ -114,6 +114,7 @@ > > #define QSPISRC_PER_CK 3 > > > > #define PWR_CR3 0x0c > > +#define PWR_CR3_LDOEN BIT(1) > > #define PWR_CR3_SCUEN BIT(2) > > #define PWR_D3CR 0x18 > > #define PWR_D3CR_VOS_MASK GENMASK(15, 14) > > @@ -375,7 +376,11 @@ int configure_clocks(struct udevice *dev) > > clrsetbits_le32(pwr_base + PWR_D3CR, PWR_D3CR_VOS_MASK, > > VOS_SCALE_1 << PWR_D3CR_VOS_SHIFT); > > /* Lock supply configuration update */ > > +#if IS_ENABLED(CONFIG_TARGET_STM32H747_DISCO) > > + clrbits_le32(pwr_base + PWR_CR3, PWR_CR3_LDOEN); > > +#else > > clrbits_le32(pwr_base + PWR_CR3, PWR_CR3_SCUEN); > > +#endif > > while (!(readl(pwr_base + PWR_D3CR) & PWR_D3CR_VOSREADY)) > > ; > > > > diff --git a/include/configs/stm32h747-disco.h > > b/include/configs/stm32h747-disco.h new file mode 100644 > > index 000000000000..393445a8ae1f > > --- /dev/null > > +++ b/include/configs/stm32h747-disco.h > > @@ -0,0 +1,32 @@ > > +/* SPDX-License-Identifier: GPL-2.0+ */ > > +/* > > + * Copyright (C) 2025 Dario Binacchi > > <dario.binacchi@amarulasolutions.com> > > + */ > > + > > +#ifndef __CONFIG_H > > +#define __CONFIG_H > > + > > +#include <config.h> > > +#include <linux/sizes.h> > > + > > +/* For booting Linux, use the first 16MB of memory */ > > +#define CFG_SYS_BOOTMAPSZ SZ_16M > > + > > +#define CFG_SYS_FLASH_BASE 0x08000000 > > + > > +#define CFG_SYS_HZ_CLOCK 1000000 > > + > > +#define BOOT_TARGET_DEVICES(func) \ > > + func(MMC, mmc, 0) > > + > > +#include <config_distro_bootcmd.h> > > +#define CFG_EXTRA_ENV_SETTINGS \ > > + "kernel_addr_r=0xD0008000\0" > > \ > > + "fdtfile=stm32h747i-disco.dtb\0" \ > > + "fdt_addr_r=0xD0408000\0" \ > > + "scriptaddr=0xD0418000\0" \ > > + "pxefile_addr_r=0xD0428000\0" \ > > + "ramdisk_addr_r=0xD0438000\0" > > \ > > + BOOTENV > > + > > +#endif /* __CONFIG_H */ > Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com> > > Thanks > Patrice Best regards, Lukasz Majewski -- DENX Software Engineering GmbH, Managing Director: Erika Unter HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de To unsubscribe from this group and stop receiving emails from it, send an email to linux-amarula+unsubscribe@amarulasolutions.com.
On 6/9/25 10:07, Lukasz Majewski wrote: > Hi Patrice, > >> On 6/7/25 11:37, Dario Binacchi wrote: >>> The board includes an STM32H747XI SoC with the following resources: >>> - 2 Mbytes Flash >>> - 1 Mbyte SRAM >>> - LCD-TFT controller >>> - MIPI-DSI interface >>> - FD-CAN >>> - USB 2.0 high-speed/full-speed >>> - Ethernet MAC >>> - camera interface >>> >>> Detailed information can be found at: >>> https://www.st.com/en/evaluation-tools/stm32h747i-disco.html >>> >>> Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com> >>> >>> --- >>> >>> arch/arm/mach-stm32/stm32h7/Kconfig | 4 +++ >>> board/st/stm32h747-disco/Kconfig | 15 ++++++++ >>> board/st/stm32h747-disco/MAINTAINERS | 7 ++++ >>> board/st/stm32h747-disco/Makefile | 6 ++++ >>> board/st/stm32h747-disco/stm32h747-disco.c | 42 >>> ++++++++++++++++++++++ configs/stm32h747-disco_defconfig | >>> 35 ++++++++++++++++++ drivers/clk/stm32/clk-stm32h7.c | >>> 5 +++ include/configs/stm32h747-disco.h | 32 >>> +++++++++++++++++ 8 files changed, 146 insertions(+) >>> create mode 100644 board/st/stm32h747-disco/Kconfig >>> create mode 100644 board/st/stm32h747-disco/MAINTAINERS >>> create mode 100644 board/st/stm32h747-disco/Makefile >>> create mode 100644 board/st/stm32h747-disco/stm32h747-disco.c >>> create mode 100644 configs/stm32h747-disco_defconfig >>> create mode 100644 include/configs/stm32h747-disco.h >>> >>> diff --git a/arch/arm/mach-stm32/stm32h7/Kconfig >>> b/arch/arm/mach-stm32/stm32h7/Kconfig index >>> 70233a4b23cd..72f20c477d04 100644 --- >>> a/arch/arm/mach-stm32/stm32h7/Kconfig +++ >>> b/arch/arm/mach-stm32/stm32h7/Kconfig @@ -6,11 +6,15 @@ config >>> TARGET_STM32H743_DISCO config TARGET_STM32H743_EVAL >>> bool "STM32H743 Evaluation board" >>> >>> +config TARGET_STM32H747_DISCO >>> + bool "STM32H747 Discovery board" >>> + >>> config TARGET_STM32H750_ART_PI >>> bool "STM32H750 ART Pi board" >>> >>> source "board/st/stm32h743-eval/Kconfig" >>> source "board/st/stm32h743-disco/Kconfig" >>> +source "board/st/stm32h747-disco/Kconfig" >>> source "board/st/stm32h750-art-pi/Kconfig" >>> >>> endif >>> diff --git a/board/st/stm32h747-disco/Kconfig >>> b/board/st/stm32h747-disco/Kconfig new file mode 100644 >>> index 000000000000..a7b2c09a327f >>> --- /dev/null >>> +++ b/board/st/stm32h747-disco/Kconfig >>> @@ -0,0 +1,15 @@ >>> +if TARGET_STM32H747_DISCO >>> + >>> +config SYS_BOARD >>> + default "stm32h747-disco" >>> + >>> +config SYS_VENDOR >>> + default "st" >>> + >>> +config SYS_SOC >>> + default "stm32h7" >>> + >>> +config SYS_CONFIG_NAME >>> + default "stm32h747-disco" >>> + >>> +endif >>> diff --git a/board/st/stm32h747-disco/MAINTAINERS >>> b/board/st/stm32h747-disco/MAINTAINERS new file mode 100644 >>> index 000000000000..d48649f773f3 >>> --- /dev/null >>> +++ b/board/st/stm32h747-disco/MAINTAINERS >>> @@ -0,0 +1,7 @@ >>> +STM32H747 DISCOVERY BOARD >>> +M: Dario Binacchi <dario.binacchi@amarulasolutions.com> >>> +S: Maintained >>> +F: board/st/stm32h747-disco >>> +F: include/configs/stm32h747-disco.h >>> +F: configs/stm32h747-disco_defconfig >>> +F: arch/arm/dts/stm32h747* >>> diff --git a/board/st/stm32h747-disco/Makefile >>> b/board/st/stm32h747-disco/Makefile new file mode 100644 >>> index 000000000000..e11f052cc88f >>> --- /dev/null >>> +++ b/board/st/stm32h747-disco/Makefile >>> @@ -0,0 +1,6 @@ >>> +# SPDX-License-Identifier: GPL-2.0+ >>> +# >>> +# Copyright (c) 2025 Dario Binacchi >>> <dario.binacchi@amarulasolutions.com> +# >>> + >>> +obj-y := stm32h747-disco.o >>> diff --git a/board/st/stm32h747-disco/stm32h747-disco.c >>> b/board/st/stm32h747-disco/stm32h747-disco.c new file mode 100644 >>> index 000000000000..be0884bdeb4d >>> --- /dev/null >>> +++ b/board/st/stm32h747-disco/stm32h747-disco.c >>> @@ -0,0 +1,42 @@ >>> +// SPDX-License-Identifier: GPL-2.0+ >>> +/* >>> + * stm32h747i-disco support >>> + * >>> + * Copyright (C) 2025 Dario Binacchi >>> <dario.binacchi@amarulasolutions.com> >>> + */ >>> + >>> +#include <dm.h> >>> +#include <init.h> >>> +#include <log.h> >>> +#include <asm/global_data.h> >>> + >>> +DECLARE_GLOBAL_DATA_PTR; >>> + >>> +int dram_init(void) >>> +{ >>> + struct udevice *dev; >>> + int ret; >>> + >>> + ret = uclass_get_device(UCLASS_RAM, 0, &dev); >>> + if (ret) { >>> + debug("DRAM init failed: %d\n", ret); >>> + return ret; >>> + } >>> + >>> + if (fdtdec_setup_mem_size_base() != 0) >>> + ret = -EINVAL; >>> + >>> + return ret; >>> +} >>> + >>> +int dram_init_banksize(void) >>> +{ >>> + fdtdec_setup_memory_banksize(); >>> + >>> + return 0; >>> +} >>> + >>> +int board_init(void) >>> +{ >>> + return 0; >>> +} >>> diff --git a/configs/stm32h747-disco_defconfig >>> b/configs/stm32h747-disco_defconfig new file mode 100644 >>> index 000000000000..8a0c72450d1e >>> --- /dev/null >>> +++ b/configs/stm32h747-disco_defconfig >>> @@ -0,0 +1,35 @@ >>> +CONFIG_ARM=y >>> +CONFIG_ARCH_STM32=y >>> +CONFIG_TEXT_BASE=0x08000000 >>> +CONFIG_SYS_MALLOC_LEN=0x100000 >>> +CONFIG_NR_DRAM_BANKS=1 >>> +CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y >>> +CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x24040000 >>> +CONFIG_ENV_SIZE=0x2000 >>> +CONFIG_DEFAULT_DEVICE_TREE="st/stm32h747i-disco" >>> +CONFIG_OF_LIBFDT_OVERLAY=y >>> +CONFIG_SYS_LOAD_ADDR=0xd0400000 >>> +CONFIG_STM32H7=y >>> +CONFIG_TARGET_STM32H747_DISCO=y >>> +CONFIG_DISTRO_DEFAULTS=y > > I'm just wondering if there is any plan to move forward to use the new > approach? > > As fair as I remember this is the "deprecated" option... Hi Lukasz I was not aware of deprecation of CONFIG_DISTRO_DEFAULTS . Can you point to me the other alternative ? Thanks Patrice > >>> +CONFIG_BOOTDELAY=3 >>> +CONFIG_AUTOBOOT_KEYED=y >>> +CONFIG_AUTOBOOT_PROMPT="Hit SPACE in %d seconds to stop >>> autoboot.\n" +CONFIG_AUTOBOOT_STOP_STR=" " >>> +CONFIG_DEFAULT_FDT_FILE="stm32h747i-disco" >>> +CONFIG_SYS_CBSIZE=256 >>> +CONFIG_SYS_PBSIZE=282 >>> +# CONFIG_DISPLAY_CPUINFO is not set >>> +CONFIG_SYS_PROMPT="U-Boot > " >>> +CONFIG_CMD_GPT=y >>> +CONFIG_CMD_MMC=y >>> +# CONFIG_CMD_SETEXPR is not set >>> +CONFIG_CMD_CACHE=y >>> +CONFIG_CMD_TIMER=y >>> +CONFIG_CMD_EXT4_WRITE=y >>> +# CONFIG_ISO_PARTITION is not set >>> +CONFIG_OF_CONTROL=y >>> +CONFIG_SYS_RELOC_GD_ENV_ADDR=y >>> +CONFIG_NO_NET=y >>> +CONFIG_STM32_SDMMC2=y >>> +# CONFIG_PINCTRL_FULL is not set >>> diff --git a/drivers/clk/stm32/clk-stm32h7.c >>> b/drivers/clk/stm32/clk-stm32h7.c index 6acf2ff0a8fb..aa3be414a29f >>> 100644 --- a/drivers/clk/stm32/clk-stm32h7.c >>> +++ b/drivers/clk/stm32/clk-stm32h7.c >>> @@ -114,6 +114,7 @@ >>> #define QSPISRC_PER_CK 3 >>> >>> #define PWR_CR3 0x0c >>> +#define PWR_CR3_LDOEN BIT(1) >>> #define PWR_CR3_SCUEN BIT(2) >>> #define PWR_D3CR 0x18 >>> #define PWR_D3CR_VOS_MASK GENMASK(15, 14) >>> @@ -375,7 +376,11 @@ int configure_clocks(struct udevice *dev) >>> clrsetbits_le32(pwr_base + PWR_D3CR, PWR_D3CR_VOS_MASK, >>> VOS_SCALE_1 << PWR_D3CR_VOS_SHIFT); >>> /* Lock supply configuration update */ >>> +#if IS_ENABLED(CONFIG_TARGET_STM32H747_DISCO) >>> + clrbits_le32(pwr_base + PWR_CR3, PWR_CR3_LDOEN); >>> +#else >>> clrbits_le32(pwr_base + PWR_CR3, PWR_CR3_SCUEN); >>> +#endif >>> while (!(readl(pwr_base + PWR_D3CR) & PWR_D3CR_VOSREADY)) >>> ; >>> >>> diff --git a/include/configs/stm32h747-disco.h >>> b/include/configs/stm32h747-disco.h new file mode 100644 >>> index 000000000000..393445a8ae1f >>> --- /dev/null >>> +++ b/include/configs/stm32h747-disco.h >>> @@ -0,0 +1,32 @@ >>> +/* SPDX-License-Identifier: GPL-2.0+ */ >>> +/* >>> + * Copyright (C) 2025 Dario Binacchi >>> <dario.binacchi@amarulasolutions.com> >>> + */ >>> + >>> +#ifndef __CONFIG_H >>> +#define __CONFIG_H >>> + >>> +#include <config.h> >>> +#include <linux/sizes.h> >>> + >>> +/* For booting Linux, use the first 16MB of memory */ >>> +#define CFG_SYS_BOOTMAPSZ SZ_16M >>> + >>> +#define CFG_SYS_FLASH_BASE 0x08000000 >>> + >>> +#define CFG_SYS_HZ_CLOCK 1000000 >>> + >>> +#define BOOT_TARGET_DEVICES(func) \ >>> + func(MMC, mmc, 0) >>> + >>> +#include <config_distro_bootcmd.h> >>> +#define CFG_EXTRA_ENV_SETTINGS \ >>> + "kernel_addr_r=0xD0008000\0" >>> \ >>> + "fdtfile=stm32h747i-disco.dtb\0" \ >>> + "fdt_addr_r=0xD0408000\0" \ >>> + "scriptaddr=0xD0418000\0" \ >>> + "pxefile_addr_r=0xD0428000\0" \ >>> + "ramdisk_addr_r=0xD0438000\0" >>> \ >>> + BOOTENV >>> + >>> +#endif /* __CONFIG_H */ >> Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com> >> >> Thanks >> Patrice > > > > > Best regards, > > Lukasz Majewski > > -- > > DENX Software Engineering GmbH, Managing Director: Erika Unter > HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany > Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de To unsubscribe from this group and stop receiving emails from it, send an email to linux-amarula+unsubscribe@amarulasolutions.com.
On 6/9/25 10:34, Patrice CHOTARD wrote: > > > On 6/9/25 10:07, Lukasz Majewski wrote: >> Hi Patrice, >> >>> On 6/7/25 11:37, Dario Binacchi wrote: >>>> The board includes an STM32H747XI SoC with the following resources: >>>> - 2 Mbytes Flash >>>> - 1 Mbyte SRAM >>>> - LCD-TFT controller >>>> - MIPI-DSI interface >>>> - FD-CAN >>>> - USB 2.0 high-speed/full-speed >>>> - Ethernet MAC >>>> - camera interface >>>> >>>> Detailed information can be found at: >>>> https://www.st.com/en/evaluation-tools/stm32h747i-disco.html >>>> >>>> Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com> >>>> >>>> --- >>>> >>>> arch/arm/mach-stm32/stm32h7/Kconfig | 4 +++ >>>> board/st/stm32h747-disco/Kconfig | 15 ++++++++ >>>> board/st/stm32h747-disco/MAINTAINERS | 7 ++++ >>>> board/st/stm32h747-disco/Makefile | 6 ++++ >>>> board/st/stm32h747-disco/stm32h747-disco.c | 42 >>>> ++++++++++++++++++++++ configs/stm32h747-disco_defconfig | >>>> 35 ++++++++++++++++++ drivers/clk/stm32/clk-stm32h7.c | >>>> 5 +++ include/configs/stm32h747-disco.h | 32 >>>> +++++++++++++++++ 8 files changed, 146 insertions(+) >>>> create mode 100644 board/st/stm32h747-disco/Kconfig >>>> create mode 100644 board/st/stm32h747-disco/MAINTAINERS >>>> create mode 100644 board/st/stm32h747-disco/Makefile >>>> create mode 100644 board/st/stm32h747-disco/stm32h747-disco.c >>>> create mode 100644 configs/stm32h747-disco_defconfig >>>> create mode 100644 include/configs/stm32h747-disco.h >>>> >>>> diff --git a/arch/arm/mach-stm32/stm32h7/Kconfig >>>> b/arch/arm/mach-stm32/stm32h7/Kconfig index >>>> 70233a4b23cd..72f20c477d04 100644 --- >>>> a/arch/arm/mach-stm32/stm32h7/Kconfig +++ >>>> b/arch/arm/mach-stm32/stm32h7/Kconfig @@ -6,11 +6,15 @@ config >>>> TARGET_STM32H743_DISCO config TARGET_STM32H743_EVAL >>>> bool "STM32H743 Evaluation board" >>>> >>>> +config TARGET_STM32H747_DISCO >>>> + bool "STM32H747 Discovery board" >>>> + >>>> config TARGET_STM32H750_ART_PI >>>> bool "STM32H750 ART Pi board" >>>> >>>> source "board/st/stm32h743-eval/Kconfig" >>>> source "board/st/stm32h743-disco/Kconfig" >>>> +source "board/st/stm32h747-disco/Kconfig" >>>> source "board/st/stm32h750-art-pi/Kconfig" >>>> >>>> endif >>>> diff --git a/board/st/stm32h747-disco/Kconfig >>>> b/board/st/stm32h747-disco/Kconfig new file mode 100644 >>>> index 000000000000..a7b2c09a327f >>>> --- /dev/null >>>> +++ b/board/st/stm32h747-disco/Kconfig >>>> @@ -0,0 +1,15 @@ >>>> +if TARGET_STM32H747_DISCO >>>> + >>>> +config SYS_BOARD >>>> + default "stm32h747-disco" >>>> + >>>> +config SYS_VENDOR >>>> + default "st" >>>> + >>>> +config SYS_SOC >>>> + default "stm32h7" >>>> + >>>> +config SYS_CONFIG_NAME >>>> + default "stm32h747-disco" >>>> + >>>> +endif >>>> diff --git a/board/st/stm32h747-disco/MAINTAINERS >>>> b/board/st/stm32h747-disco/MAINTAINERS new file mode 100644 >>>> index 000000000000..d48649f773f3 >>>> --- /dev/null >>>> +++ b/board/st/stm32h747-disco/MAINTAINERS >>>> @@ -0,0 +1,7 @@ >>>> +STM32H747 DISCOVERY BOARD >>>> +M: Dario Binacchi <dario.binacchi@amarulasolutions.com> >>>> +S: Maintained >>>> +F: board/st/stm32h747-disco >>>> +F: include/configs/stm32h747-disco.h >>>> +F: configs/stm32h747-disco_defconfig >>>> +F: arch/arm/dts/stm32h747* >>>> diff --git a/board/st/stm32h747-disco/Makefile >>>> b/board/st/stm32h747-disco/Makefile new file mode 100644 >>>> index 000000000000..e11f052cc88f >>>> --- /dev/null >>>> +++ b/board/st/stm32h747-disco/Makefile >>>> @@ -0,0 +1,6 @@ >>>> +# SPDX-License-Identifier: GPL-2.0+ >>>> +# >>>> +# Copyright (c) 2025 Dario Binacchi >>>> <dario.binacchi@amarulasolutions.com> +# >>>> + >>>> +obj-y := stm32h747-disco.o >>>> diff --git a/board/st/stm32h747-disco/stm32h747-disco.c >>>> b/board/st/stm32h747-disco/stm32h747-disco.c new file mode 100644 >>>> index 000000000000..be0884bdeb4d >>>> --- /dev/null >>>> +++ b/board/st/stm32h747-disco/stm32h747-disco.c >>>> @@ -0,0 +1,42 @@ >>>> +// SPDX-License-Identifier: GPL-2.0+ >>>> +/* >>>> + * stm32h747i-disco support >>>> + * >>>> + * Copyright (C) 2025 Dario Binacchi >>>> <dario.binacchi@amarulasolutions.com> >>>> + */ >>>> + >>>> +#include <dm.h> >>>> +#include <init.h> >>>> +#include <log.h> >>>> +#include <asm/global_data.h> >>>> + >>>> +DECLARE_GLOBAL_DATA_PTR; >>>> + >>>> +int dram_init(void) >>>> +{ >>>> + struct udevice *dev; >>>> + int ret; >>>> + >>>> + ret = uclass_get_device(UCLASS_RAM, 0, &dev); >>>> + if (ret) { >>>> + debug("DRAM init failed: %d\n", ret); >>>> + return ret; >>>> + } >>>> + >>>> + if (fdtdec_setup_mem_size_base() != 0) >>>> + ret = -EINVAL; >>>> + >>>> + return ret; >>>> +} >>>> + >>>> +int dram_init_banksize(void) >>>> +{ >>>> + fdtdec_setup_memory_banksize(); >>>> + >>>> + return 0; >>>> +} >>>> + >>>> +int board_init(void) >>>> +{ >>>> + return 0; >>>> +} >>>> diff --git a/configs/stm32h747-disco_defconfig >>>> b/configs/stm32h747-disco_defconfig new file mode 100644 >>>> index 000000000000..8a0c72450d1e >>>> --- /dev/null >>>> +++ b/configs/stm32h747-disco_defconfig >>>> @@ -0,0 +1,35 @@ >>>> +CONFIG_ARM=y >>>> +CONFIG_ARCH_STM32=y >>>> +CONFIG_TEXT_BASE=0x08000000 >>>> +CONFIG_SYS_MALLOC_LEN=0x100000 >>>> +CONFIG_NR_DRAM_BANKS=1 >>>> +CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y >>>> +CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x24040000 >>>> +CONFIG_ENV_SIZE=0x2000 >>>> +CONFIG_DEFAULT_DEVICE_TREE="st/stm32h747i-disco" >>>> +CONFIG_OF_LIBFDT_OVERLAY=y >>>> +CONFIG_SYS_LOAD_ADDR=0xd0400000 >>>> +CONFIG_STM32H7=y >>>> +CONFIG_TARGET_STM32H747_DISCO=y >>>> +CONFIG_DISTRO_DEFAULTS=y >> >> I'm just wondering if there is any plan to move forward to use the new >> approach? >> >> As fair as I remember this is the "deprecated" option... > > Hi Lukasz > > I was not aware of deprecation of CONFIG_DISTRO_DEFAULTS . > Can you point to me the other alternative ? I found information in doc/develop/bootstd/overview.rst I add this to my todo list. Thanks for pointing this. Patrice > > Thanks > Patrice > >> >>>> +CONFIG_BOOTDELAY=3 >>>> +CONFIG_AUTOBOOT_KEYED=y >>>> +CONFIG_AUTOBOOT_PROMPT="Hit SPACE in %d seconds to stop >>>> autoboot.\n" +CONFIG_AUTOBOOT_STOP_STR=" " >>>> +CONFIG_DEFAULT_FDT_FILE="stm32h747i-disco" >>>> +CONFIG_SYS_CBSIZE=256 >>>> +CONFIG_SYS_PBSIZE=282 >>>> +# CONFIG_DISPLAY_CPUINFO is not set >>>> +CONFIG_SYS_PROMPT="U-Boot > " >>>> +CONFIG_CMD_GPT=y >>>> +CONFIG_CMD_MMC=y >>>> +# CONFIG_CMD_SETEXPR is not set >>>> +CONFIG_CMD_CACHE=y >>>> +CONFIG_CMD_TIMER=y >>>> +CONFIG_CMD_EXT4_WRITE=y >>>> +# CONFIG_ISO_PARTITION is not set >>>> +CONFIG_OF_CONTROL=y >>>> +CONFIG_SYS_RELOC_GD_ENV_ADDR=y >>>> +CONFIG_NO_NET=y >>>> +CONFIG_STM32_SDMMC2=y >>>> +# CONFIG_PINCTRL_FULL is not set >>>> diff --git a/drivers/clk/stm32/clk-stm32h7.c >>>> b/drivers/clk/stm32/clk-stm32h7.c index 6acf2ff0a8fb..aa3be414a29f >>>> 100644 --- a/drivers/clk/stm32/clk-stm32h7.c >>>> +++ b/drivers/clk/stm32/clk-stm32h7.c >>>> @@ -114,6 +114,7 @@ >>>> #define QSPISRC_PER_CK 3 >>>> >>>> #define PWR_CR3 0x0c >>>> +#define PWR_CR3_LDOEN BIT(1) >>>> #define PWR_CR3_SCUEN BIT(2) >>>> #define PWR_D3CR 0x18 >>>> #define PWR_D3CR_VOS_MASK GENMASK(15, 14) >>>> @@ -375,7 +376,11 @@ int configure_clocks(struct udevice *dev) >>>> clrsetbits_le32(pwr_base + PWR_D3CR, PWR_D3CR_VOS_MASK, >>>> VOS_SCALE_1 << PWR_D3CR_VOS_SHIFT); >>>> /* Lock supply configuration update */ >>>> +#if IS_ENABLED(CONFIG_TARGET_STM32H747_DISCO) >>>> + clrbits_le32(pwr_base + PWR_CR3, PWR_CR3_LDOEN); >>>> +#else >>>> clrbits_le32(pwr_base + PWR_CR3, PWR_CR3_SCUEN); >>>> +#endif >>>> while (!(readl(pwr_base + PWR_D3CR) & PWR_D3CR_VOSREADY)) >>>> ; >>>> >>>> diff --git a/include/configs/stm32h747-disco.h >>>> b/include/configs/stm32h747-disco.h new file mode 100644 >>>> index 000000000000..393445a8ae1f >>>> --- /dev/null >>>> +++ b/include/configs/stm32h747-disco.h >>>> @@ -0,0 +1,32 @@ >>>> +/* SPDX-License-Identifier: GPL-2.0+ */ >>>> +/* >>>> + * Copyright (C) 2025 Dario Binacchi >>>> <dario.binacchi@amarulasolutions.com> >>>> + */ >>>> + >>>> +#ifndef __CONFIG_H >>>> +#define __CONFIG_H >>>> + >>>> +#include <config.h> >>>> +#include <linux/sizes.h> >>>> + >>>> +/* For booting Linux, use the first 16MB of memory */ >>>> +#define CFG_SYS_BOOTMAPSZ SZ_16M >>>> + >>>> +#define CFG_SYS_FLASH_BASE 0x08000000 >>>> + >>>> +#define CFG_SYS_HZ_CLOCK 1000000 >>>> + >>>> +#define BOOT_TARGET_DEVICES(func) \ >>>> + func(MMC, mmc, 0) >>>> + >>>> +#include <config_distro_bootcmd.h> >>>> +#define CFG_EXTRA_ENV_SETTINGS \ >>>> + "kernel_addr_r=0xD0008000\0" >>>> \ >>>> + "fdtfile=stm32h747i-disco.dtb\0" \ >>>> + "fdt_addr_r=0xD0408000\0" \ >>>> + "scriptaddr=0xD0418000\0" \ >>>> + "pxefile_addr_r=0xD0428000\0" \ >>>> + "ramdisk_addr_r=0xD0438000\0" >>>> \ >>>> + BOOTENV >>>> + >>>> +#endif /* __CONFIG_H */ >>> Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com> >>> >>> Thanks >>> Patrice >> >> >> >> >> Best regards, >> >> Lukasz Majewski >> >> -- >> >> DENX Software Engineering GmbH, Managing Director: Erika Unter >> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany >> Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de > _______________________________________________ > Uboot-stm32 mailing list > Uboot-stm32@st-md-mailman.stormreply.com > https://st-md-mailman.stormreply.com/mailman/listinfo/uboot-stm32 To unsubscribe from this group and stop receiving emails from it, send an email to linux-amarula+unsubscribe@amarulasolutions.com.
On Mon, 9 Jun 2025 10:34:39 +0200 Patrice CHOTARD <patrice.chotard@foss.st.com> wrote: > On 6/9/25 10:07, Lukasz Majewski wrote: > > Hi Patrice, > > > >> On 6/7/25 11:37, Dario Binacchi wrote: > >>> The board includes an STM32H747XI SoC with the following > >>> resources: > >>> - 2 Mbytes Flash > >>> - 1 Mbyte SRAM > >>> - LCD-TFT controller > >>> - MIPI-DSI interface > >>> - FD-CAN > >>> - USB 2.0 high-speed/full-speed > >>> - Ethernet MAC > >>> - camera interface > >>> > >>> Detailed information can be found at: > >>> https://www.st.com/en/evaluation-tools/stm32h747i-disco.html > >>> > >>> Signed-off-by: Dario Binacchi > >>> <dario.binacchi@amarulasolutions.com> > >>> > >>> --- > >>> > >>> arch/arm/mach-stm32/stm32h7/Kconfig | 4 +++ > >>> board/st/stm32h747-disco/Kconfig | 15 ++++++++ > >>> board/st/stm32h747-disco/MAINTAINERS | 7 ++++ > >>> board/st/stm32h747-disco/Makefile | 6 ++++ > >>> board/st/stm32h747-disco/stm32h747-disco.c | 42 > >>> ++++++++++++++++++++++ configs/stm32h747-disco_defconfig > >>> | 35 ++++++++++++++++++ drivers/clk/stm32/clk-stm32h7.c > >>> | 5 +++ include/configs/stm32h747-disco.h | 32 > >>> +++++++++++++++++ 8 files changed, 146 insertions(+) > >>> create mode 100644 board/st/stm32h747-disco/Kconfig > >>> create mode 100644 board/st/stm32h747-disco/MAINTAINERS > >>> create mode 100644 board/st/stm32h747-disco/Makefile > >>> create mode 100644 board/st/stm32h747-disco/stm32h747-disco.c > >>> create mode 100644 configs/stm32h747-disco_defconfig > >>> create mode 100644 include/configs/stm32h747-disco.h > >>> > >>> diff --git a/arch/arm/mach-stm32/stm32h7/Kconfig > >>> b/arch/arm/mach-stm32/stm32h7/Kconfig index > >>> 70233a4b23cd..72f20c477d04 100644 --- > >>> a/arch/arm/mach-stm32/stm32h7/Kconfig +++ > >>> b/arch/arm/mach-stm32/stm32h7/Kconfig @@ -6,11 +6,15 @@ config > >>> TARGET_STM32H743_DISCO config TARGET_STM32H743_EVAL > >>> bool "STM32H743 Evaluation board" > >>> > >>> +config TARGET_STM32H747_DISCO > >>> + bool "STM32H747 Discovery board" > >>> + > >>> config TARGET_STM32H750_ART_PI > >>> bool "STM32H750 ART Pi board" > >>> > >>> source "board/st/stm32h743-eval/Kconfig" > >>> source "board/st/stm32h743-disco/Kconfig" > >>> +source "board/st/stm32h747-disco/Kconfig" > >>> source "board/st/stm32h750-art-pi/Kconfig" > >>> > >>> endif > >>> diff --git a/board/st/stm32h747-disco/Kconfig > >>> b/board/st/stm32h747-disco/Kconfig new file mode 100644 > >>> index 000000000000..a7b2c09a327f > >>> --- /dev/null > >>> +++ b/board/st/stm32h747-disco/Kconfig > >>> @@ -0,0 +1,15 @@ > >>> +if TARGET_STM32H747_DISCO > >>> + > >>> +config SYS_BOARD > >>> + default "stm32h747-disco" > >>> + > >>> +config SYS_VENDOR > >>> + default "st" > >>> + > >>> +config SYS_SOC > >>> + default "stm32h7" > >>> + > >>> +config SYS_CONFIG_NAME > >>> + default "stm32h747-disco" > >>> + > >>> +endif > >>> diff --git a/board/st/stm32h747-disco/MAINTAINERS > >>> b/board/st/stm32h747-disco/MAINTAINERS new file mode 100644 > >>> index 000000000000..d48649f773f3 > >>> --- /dev/null > >>> +++ b/board/st/stm32h747-disco/MAINTAINERS > >>> @@ -0,0 +1,7 @@ > >>> +STM32H747 DISCOVERY BOARD > >>> +M: Dario Binacchi <dario.binacchi@amarulasolutions.com> > >>> +S: Maintained > >>> +F: board/st/stm32h747-disco > >>> +F: include/configs/stm32h747-disco.h > >>> +F: configs/stm32h747-disco_defconfig > >>> +F: arch/arm/dts/stm32h747* > >>> diff --git a/board/st/stm32h747-disco/Makefile > >>> b/board/st/stm32h747-disco/Makefile new file mode 100644 > >>> index 000000000000..e11f052cc88f > >>> --- /dev/null > >>> +++ b/board/st/stm32h747-disco/Makefile > >>> @@ -0,0 +1,6 @@ > >>> +# SPDX-License-Identifier: GPL-2.0+ > >>> +# > >>> +# Copyright (c) 2025 Dario Binacchi > >>> <dario.binacchi@amarulasolutions.com> +# > >>> + > >>> +obj-y := stm32h747-disco.o > >>> diff --git a/board/st/stm32h747-disco/stm32h747-disco.c > >>> b/board/st/stm32h747-disco/stm32h747-disco.c new file mode 100644 > >>> index 000000000000..be0884bdeb4d > >>> --- /dev/null > >>> +++ b/board/st/stm32h747-disco/stm32h747-disco.c > >>> @@ -0,0 +1,42 @@ > >>> +// SPDX-License-Identifier: GPL-2.0+ > >>> +/* > >>> + * stm32h747i-disco support > >>> + * > >>> + * Copyright (C) 2025 Dario Binacchi > >>> <dario.binacchi@amarulasolutions.com> > >>> + */ > >>> + > >>> +#include <dm.h> > >>> +#include <init.h> > >>> +#include <log.h> > >>> +#include <asm/global_data.h> > >>> + > >>> +DECLARE_GLOBAL_DATA_PTR; > >>> + > >>> +int dram_init(void) > >>> +{ > >>> + struct udevice *dev; > >>> + int ret; > >>> + > >>> + ret = uclass_get_device(UCLASS_RAM, 0, &dev); > >>> + if (ret) { > >>> + debug("DRAM init failed: %d\n", ret); > >>> + return ret; > >>> + } > >>> + > >>> + if (fdtdec_setup_mem_size_base() != 0) > >>> + ret = -EINVAL; > >>> + > >>> + return ret; > >>> +} > >>> + > >>> +int dram_init_banksize(void) > >>> +{ > >>> + fdtdec_setup_memory_banksize(); > >>> + > >>> + return 0; > >>> +} > >>> + > >>> +int board_init(void) > >>> +{ > >>> + return 0; > >>> +} > >>> diff --git a/configs/stm32h747-disco_defconfig > >>> b/configs/stm32h747-disco_defconfig new file mode 100644 > >>> index 000000000000..8a0c72450d1e > >>> --- /dev/null > >>> +++ b/configs/stm32h747-disco_defconfig > >>> @@ -0,0 +1,35 @@ > >>> +CONFIG_ARM=y > >>> +CONFIG_ARCH_STM32=y > >>> +CONFIG_TEXT_BASE=0x08000000 > >>> +CONFIG_SYS_MALLOC_LEN=0x100000 > >>> +CONFIG_NR_DRAM_BANKS=1 > >>> +CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y > >>> +CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x24040000 > >>> +CONFIG_ENV_SIZE=0x2000 > >>> +CONFIG_DEFAULT_DEVICE_TREE="st/stm32h747i-disco" > >>> +CONFIG_OF_LIBFDT_OVERLAY=y > >>> +CONFIG_SYS_LOAD_ADDR=0xd0400000 > >>> +CONFIG_STM32H7=y > >>> +CONFIG_TARGET_STM32H747_DISCO=y > >>> +CONFIG_DISTRO_DEFAULTS=y > > > > I'm just wondering if there is any plan to move forward to use the > > new approach? > > > > As fair as I remember this is the "deprecated" option... > > Hi Lukasz > > I was not aware of deprecation of CONFIG_DISTRO_DEFAULTS . > Can you point to me the other alternative ? > I think it is: CONFIG_BOOTSTD The bootstd command and friends (I did some research on STM32MP157C board and it can be enabled ... ). > Thanks > Patrice > > > > >>> +CONFIG_BOOTDELAY=3 > >>> +CONFIG_AUTOBOOT_KEYED=y > >>> +CONFIG_AUTOBOOT_PROMPT="Hit SPACE in %d seconds to stop > >>> autoboot.\n" +CONFIG_AUTOBOOT_STOP_STR=" " > >>> +CONFIG_DEFAULT_FDT_FILE="stm32h747i-disco" > >>> +CONFIG_SYS_CBSIZE=256 > >>> +CONFIG_SYS_PBSIZE=282 > >>> +# CONFIG_DISPLAY_CPUINFO is not set > >>> +CONFIG_SYS_PROMPT="U-Boot > " > >>> +CONFIG_CMD_GPT=y > >>> +CONFIG_CMD_MMC=y > >>> +# CONFIG_CMD_SETEXPR is not set > >>> +CONFIG_CMD_CACHE=y > >>> +CONFIG_CMD_TIMER=y > >>> +CONFIG_CMD_EXT4_WRITE=y > >>> +# CONFIG_ISO_PARTITION is not set > >>> +CONFIG_OF_CONTROL=y > >>> +CONFIG_SYS_RELOC_GD_ENV_ADDR=y > >>> +CONFIG_NO_NET=y > >>> +CONFIG_STM32_SDMMC2=y > >>> +# CONFIG_PINCTRL_FULL is not set > >>> diff --git a/drivers/clk/stm32/clk-stm32h7.c > >>> b/drivers/clk/stm32/clk-stm32h7.c index 6acf2ff0a8fb..aa3be414a29f > >>> 100644 --- a/drivers/clk/stm32/clk-stm32h7.c > >>> +++ b/drivers/clk/stm32/clk-stm32h7.c > >>> @@ -114,6 +114,7 @@ > >>> #define QSPISRC_PER_CK 3 > >>> > >>> #define PWR_CR3 0x0c > >>> +#define PWR_CR3_LDOEN BIT(1) > >>> #define PWR_CR3_SCUEN BIT(2) > >>> #define PWR_D3CR 0x18 > >>> #define PWR_D3CR_VOS_MASK GENMASK(15, 14) > >>> @@ -375,7 +376,11 @@ int configure_clocks(struct udevice *dev) > >>> clrsetbits_le32(pwr_base + PWR_D3CR, PWR_D3CR_VOS_MASK, > >>> VOS_SCALE_1 << PWR_D3CR_VOS_SHIFT); > >>> /* Lock supply configuration update */ > >>> +#if IS_ENABLED(CONFIG_TARGET_STM32H747_DISCO) > >>> + clrbits_le32(pwr_base + PWR_CR3, PWR_CR3_LDOEN); > >>> +#else > >>> clrbits_le32(pwr_base + PWR_CR3, PWR_CR3_SCUEN); > >>> +#endif > >>> while (!(readl(pwr_base + PWR_D3CR) & PWR_D3CR_VOSREADY)) > >>> ; > >>> > >>> diff --git a/include/configs/stm32h747-disco.h > >>> b/include/configs/stm32h747-disco.h new file mode 100644 > >>> index 000000000000..393445a8ae1f > >>> --- /dev/null > >>> +++ b/include/configs/stm32h747-disco.h > >>> @@ -0,0 +1,32 @@ > >>> +/* SPDX-License-Identifier: GPL-2.0+ */ > >>> +/* > >>> + * Copyright (C) 2025 Dario Binacchi > >>> <dario.binacchi@amarulasolutions.com> > >>> + */ > >>> + > >>> +#ifndef __CONFIG_H > >>> +#define __CONFIG_H > >>> + > >>> +#include <config.h> > >>> +#include <linux/sizes.h> > >>> + > >>> +/* For booting Linux, use the first 16MB of memory */ > >>> +#define CFG_SYS_BOOTMAPSZ SZ_16M > >>> + > >>> +#define CFG_SYS_FLASH_BASE 0x08000000 > >>> + > >>> +#define CFG_SYS_HZ_CLOCK 1000000 > >>> + > >>> +#define BOOT_TARGET_DEVICES(func) \ > >>> + func(MMC, mmc, 0) > >>> + > >>> +#include <config_distro_bootcmd.h> > >>> +#define CFG_EXTRA_ENV_SETTINGS \ > >>> + "kernel_addr_r=0xD0008000\0" > >>> \ > >>> + "fdtfile=stm32h747i-disco.dtb\0" \ > >>> + "fdt_addr_r=0xD0408000\0" > >>> \ > >>> + "scriptaddr=0xD0418000\0" > >>> \ > >>> + "pxefile_addr_r=0xD0428000\0" \ > >>> + "ramdisk_addr_r=0xD0438000\0" > >>> \ > >>> + BOOTENV > >>> + > >>> +#endif /* __CONFIG_H */ > >> Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com> > >> > >> Thanks > >> Patrice > > > > > > > > > > Best regards, > > > > Lukasz Majewski > > > > -- > > > > DENX Software Engineering GmbH, Managing Director: Erika Unter > > HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, > > Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: > > lukma@denx.de Best regards, Lukasz Majewski -- DENX Software Engineering GmbH, Managing Director: Erika Unter HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de To unsubscribe from this group and stop receiving emails from it, send an email to linux-amarula+unsubscribe@amarulasolutions.com.
diff --git a/arch/arm/mach-stm32/stm32h7/Kconfig b/arch/arm/mach-stm32/stm32h7/Kconfig index 70233a4b23cd..72f20c477d04 100644 --- a/arch/arm/mach-stm32/stm32h7/Kconfig +++ b/arch/arm/mach-stm32/stm32h7/Kconfig @@ -6,11 +6,15 @@ config TARGET_STM32H743_DISCO config TARGET_STM32H743_EVAL bool "STM32H743 Evaluation board" +config TARGET_STM32H747_DISCO + bool "STM32H747 Discovery board" + config TARGET_STM32H750_ART_PI bool "STM32H750 ART Pi board" source "board/st/stm32h743-eval/Kconfig" source "board/st/stm32h743-disco/Kconfig" +source "board/st/stm32h747-disco/Kconfig" source "board/st/stm32h750-art-pi/Kconfig" endif diff --git a/board/st/stm32h747-disco/Kconfig b/board/st/stm32h747-disco/Kconfig new file mode 100644 index 000000000000..a7b2c09a327f --- /dev/null +++ b/board/st/stm32h747-disco/Kconfig @@ -0,0 +1,15 @@ +if TARGET_STM32H747_DISCO + +config SYS_BOARD + default "stm32h747-disco" + +config SYS_VENDOR + default "st" + +config SYS_SOC + default "stm32h7" + +config SYS_CONFIG_NAME + default "stm32h747-disco" + +endif diff --git a/board/st/stm32h747-disco/MAINTAINERS b/board/st/stm32h747-disco/MAINTAINERS new file mode 100644 index 000000000000..d48649f773f3 --- /dev/null +++ b/board/st/stm32h747-disco/MAINTAINERS @@ -0,0 +1,7 @@ +STM32H747 DISCOVERY BOARD +M: Dario Binacchi <dario.binacchi@amarulasolutions.com> +S: Maintained +F: board/st/stm32h747-disco +F: include/configs/stm32h747-disco.h +F: configs/stm32h747-disco_defconfig +F: arch/arm/dts/stm32h747* diff --git a/board/st/stm32h747-disco/Makefile b/board/st/stm32h747-disco/Makefile new file mode 100644 index 000000000000..e11f052cc88f --- /dev/null +++ b/board/st/stm32h747-disco/Makefile @@ -0,0 +1,6 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# Copyright (c) 2025 Dario Binacchi <dario.binacchi@amarulasolutions.com> +# + +obj-y := stm32h747-disco.o diff --git a/board/st/stm32h747-disco/stm32h747-disco.c b/board/st/stm32h747-disco/stm32h747-disco.c new file mode 100644 index 000000000000..be0884bdeb4d --- /dev/null +++ b/board/st/stm32h747-disco/stm32h747-disco.c @@ -0,0 +1,42 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * stm32h747i-disco support + * + * Copyright (C) 2025 Dario Binacchi <dario.binacchi@amarulasolutions.com> + */ + +#include <dm.h> +#include <init.h> +#include <log.h> +#include <asm/global_data.h> + +DECLARE_GLOBAL_DATA_PTR; + +int dram_init(void) +{ + struct udevice *dev; + int ret; + + ret = uclass_get_device(UCLASS_RAM, 0, &dev); + if (ret) { + debug("DRAM init failed: %d\n", ret); + return ret; + } + + if (fdtdec_setup_mem_size_base() != 0) + ret = -EINVAL; + + return ret; +} + +int dram_init_banksize(void) +{ + fdtdec_setup_memory_banksize(); + + return 0; +} + +int board_init(void) +{ + return 0; +} diff --git a/configs/stm32h747-disco_defconfig b/configs/stm32h747-disco_defconfig new file mode 100644 index 000000000000..8a0c72450d1e --- /dev/null +++ b/configs/stm32h747-disco_defconfig @@ -0,0 +1,35 @@ +CONFIG_ARM=y +CONFIG_ARCH_STM32=y +CONFIG_TEXT_BASE=0x08000000 +CONFIG_SYS_MALLOC_LEN=0x100000 +CONFIG_NR_DRAM_BANKS=1 +CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y +CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x24040000 +CONFIG_ENV_SIZE=0x2000 +CONFIG_DEFAULT_DEVICE_TREE="st/stm32h747i-disco" +CONFIG_OF_LIBFDT_OVERLAY=y +CONFIG_SYS_LOAD_ADDR=0xd0400000 +CONFIG_STM32H7=y +CONFIG_TARGET_STM32H747_DISCO=y +CONFIG_DISTRO_DEFAULTS=y +CONFIG_BOOTDELAY=3 +CONFIG_AUTOBOOT_KEYED=y +CONFIG_AUTOBOOT_PROMPT="Hit SPACE in %d seconds to stop autoboot.\n" +CONFIG_AUTOBOOT_STOP_STR=" " +CONFIG_DEFAULT_FDT_FILE="stm32h747i-disco" +CONFIG_SYS_CBSIZE=256 +CONFIG_SYS_PBSIZE=282 +# CONFIG_DISPLAY_CPUINFO is not set +CONFIG_SYS_PROMPT="U-Boot > " +CONFIG_CMD_GPT=y +CONFIG_CMD_MMC=y +# CONFIG_CMD_SETEXPR is not set +CONFIG_CMD_CACHE=y +CONFIG_CMD_TIMER=y +CONFIG_CMD_EXT4_WRITE=y +# CONFIG_ISO_PARTITION is not set +CONFIG_OF_CONTROL=y +CONFIG_SYS_RELOC_GD_ENV_ADDR=y +CONFIG_NO_NET=y +CONFIG_STM32_SDMMC2=y +# CONFIG_PINCTRL_FULL is not set diff --git a/drivers/clk/stm32/clk-stm32h7.c b/drivers/clk/stm32/clk-stm32h7.c index 6acf2ff0a8fb..aa3be414a29f 100644 --- a/drivers/clk/stm32/clk-stm32h7.c +++ b/drivers/clk/stm32/clk-stm32h7.c @@ -114,6 +114,7 @@ #define QSPISRC_PER_CK 3 #define PWR_CR3 0x0c +#define PWR_CR3_LDOEN BIT(1) #define PWR_CR3_SCUEN BIT(2) #define PWR_D3CR 0x18 #define PWR_D3CR_VOS_MASK GENMASK(15, 14) @@ -375,7 +376,11 @@ int configure_clocks(struct udevice *dev) clrsetbits_le32(pwr_base + PWR_D3CR, PWR_D3CR_VOS_MASK, VOS_SCALE_1 << PWR_D3CR_VOS_SHIFT); /* Lock supply configuration update */ +#if IS_ENABLED(CONFIG_TARGET_STM32H747_DISCO) + clrbits_le32(pwr_base + PWR_CR3, PWR_CR3_LDOEN); +#else clrbits_le32(pwr_base + PWR_CR3, PWR_CR3_SCUEN); +#endif while (!(readl(pwr_base + PWR_D3CR) & PWR_D3CR_VOSREADY)) ; diff --git a/include/configs/stm32h747-disco.h b/include/configs/stm32h747-disco.h new file mode 100644 index 000000000000..393445a8ae1f --- /dev/null +++ b/include/configs/stm32h747-disco.h @@ -0,0 +1,32 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright (C) 2025 Dario Binacchi <dario.binacchi@amarulasolutions.com> + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +#include <config.h> +#include <linux/sizes.h> + +/* For booting Linux, use the first 16MB of memory */ +#define CFG_SYS_BOOTMAPSZ SZ_16M + +#define CFG_SYS_FLASH_BASE 0x08000000 + +#define CFG_SYS_HZ_CLOCK 1000000 + +#define BOOT_TARGET_DEVICES(func) \ + func(MMC, mmc, 0) + +#include <config_distro_bootcmd.h> +#define CFG_EXTRA_ENV_SETTINGS \ + "kernel_addr_r=0xD0008000\0" \ + "fdtfile=stm32h747i-disco.dtb\0" \ + "fdt_addr_r=0xD0408000\0" \ + "scriptaddr=0xD0418000\0" \ + "pxefile_addr_r=0xD0428000\0" \ + "ramdisk_addr_r=0xD0438000\0" \ + BOOTENV + +#endif /* __CONFIG_H */
The board includes an STM32H747XI SoC with the following resources: - 2 Mbytes Flash - 1 Mbyte SRAM - LCD-TFT controller - MIPI-DSI interface - FD-CAN - USB 2.0 high-speed/full-speed - Ethernet MAC - camera interface Detailed information can be found at: https://www.st.com/en/evaluation-tools/stm32h747i-disco.html Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com> --- arch/arm/mach-stm32/stm32h7/Kconfig | 4 +++ board/st/stm32h747-disco/Kconfig | 15 ++++++++ board/st/stm32h747-disco/MAINTAINERS | 7 ++++ board/st/stm32h747-disco/Makefile | 6 ++++ board/st/stm32h747-disco/stm32h747-disco.c | 42 ++++++++++++++++++++++ configs/stm32h747-disco_defconfig | 35 ++++++++++++++++++ drivers/clk/stm32/clk-stm32h7.c | 5 +++ include/configs/stm32h747-disco.h | 32 +++++++++++++++++ 8 files changed, 146 insertions(+) create mode 100644 board/st/stm32h747-disco/Kconfig create mode 100644 board/st/stm32h747-disco/MAINTAINERS create mode 100644 board/st/stm32h747-disco/Makefile create mode 100644 board/st/stm32h747-disco/stm32h747-disco.c create mode 100644 configs/stm32h747-disco_defconfig create mode 100644 include/configs/stm32h747-disco.h