[Uboot-stm32] [PATCH 9/9] board: stm32: add stm32h747-discovery board support

Patrice CHOTARD patrice.chotard at foss.st.com
Mon Jun 9 11:22:02 CEST 2025



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 at 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 at 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 at 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 at 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 at 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 at 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 at denx.de
> _______________________________________________
> Uboot-stm32 mailing list
> Uboot-stm32 at st-md-mailman.stormreply.com
> https://st-md-mailman.stormreply.com/mailman/listinfo/uboot-stm32


More information about the U-Boot mailing list