From: Patrick Delaunay Date: Fri, 2 Aug 2019 13:07:20 +0000 (+0200) Subject: stm32mp1: Add copro image support for M4 firmware X-Git-Tag: v2019.10-rc4~31^2~2 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=a68ae8dceb1e82ffdfdbfb1d2c23603124c8e70a;p=oweals%2Fu-boot.git stm32mp1: Add copro image support for M4 firmware Implements copro image loading with FIT. Once image is loaded with remoteproc, the M4 coprocessor is automatically started. Signed-off-by: Loic Pallardy Signed-off-by: Patrick Delaunay --- diff --git a/board/st/stm32mp1/stm32mp1.c b/board/st/stm32mp1/stm32mp1.c index 95e6078174..fc14ad375c 100644 --- a/board/st/stm32mp1/stm32mp1.c +++ b/board/st/stm32mp1/stm32mp1.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -891,3 +892,26 @@ int ft_board_setup(void *blob, bd_t *bd) return 0; } #endif + +static void board_copro_image_process(ulong fw_image, size_t fw_size) +{ + int ret, id = 0; /* Copro id fixed to 0 as only one coproc on mp1 */ + + if (!rproc_is_initialized()) + if (rproc_init()) { + printf("Remote Processor %d initialization failed\n", + id); + return; + } + + ret = rproc_load(id, fw_image, fw_size); + printf("Load Remote Processor %d with data@addr=0x%08lx %u bytes:%s\n", + id, fw_image, fw_size, ret ? " Failed!" : " Success!"); + + if (!ret) { + rproc_start(id); + env_set("copro_state", "booted"); + } +} + +U_BOOT_FIT_LOADABLE_HANDLER(IH_TYPE_COPRO, board_copro_image_process);