[PATCH] ARM: stm32: Auto-detect ROM API table on STM32MP15xx

Patrice CHOTARD patrice.chotard at foss.st.com
Wed May 21 16:40:36 CEST 2025



On 5/12/25 18:45, Marek Vasut wrote:
> The ROM API table location is passed to the SPL by BootROM in register r0,
> make use of this, store the content of r0 and later use it to access the
> ROM API table to determine current boot device.
> 
> Signed-off-by: Marek Vasut <marek.vasut at mailbox.org>
> ---
> Cc: Patrice Chotard <patrice.chotard at foss.st.com>
> Cc: Patrick Delaunay <patrick.delaunay at foss.st.com>
> Cc: Simon Glass <sjg at chromium.org>
> Cc: Sughosh Ganu <sughosh.ganu at linaro.org>
> Cc: Tom Rini <trini at konsulko.com>
> Cc: u-boot at lists.denx.de
> Cc: uboot-stm32 at st-md-mailman.stormreply.com
> ---
>  arch/arm/mach-stm32mp/stm32mp1/cpu.c        | 3 +--
>  arch/arm/mach-stm32mp/stm32mp1/stm32mp15x.c | 3 +--
>  2 files changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/arch/arm/mach-stm32mp/stm32mp1/cpu.c b/arch/arm/mach-stm32mp/stm32mp1/cpu.c
> index 18175fd12cc..9ab5a3ede52 100644
> --- a/arch/arm/mach-stm32mp/stm32mp1/cpu.c
> +++ b/arch/arm/mach-stm32mp/stm32mp1/cpu.c
> @@ -330,8 +330,7 @@ static uintptr_t nt_fw_dtb __section(".data");
>  void save_boot_params(unsigned long r0, unsigned long r1, unsigned long r2,
>  		      unsigned long r3)
>  {
> -	if (IS_ENABLED(CONFIG_STM32_ECDSA_VERIFY))
> -		rom_api_table = r0;
> +	rom_api_table = r0;
>  
>  	if (IS_ENABLED(CONFIG_TFABOOT))
>  		nt_fw_dtb = r2;
> diff --git a/arch/arm/mach-stm32mp/stm32mp1/stm32mp15x.c b/arch/arm/mach-stm32mp/stm32mp1/stm32mp15x.c
> index caeeeca863c..07d99034861 100644
> --- a/arch/arm/mach-stm32mp/stm32mp1/stm32mp15x.c
> +++ b/arch/arm/mach-stm32mp/stm32mp1/stm32mp15x.c
> @@ -64,7 +64,6 @@
>   * - boot instance = bit 31:16
>   * - boot device = bit 15:0
>   */
> -#define BOOTROM_PARAM_ADDR	0x2FFC0078
>  #define BOOTROM_MODE_MASK	GENMASK(15, 0)
>  #define BOOTROM_MODE_SHIFT	0
>  #define BOOTROM_INSTANCE_MASK	GENMASK(31, 16)
> @@ -189,7 +188,7 @@ void spl_board_init(void)
>  static void update_bootmode(void)
>  {
>  	u32 boot_mode;
> -	u32 bootrom_itf = readl(BOOTROM_PARAM_ADDR);
> +	u32 bootrom_itf = readl(get_stm32mp_rom_api_table());
>  	u32 bootrom_device, bootrom_instance;
>  
>  	/* enable TAMP clock = RTCAPBEN */

Reviewed-by: Patrice Chotard <patrice.chotard at foss.st.com>

Thanks
Patrice


More information about the U-Boot mailing list