ccimx93: support building bootloader for soc revision A0

Starting with NXP release "lf-6.1.55-2.2.0" the IMX optee fork (based on
version 4.0.0) does not support SOC revision A0. This commit recovers
support to build a bootloader for A0, extending the optee patch for
ccimx93 to support A0 with a build time option, and then extending the
optee-os and imx-boot recipes to build two optee binaries and using them
to generate bootloaders for both SOC revisions.

Signed-off-by: Javier Viguera <javier.viguera@digi.com>
This commit is contained in:
Javier Viguera 2024-01-02 17:10:49 +01:00
parent e4d089a6ab
commit 161c66f5f6
3 changed files with 42 additions and 8 deletions

View File

@ -38,6 +38,8 @@ compile_mx93:append:ccimx93() {
ATF_MACHINE_NAME_A0="$(echo ${ATF_MACHINE_NAME} | sed -e 's,.bin,-A0.bin,g')"
bbnote "Copy ATF binary for SOC revision A0: ${ATF_MACHINE_NAME_A0}"
\cp --remove-destination ${DEPLOY_DIR_IMAGE}/${ATF_MACHINE_NAME_A0} ${BOOT_STAGING}/bl31.bin
# Filename must match the deployed one in "optee-os" recipe for A0 SOC revision
\cp --remove-destination ${DEPLOY_DIR_IMAGE}/tee.ccimx93dvk_a0.bin ${BOOT_STAGING}/tee.bin
unset ATF_MACHINE_NAME_A0
fi
}
@ -107,6 +109,11 @@ do_deploy:append:ccimx93() {
ln -sf ${BOOT_NAME}-${MACHINE}.bin-${target} ${DEPLOYDIR}/${BOOT_NAME}-${MACHINE}-A0.bin
fi
done
# Deploy A0 optee binary
if ${DEPLOY_OPTEE}; then
# Filename must match the deployed one in "optee-os" recipe for A0 SOC revision
install -m 0644 ${DEPLOY_DIR_IMAGE}/tee.ccimx93dvk_a0.bin ${DEPLOYDIR}/${BOOT_TOOLS}
fi
}
do_deploy:ccimx8x () {

View File

@ -2,25 +2,28 @@ From: Javier Viguera <javier.viguera@digi.com>
Date: Mon, 15 May 2023 17:59:54 +0200
Subject: [PATCH] core: imx: support ccimx93-dvk
SOC revision A0 requires a different build.
Signed-off-by: Javier Viguera <javier.viguera@digi.com>
---
core/arch/arm/plat-imx/conf.mk | 6 ++++++
core/arch/arm/plat-imx/registers/imx93.h | 1 +
2 files changed, 7 insertions(+)
core/arch/arm/plat-imx/conf.mk | 13 +++++++++++++
core/arch/arm/plat-imx/registers/imx93.h | 5 +++++
2 files changed, 18 insertions(+)
diff --git a/core/arch/arm/plat-imx/conf.mk b/core/arch/arm/plat-imx/conf.mk
index 0bd9ccd6bef1..4fa61d5c2619 100644
index 0bd9ccd6bef1..5e4c02e27d2e 100644
--- a/core/arch/arm/plat-imx/conf.mk
+++ b/core/arch/arm/plat-imx/conf.mk
@@ -88,6 +88,7 @@ mx8ulp-flavorlist = \
@@ -88,6 +88,8 @@ mx8ulp-flavorlist = \
mx8ulpevk \
mx93-flavorlist = \
+ ccimx93dvk \
+ ccimx93dvk_a0 \
mx93evk \
ifneq (,$(filter $(PLATFORM_FLAVOR),$(mx6ul-flavorlist)))
@@ -451,6 +452,11 @@ CFG_DDR_SIZE ?= 0x80000000
@@ -451,6 +453,17 @@ CFG_DDR_SIZE ?= 0x80000000
CFG_UART_BASE ?= UART1_BASE
endif
@ -28,15 +31,21 @@ index 0bd9ccd6bef1..4fa61d5c2619 100644
+CFG_DDR_SIZE ?= 0x40000000
+CFG_UART_BASE ?= UART6_BASE
+endif
+
+ifneq (,$(filter $(PLATFORM_FLAVOR),ccimx93dvk_a0))
+CFG_DDR_SIZE ?= 0x40000000
+CFG_UART_BASE ?= UART6_BASE
+$(call force,CFG_SOC_REV_A0,y)
+endif
+
# i.MX6 Solo/SL/SoloX/DualLite/Dual/Quad specific config
ifeq ($(filter y, $(CFG_MX6QP) $(CFG_MX6Q) $(CFG_MX6D) $(CFG_MX6DL) $(CFG_MX6S) \
$(CFG_MX6SL) $(CFG_MX6SLL) $(CFG_MX6SX)), y)
diff --git a/core/arch/arm/plat-imx/registers/imx93.h b/core/arch/arm/plat-imx/registers/imx93.h
index 21080da82d04..17f4d8f5755e 100644
index 21080da82d04..29070eb917ac 100644
--- a/core/arch/arm/plat-imx/registers/imx93.h
+++ b/core/arch/arm/plat-imx/registers/imx93.h
@@ -9,6 +9,7 @@
@@ -9,11 +9,16 @@
#define GICR_BASE 0x48040000
#define UART1_BASE 0x44380000
@ -44,3 +53,12 @@ index 21080da82d04..17f4d8f5755e 100644
/*
* For Normal MU - Use MU_BASE as 0x47520000
* For Trust MU - Use MU_BASE as 0x47530000
*/
+#ifdef CFG_SOC_REV_A0
+#define MU_BASE 0x47520000
+#else
#define MU_BASE 0x47530000
+#endif
#define MU_SIZE 0x10000
#define MU_TRUST_BASE 0x47530000

View File

@ -16,4 +16,13 @@ SRCREV = "a303fc80f7c4bd713315687a1fa1d6ed136e78ee"
PLATFORM_FLAVOR:ccimx93 = "ccimx93dvk"
do_compile:append:ccimx93 () {
oe_runmake PLATFORM=imx-${PLATFORM_FLAVOR}_a0 O=${B}-A0 all
}
do_compile[cleandirs] += "${B}-A0"
do_deploy:append:ccimx93 () {
cp ${B}-A0/core/tee-raw.bin ${DEPLOYDIR}/tee.${PLATFORM_FLAVOR}_a0.bin
}
COMPATIBLE_MACHINE = "(ccimx93)"