[PATCH 2/4] stm32mp: stm32prog: change default flashlayout location to CONFIG_SYS_LOAD_ADDR

Patrice CHOTARD patrice.chotard at foss.st.com
Wed Sep 7 08:41:45 CEST 2022


Hi Patrick

On 9/6/22 18:53, Patrick Delaunay wrote:
> Change the defaut flashlayout location, hardcoded at STM32_DDR_BASE,
> to CONFIG_SYS_LOAD_ADDR to avoid issue on board with reserved memory
> at STM32_DDR_BASE.
> 
> This patch changes the command behavior for STM32MP13 and STM32MP15
> platform, as CONFIG_SYS_LOAD_ADDR(0xc2000000) != STM32_DDR_BASE
> but without impact for serial boot with STM32CubeProgrammer.
> 
> Signed-off-by: Patrick Delaunay <patrick.delaunay at foss.st.com>
> ---
> 
>  arch/arm/mach-stm32mp/cmd_stm32prog/cmd_stm32prog.c    | 2 +-
>  arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c        | 8 ++++----
>  arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_serial.c | 2 +-
>  arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_usb.c    | 2 +-
>  4 files changed, 7 insertions(+), 7 deletions(-)
> 
> diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/cmd_stm32prog.c b/arch/arm/mach-stm32mp/cmd_stm32prog/cmd_stm32prog.c
> index f59414e716f..cb9e20da136 100644
> --- a/arch/arm/mach-stm32mp/cmd_stm32prog/cmd_stm32prog.c
> +++ b/arch/arm/mach-stm32mp/cmd_stm32prog/cmd_stm32prog.c
> @@ -61,7 +61,7 @@ static int do_stm32prog(struct cmd_tbl *cmdtp, int flag, int argc,
>  
>  	dev = (int)dectoul(argv[2], NULL);
>  
> -	addr = STM32_DDR_BASE;
> +	addr = CONFIG_SYS_LOAD_ADDR;
>  	size = 0;
>  	if (argc > 3) {
>  		addr = hextoul(argv[3], NULL);
> diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c
> index 65e32288af7..3b2652a0e0d 100644
> --- a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c
> +++ b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c
> @@ -1388,7 +1388,7 @@ static int dfu_init_entities(struct stm32prog_data *data)
>  		char buf[ALT_BUF_LEN];
>  
>  		sprintf(buf, "@FlashLayout/0x%02x/1*256Ke ram %x 40000",
> -			PHASE_FLASHLAYOUT, STM32_DDR_BASE);
> +			PHASE_FLASHLAYOUT, CONFIG_SYS_LOAD_ADDR);
>  		ret = dfu_alt_add(dfu, "ram", NULL, buf);
>  		log_debug("dfu_alt_add(ram, NULL,%s) result %d\n", buf, ret);
>  	}
> @@ -1699,15 +1699,15 @@ static void stm32prog_end_phase(struct stm32prog_data *data, u64 offset)
>  {
>  	if (data->phase == PHASE_FLASHLAYOUT) {
>  #if defined(CONFIG_LEGACY_IMAGE_FORMAT)
> -		if (genimg_get_format((void *)STM32_DDR_BASE) == IMAGE_FORMAT_LEGACY) {
> -			data->script = STM32_DDR_BASE;
> +		if (genimg_get_format((void *)CONFIG_SYS_LOAD_ADDR) == IMAGE_FORMAT_LEGACY) {
> +			data->script = CONFIG_SYS_LOAD_ADDR;
>  			data->phase = PHASE_END;
>  			log_notice("U-Boot script received\n");
>  			return;
>  		}
>  #endif
>  		log_notice("\nFlashLayout received, size = %lld\n", offset);
> -		if (parse_flash_layout(data, STM32_DDR_BASE, offset))
> +		if (parse_flash_layout(data, CONFIG_SYS_LOAD_ADDR, offset))
>  			stm32prog_err("Layout: invalid FlashLayout");
>  		return;
>  	}
> diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_serial.c b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_serial.c
> index 2932eae7578..1bf5f5ae0ac 100644
> --- a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_serial.c
> +++ b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_serial.c
> @@ -462,7 +462,7 @@ static void get_phase_command(struct stm32prog_data *data)
>  		length = strlen(err_msg);
>  	}
>  	if (phase == PHASE_FLASHLAYOUT)
> -		destination = STM32_DDR_BASE;
> +		destination = CONFIG_SYS_LOAD_ADDR;
>  
>  	stm32prog_serial_putc(length + 5);           /* Total length */
>  	stm32prog_serial_putc(phase & 0xFF);         /* partition ID */
> diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_usb.c b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_usb.c
> index a8b57c4d8f0..bcb4d373f69 100644
> --- a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_usb.c
> +++ b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog_usb.c
> @@ -90,7 +90,7 @@ static int stm32prog_cmd_read(u64 offset, void *buf, long *len)
>  	}
>  	phase = stm32prog_data->phase;
>  	if (phase == PHASE_FLASHLAYOUT)
> -		destination = STM32_DDR_BASE;
> +		destination = CONFIG_SYS_LOAD_ADDR;
>  	dfu_offset = stm32prog_data->offset;
>  
>  	/* mandatory header, size = PHASE_MIN_SIZE */
Reviewed-by: Patrice Chotard <patrice.chotard at foss.st.com>

Thanks
Patrice


More information about the U-Boot mailing list