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
					
				|  | @ -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 New Issue