Hi Patrick On 3/28/22 19:25, Patrick Delaunay wrote: > Update the stm32prog command to allow the reception of U-Boot script in > the FlashLayout alternate during the first USB enumeration. > > This patch is aligned with the last TF-A behavior: the Flashlayout > is now loaded by U-Boot; it is no more present at STM32_DDR_BASE when > the stm32prog is launched after a serial boot, on UART or on USB. > > The received script must be a U-Boot legacy image, no more need to add > a stm32image header. > > Signed-off-by: Patrick Delaunay <[email protected]> > --- > > arch/arm/mach-stm32mp/cmd_stm32prog/cmd_stm32prog.c | 9 ++------- > arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c | 9 +++++++++ > arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.h | 2 ++ > 3 files changed, 13 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 3957e06e5d..f59414e716 100644 > --- a/arch/arm/mach-stm32mp/cmd_stm32prog/cmd_stm32prog.c > +++ b/arch/arm/mach-stm32mp/cmd_stm32prog/cmd_stm32prog.c > @@ -76,13 +76,6 @@ static int do_stm32prog(struct cmd_tbl *cmdtp, int flag, > int argc, > stm32prog_header_check(addr, &header); > if (header.type == HEADER_STM32IMAGE) { > size = header.image_length + header.length; > - > -#if defined(CONFIG_LEGACY_IMAGE_FORMAT) > - /* uImage detected in STM32IMAGE, execute the script */ > - if (IMAGE_FORMAT_LEGACY == > - genimg_get_format((void *)(addr + header.length))) > - return image_source_script(addr + > header.length, "script@1"); > -#endif > } > } > > @@ -160,6 +153,8 @@ static int do_stm32prog(struct cmd_tbl *cmdtp, int flag, > int argc, > else if (CONFIG_IS_ENABLED(CMD_BOOTZ)) > do_bootz(cmdtp, 0, 4, bootm_argv); > } > + if (data->script) > + image_source_script(data->script, "script@stm32prog"); > > if (reset) { > puts("Reset...\n"); > diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c > b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c > index d3b3e1ed72..65655e25ca 100644 > --- a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c > +++ b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.c > @@ -6,6 +6,7 @@ > #include <command.h> > #include <console.h> > #include <dfu.h> > +#include <image.h> > #include <malloc.h> > #include <misc.h> > #include <mmc.h> > @@ -1697,6 +1698,14 @@ error: > 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; > + data->phase = PHASE_END; > + log_notice("U-Boot script received\n"); > + return; > + } > +#endif > if (parse_flash_layout(data, STM32_DDR_BASE, 0)) > stm32prog_err("Layout: invalid FlashLayout"); > return; > diff --git a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.h > b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.h > index b3e5c74810..ac300768ca 100644 > --- a/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.h > +++ b/arch/arm/mach-stm32mp/cmd_stm32prog/stm32prog.h > @@ -170,6 +170,8 @@ struct stm32prog_data { > u32 initrd; > u32 initrd_size; > > + u32 script; > + > /* OPTEE PTA NVMEM */ > struct udevice *tee; > u32 tee_session;
Reviewed-by: Patrice Chotard <[email protected]> Thanks Patrice

