mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-25 14:10:43 +00:00
stm32mp: stm32prog: handle U-Boot script in flashlayout alternate
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 <patrick.delaunay@foss.st.com> Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com> Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
This commit is contained in:
parent
7f1121a85a
commit
152576a598
3 changed files with 13 additions and 7 deletions
|
@ -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");
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -170,6 +170,8 @@ struct stm32prog_data {
|
|||
u32 initrd;
|
||||
u32 initrd_size;
|
||||
|
||||
u32 script;
|
||||
|
||||
/* OPTEE PTA NVMEM */
|
||||
struct udevice *tee;
|
||||
u32 tee_session;
|
||||
|
|
Loading…
Reference in a new issue