From 8dca65d96f787b6802b75bc72f830149293cbb6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ferass=20El=C2=A0Hafidi?= Date: Wed, 8 Jan 2025 13:57:35 +0000 Subject: [PATCH 1/2] feat(gxl): add support for booting from U-Boot SPL/with standard params MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The arguments struct needs to be changed to remove a non-standard entry (`scp_image_info[]`) and also makes use of a built-in arguments parser. Since the `scp_image_info[]` entry is removed in U-Boot SPL-compatible builds, SCP_BL2 image info is hardcoded. Change-Id: Id3cc887c61c3b940c8a21d9da7f2b6845da51af8 Signed-off-by: Ferass El Hafidi --- plat/amlogic/gxl/gxl_bl31_setup.c | 24 ++++++++++++++++++++++-- plat/amlogic/gxl/platform.mk | 6 ++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/plat/amlogic/gxl/gxl_bl31_setup.c b/plat/amlogic/gxl/gxl_bl31_setup.c index f581dd134..46c2dc284 100644 --- a/plat/amlogic/gxl/gxl_bl31_setup.c +++ b/plat/amlogic/gxl/gxl_bl31_setup.c @@ -1,11 +1,13 @@ /* - * Copyright (c) 2018-2019, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2018-2025, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ - #include #include +#ifdef AML_STDPARAMS +#include +#endif #include #include #include @@ -60,17 +62,26 @@ struct gxl_bl31_param { image_info_t *bl32_image_info; entry_point_info_t *bl33_ep_info; image_info_t *bl33_image_info; +#ifndef AML_STDPARAMS image_info_t *scp_image_info[]; +#endif }; void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1, u_register_t arg2, u_register_t arg3) { +#ifndef AML_STDPARAMS struct gxl_bl31_param *from_bl2; +#endif /* Initialize the console to provide early debug support */ aml_console_init(); +#ifdef AML_STDPARAMS + /* Parse arguments passed to BL31 from U-Boot SPL */ + bl31_params_parse_helper(arg0, &bl33_image_ep_info, + &bl33_image_ep_info); +#else /* Check that params passed from BL2 are not NULL. */ from_bl2 = (struct gxl_bl31_param *) arg0; @@ -84,14 +95,23 @@ void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1, * BL2's address space. */ bl33_image_ep_info = *from_bl2->bl33_ep_info; +#endif if (bl33_image_ep_info.pc == 0U) { ERROR("BL31: BL33 entrypoint not obtained from BL2\n"); panic(); } +#ifdef AML_STDPARAMS + /* Hardcode SCP_BL2 image info */ + bl30_image_info.image_base = 0x13c0000; + bl30_image_info.image_size = 0xa000; + bl301_image_info.image_base = 0x13ca000; + bl301_image_info.image_size = 0x3400; +#else bl30_image_info = *from_bl2->scp_image_info[0]; bl301_image_info = *from_bl2->scp_image_info[1]; +#endif } void bl31_plat_arch_setup(void) diff --git a/plat/amlogic/gxl/platform.mk b/plat/amlogic/gxl/platform.mk index 31063a97a..8aaa0327c 100644 --- a/plat/amlogic/gxl/platform.mk +++ b/plat/amlogic/gxl/platform.mk @@ -40,6 +40,12 @@ BL31_SOURCES += lib/cpus/aarch64/cortex_a53.S \ ${XLAT_TABLES_LIB_SRCS} \ ${GIC_SOURCES} +ifeq (${AML_STDPARAMS}, 1) + BL31_SOURCES += common/desc_image_load.c + $(eval $(call add_define_val,AML_STDPARAMS,'$(AML_STDPARAMS)')) + $(info "Building with standard params") +endif + # Tune compiler for Cortex-A53 ifeq ($($(ARCH)-cc-id),arm-clang) TF_CFLAGS_aarch64 += -mcpu=cortex-a53 From 043eca9e9cb6ccdcbe60c270c2f2eb962affd6eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ferass=20El=C2=A0Hafidi?= Date: Wed, 8 Jan 2025 14:03:02 +0000 Subject: [PATCH 2/2] docs(gxl): add build instructions for booting BL31 from U-Boot SPL MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Ided750decea924ff8d78d2d345d34bc40b05f0cb Signed-off-by: Ferass El Hafidi --- docs/plat/meson-gxl.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/plat/meson-gxl.rst b/docs/plat/meson-gxl.rst index 0751f1d00..df6450524 100644 --- a/docs/plat/meson-gxl.rst +++ b/docs/plat/meson-gxl.rst @@ -19,6 +19,12 @@ In order to build it: CROSS_COMPILE=aarch64-linux-gnu- make DEBUG=1 PLAT=gxl +Or, if willing to boot from U-Boot SPL (using standard params handling): + +.. code:: shell + + CROSS_COMPILE=aarch64-linux-gnu- make DEBUG=1 PLAT=gxl AML_STDPARAMS=1 + This port has been tested on a Lepotato. After building it, follow the instructions in the `gxlimg repository`_ or `U-Boot repository`_, replacing the mentioned **bl31.img** by the one built from this port.