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.binac...@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.binac...@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.binac...@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.binac...@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.binac...@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.chot...@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: lu...@denx.de

Reply via email to