From: Ahmad Fatoum <a.fatoum@pengutronix.de>
To: distrokit@pengutronix.de
Cc: Ahmad Fatoum <a.fatoum@pengutronix.de>
Subject: [DistroKit] [PATCH 02/12] tf-a: update from v2.8 → v2.10
Date: Fri, 15 Mar 2024 22:12:30 +0100 [thread overview]
Message-ID: <20240315211240.3016716-3-a.fatoum@pengutronix.de> (raw)
In-Reply-To: <20240315211240.3016716-1-a.fatoum@pengutronix.de>
This lets us git rid of a fair number of patches we have, but in return
requires us to import three patches:
- Fix link error for imx8mq-evk: The image got too big with addition
of DRAM retention support, so this is now disabled by default:
https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/27277
- Support for automatic console base detection on i.MX8MQ. This was
already in our patch stack, but wasn't submitted upstream, unlike
the support for i.MX8MM, i.MX8MN and i.MXP. This has been rectified:
https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/27278
- STM32MP1 support with SP_min as BL31 instead of OP-TEE is broken
since v2.10 was first released. This is due to PMU changes that
were apparently only tested on ARMv8. Fixed here:
https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/27162
Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
---
configs/platform-v7a/platformconfig | 4 +-
configs/platform-v8a/platformconfig | 4 +-
...DRAM-retention-by-default-on-i.MX8MQ.patch | 182 +++++++++++
...kage-on-ARMv7-CPUs-with-SP_min-as-BL.patch | 61 ++++
...ct-console-base-address-during-runti.patch | 69 ++++
...mx-disable-DRAM-retention-by-default.patch | 174 ++++++++++
...ct-console-base-address-during-runti.patch | 72 +++++
...kage-on-ARMv7-CPUs-with-SP_min-as-BL.patch | 57 ++++
...tomers-pengutronix-distrokit-2024031.patch | 21 ++
patches/tf-a-v2.10/series | 19 ++
...-add-helper-to-detect-linker-options.patch | 35 --
...dd-support-for-new-binutils-versions.patch | 54 ----
...-IMX_BOOT_UART_BASE-configurable-via.patch | 41 ---
...remove-empty-bl31_plat_runtime_setup.patch | 30 --
...03-feat-imx8mq-always-set-up-console.patch | 51 ---
...imx8mq-make-use-of-setup_page_tables.patch | 53 ---
...-refactor-imx8mq-introduce-BL31_SIZE.patch | 54 ----
...106-feat-imx8mq-add-BL31-PIE-support.patch | 55 ----
...feat-imx8mq-add-support-for-gcc-12.x.patch | 45 ---
...t-console-base-address-during-runtim.patch | 304 ------------------
...MX_BOOT_UART_BASE-autodetection-opti.patch | 172 ----------
...omers-pengutronix-distrokit-20240117.patch | 21 --
patches/tf-a-v2.8/series | 27 --
23 files changed, 659 insertions(+), 946 deletions(-)
create mode 100644 patches/tf-a-v2.10/0001-fix-imx-disable-DRAM-retention-by-default-on-i.MX8MQ.patch
create mode 100644 patches/tf-a-v2.10/0001-fix-pmu-fix-breakage-on-ARMv7-CPUs-with-SP_min-as-BL.patch
create mode 100644 patches/tf-a-v2.10/0002-feat-imx8mq-detect-console-base-address-during-runti.patch
create mode 100644 patches/tf-a-v2.10/0003-imx-disable-DRAM-retention-by-default.patch
create mode 100644 patches/tf-a-v2.10/0101-feat-imx8mq-detect-console-base-address-during-runti.patch
create mode 100644 patches/tf-a-v2.10/0201-fix-pmu-fix-breakage-on-ARMv7-CPUs-with-SP_min-as-BL.patch
create mode 100644 patches/tf-a-v2.10/0301-Release-2.10-customers-pengutronix-distrokit-2024031.patch
create mode 100644 patches/tf-a-v2.10/series
delete mode 100644 patches/tf-a-v2.8/0001-build-makefile-add-helper-to-detect-linker-options.patch
delete mode 100644 patches/tf-a-v2.8/0002-feat-build-add-support-for-new-binutils-versions.patch
delete mode 100644 patches/tf-a-v2.8/0101-feat-imx8mq-make-IMX_BOOT_UART_BASE-configurable-via.patch
delete mode 100644 patches/tf-a-v2.8/0102-feat-imx8mq-remove-empty-bl31_plat_runtime_setup.patch
delete mode 100644 patches/tf-a-v2.8/0103-feat-imx8mq-always-set-up-console.patch
delete mode 100644 patches/tf-a-v2.8/0104-refactor-imx8mq-make-use-of-setup_page_tables.patch
delete mode 100644 patches/tf-a-v2.8/0105-refactor-imx8mq-introduce-BL31_SIZE.patch
delete mode 100644 patches/tf-a-v2.8/0106-feat-imx8mq-add-BL31-PIE-support.patch
delete mode 100644 patches/tf-a-v2.8/0107-feat-imx8mq-add-support-for-gcc-12.x.patch
delete mode 100644 patches/tf-a-v2.8/0201-feat-imx8m-detect-console-base-address-during-runtim.patch
delete mode 100644 patches/tf-a-v2.8/0202-fix-imx8m-make-IMX_BOOT_UART_BASE-autodetection-opti.patch
delete mode 100644 patches/tf-a-v2.8/0301-Release-2.8-customers-pengutronix-distrokit-20240117.patch
delete mode 100644 patches/tf-a-v2.8/series
diff --git a/configs/platform-v7a/platformconfig b/configs/platform-v7a/platformconfig
index f2b4d2b7a922..80632f625c9b 100644
--- a/configs/platform-v7a/platformconfig
+++ b/configs/platform-v7a/platformconfig
@@ -202,8 +202,8 @@ PTXCONF_BOOTLOADER=y
# PTXCONF_OPTEE is not set
PTXCONF_TF_A=y
PTXCONF_TF_A_URL="https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/snapshot"
-PTXCONF_TF_A_VERSION="v2.8"
-PTXCONF_TF_A_MD5="784a1e94d4b1e938927372e3bc12d12e"
+PTXCONF_TF_A_VERSION="v2.10"
+PTXCONF_TF_A_MD5="641f42080967e05d687ef2fa9f8f3bc3"
PTXCONF_TF_A_ARCH_STRING="aarch32"
PTXCONF_TF_A_ARM_ARCH_MAJOR_7=y
# PTXCONF_TF_A_ARM_ARCH_MAJOR_8_32_BIT is not set
diff --git a/configs/platform-v8a/platformconfig b/configs/platform-v8a/platformconfig
index f9168a8bc599..675874fc4a3c 100644
--- a/configs/platform-v8a/platformconfig
+++ b/configs/platform-v8a/platformconfig
@@ -206,8 +206,8 @@ PTXCONF_BOOTLOADER=y
# PTXCONF_HOST_MXS_UTILS is not set
PTXCONF_TF_A=y
PTXCONF_TF_A_URL="https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/snapshot"
-PTXCONF_TF_A_VERSION="v2.8"
-PTXCONF_TF_A_MD5="784a1e94d4b1e938927372e3bc12d12e"
+PTXCONF_TF_A_VERSION="v2.10"
+PTXCONF_TF_A_MD5="641f42080967e05d687ef2fa9f8f3bc3"
PTXCONF_TF_A_ARCH_STRING="aarch64"
PTXCONF_TF_A_ARM_ARCH_MAJOR_8=y
PTXCONF_TF_A_ARM_ARCH_MAJOR=8
diff --git a/patches/tf-a-v2.10/0001-fix-imx-disable-DRAM-retention-by-default-on-i.MX8MQ.patch b/patches/tf-a-v2.10/0001-fix-imx-disable-DRAM-retention-by-default-on-i.MX8MQ.patch
new file mode 100644
index 000000000000..cab995bda37a
--- /dev/null
+++ b/patches/tf-a-v2.10/0001-fix-imx-disable-DRAM-retention-by-default-on-i.MX8MQ.patch
@@ -0,0 +1,182 @@
+From: Ahmad Fatoum <a.fatoum@pengutronix.de>
+Date: Wed, 13 Mar 2024 08:08:13 +0100
+Subject: [PATCH] fix(imx): disable DRAM retention by default on i.MX8MQ
+
+Building the default upstream configuration for the imx8mq-evk is no longer
+possible: The linker will complain that the TF-A image would no longer
+fit On-Chip SRAM.
+
+In order to make the i.MX8MQ Image buildable again, let's make the DRAM
+retention feature optional: It was added in v2.9 and it's possible to
+boot the systems without it. Users that make space elsewhere and wish to
+enable it can use the newly introduced IMX_DRAM_RETENTION parameter to
+configure it. The parameter is added to all i.MX8M variants, but only
+for i.MX8MQ, we disable it by default, as that's the one that currently
+has binary size problems.
+
+Change-Id: I714f8ea96f18154db02390ba500f4a2dc5329ee7
+Fixes: dd108c3c1fe3 ("feat(imx8mq): add the dram retention support for imx8mq")
+Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
+---
+ plat/imx/common/include/imx_sip_svc.h | 8 ++++++++
+ plat/imx/imx8m/imx8mm/platform.mk | 9 ++++++++-
+ plat/imx/imx8m/imx8mn/platform.mk | 9 ++++++++-
+ plat/imx/imx8m/imx8mp/platform.mk | 9 ++++++++-
+ plat/imx/imx8m/imx8mq/platform.mk | 9 ++++++++-
+ plat/imx/imx8m/include/dram.h | 8 +++++++-
+ 6 files changed, 47 insertions(+), 5 deletions(-)
+
+diff --git a/plat/imx/common/include/imx_sip_svc.h b/plat/imx/common/include/imx_sip_svc.h
+index 0e91c7174a52..5015eb6a1f11 100644
+--- a/plat/imx/common/include/imx_sip_svc.h
++++ b/plat/imx/common/include/imx_sip_svc.h
+@@ -57,8 +57,16 @@ int imx_soc_info_handler(uint32_t smc_fid, u_register_t x1,
+ u_register_t x2, u_register_t x3);
+ int imx_gpc_handler(uint32_t smc_fid, u_register_t x1,
+ u_register_t x2, u_register_t x3);
++#if IMX_DRAM_RETENTION
+ int dram_dvfs_handler(uint32_t smc_fid, void *handle,
+ u_register_t x1, u_register_t x2, u_register_t x3);
++#else
++static inline int dram_dvfs_handler(uint32_t smc_fid, void *handle,
++ u_register_t x1, u_register_t x2, u_register_t x3)
++{
++ SMC_RET1(handle, SMC_UNK);
++}
++#endif
+ #endif
+ #if defined(PLAT_imx8mm) || defined(PLAT_imx8mn) || defined(PLAT_imx8mp)
+ int dram_dvfs_handler(uint32_t smc_fid, void *handle,
+diff --git a/plat/imx/imx8m/imx8mm/platform.mk b/plat/imx/imx8m/imx8mm/platform.mk
+index 97f4f248824d..849ae5e4ca36 100644
+--- a/plat/imx/imx8m/imx8mm/platform.mk
++++ b/plat/imx/imx8m/imx8mm/platform.mk
+@@ -52,7 +52,6 @@ BL31_SOURCES += plat/imx/common/imx8_helpers.S \
+ drivers/delay_timer/delay_timer.c \
+ drivers/delay_timer/generic_delay_timer.c \
+ ${XLAT_TABLES_LIB_SRCS} \
+- ${IMX_DRAM_SOURCES} \
+ ${IMX_GIC_SOURCES}
+
+ ifeq (${NEED_BL2},yes)
+@@ -153,6 +152,14 @@ ERRATA_A53_835769 := 1
+ ERRATA_A53_843419 := 1
+ ERRATA_A53_855873 := 1
+
++IMX_DRAM_RETENTION ?= 1
++$(eval $(call assert_boolean,IMX_DRAM_RETENTION))
++$(eval $(call add_define,IMX_DRAM_RETENTION))
++
++ifeq (${IMX_DRAM_RETENTION},1)
++BL31_SOURCES += ${IMX_DRAM_SOURCES}
++endif
++
+ BL32_BASE ?= 0xbe000000
+ $(eval $(call add_define,BL32_BASE))
+
+diff --git a/plat/imx/imx8m/imx8mn/platform.mk b/plat/imx/imx8m/imx8mn/platform.mk
+index e0826e29a88c..94d31a2681aa 100644
+--- a/plat/imx/imx8m/imx8mn/platform.mk
++++ b/plat/imx/imx8m/imx8mn/platform.mk
+@@ -46,7 +46,6 @@ BL31_SOURCES += plat/imx/common/imx8_helpers.S \
+ drivers/arm/tzc/tzc380.c \
+ drivers/delay_timer/delay_timer.c \
+ drivers/delay_timer/generic_delay_timer.c \
+- ${IMX_DRAM_SOURCES} \
+ ${IMX_GIC_SOURCES} \
+ ${XLAT_TABLES_LIB_SRCS}
+
+@@ -59,6 +58,14 @@ ERRATA_A53_835769 := 1
+ ERRATA_A53_843419 := 1
+ ERRATA_A53_855873 := 1
+
++IMX_DRAM_RETENTION ?= 1
++$(eval $(call assert_boolean,IMX_DRAM_RETENTION))
++$(eval $(call add_define,IMX_DRAM_RETENTION))
++
++ifeq (${IMX_DRAM_RETENTION},1)
++BL31_SOURCES += ${IMX_DRAM_SOURCES}
++endif
++
+ BL32_BASE ?= 0xbe000000
+ $(eval $(call add_define,BL32_BASE))
+
+diff --git a/plat/imx/imx8m/imx8mp/platform.mk b/plat/imx/imx8m/imx8mp/platform.mk
+index ce6907195152..1f699c4f26f0 100644
+--- a/plat/imx/imx8m/imx8mp/platform.mk
++++ b/plat/imx/imx8m/imx8mp/platform.mk
+@@ -47,7 +47,6 @@ BL31_SOURCES += plat/imx/common/imx8_helpers.S \
+ drivers/arm/tzc/tzc380.c \
+ drivers/delay_timer/delay_timer.c \
+ drivers/delay_timer/generic_delay_timer.c \
+- ${IMX_DRAM_SOURCES} \
+ ${IMX_GIC_SOURCES} \
+ ${XLAT_TABLES_LIB_SRCS}
+
+@@ -150,6 +149,14 @@ ERRATA_A53_835769 := 1
+ ERRATA_A53_843419 := 1
+ ERRATA_A53_855873 := 1
+
++IMX_DRAM_RETENTION ?= 1
++$(eval $(call assert_boolean,IMX_DRAM_RETENTION))
++$(eval $(call add_define,IMX_DRAM_RETENTION))
++
++ifeq (${IMX_DRAM_RETENTION},1)
++BL31_SOURCES += ${IMX_DRAM_SOURCES}
++endif
++
+ BL32_BASE ?= 0x56000000
+ $(eval $(call add_define,BL32_BASE))
+
+diff --git a/plat/imx/imx8m/imx8mq/platform.mk b/plat/imx/imx8m/imx8mq/platform.mk
+index b1c189fa09f5..b48449725791 100644
+--- a/plat/imx/imx8m/imx8mq/platform.mk
++++ b/plat/imx/imx8m/imx8mq/platform.mk
+@@ -42,7 +42,6 @@ BL31_SOURCES += plat/imx/common/imx8_helpers.S \
+ drivers/delay_timer/delay_timer.c \
+ drivers/delay_timer/generic_delay_timer.c \
+ ${XLAT_TABLES_LIB_SRCS} \
+- ${IMX_DRAM_SOURCES} \
+ ${IMX_GIC_SOURCES}
+
+ ENABLE_PIE := 1
+@@ -55,6 +54,14 @@ ERRATA_A53_835769 := 1
+ ERRATA_A53_843419 := 1
+ ERRATA_A53_855873 := 1
+
++IMX_DRAM_RETENTION ?= 0
++$(eval $(call assert_boolean,IMX_DRAM_RETENTION))
++$(eval $(call add_define,IMX_DRAM_RETENTION))
++
++ifeq (${IMX_DRAM_RETENTION},1)
++BL31_SOURCES += ${IMX_DRAM_SOURCES}
++endif
++
+ BL32_BASE ?= 0xfe000000
+ $(eval $(call add_define,BL32_BASE))
+
+diff --git a/plat/imx/imx8m/include/dram.h b/plat/imx/imx8m/include/dram.h
+index 719c39063778..1cf0666e9cad 100644
+--- a/plat/imx/imx8m/include/dram.h
++++ b/plat/imx/imx8m/include/dram.h
+@@ -70,13 +70,19 @@ struct dram_info {
+
+ extern struct dram_info dram_info;
+
+-void dram_info_init(unsigned long dram_timing_base);
+ void dram_umctl2_init(struct dram_timing_info *timing);
+ void dram_phy_init(struct dram_timing_info *timing);
+
+ /* dram retention */
++#if IMX_DRAM_RETENTION
++void dram_info_init(unsigned long dram_timing_base);
+ void dram_enter_retention(void);
+ void dram_exit_retention(void);
++#else
++static inline void dram_info_init(unsigned long dram_timing_base) {}
++static inline void dram_enter_retention(void) {}
++static inline void dram_exit_retention(void) {}
++#endif
+
+ void dram_clock_switch(unsigned int target_drate, bool bypass_mode);
+
diff --git a/patches/tf-a-v2.10/0001-fix-pmu-fix-breakage-on-ARMv7-CPUs-with-SP_min-as-BL.patch b/patches/tf-a-v2.10/0001-fix-pmu-fix-breakage-on-ARMv7-CPUs-with-SP_min-as-BL.patch
new file mode 100644
index 000000000000..745e171b40e3
--- /dev/null
+++ b/patches/tf-a-v2.10/0001-fix-pmu-fix-breakage-on-ARMv7-CPUs-with-SP_min-as-BL.patch
@@ -0,0 +1,61 @@
+From 44f35b67ee4f89b05408ecfe7b4b2c1ae5366b72 Mon Sep 17 00:00:00 2001
+From: Ahmad Fatoum <a.fatoum@pengutronix.de>
+Date: Tue, 12 Mar 2024 18:36:46 +0100
+Subject: [PATCH 1/3] fix(pmu): fix breakage on ARMv7 CPUs with SP_min as BL32
+
+While comments introduced with the original commit claim that
+pmuv3_disable_el3()/pmuv3_init_el3() are compatible with PMUv2 and
+PMUv1, this is not true in practice: The function accesses the Secure
+Debug Control Register (SDCR), which only available to ARMv8 CPUs.
+
+ARMv8 CPUs executing in AArch32 mode would thus be able to disable
+their PMUv3, while ARMv7 CPUs would hang trying to access the SDCR.
+
+Fix this by only doing PMUv3 handling when we know a PMUv3 to be
+available. This resolves boot hanging on all STM32MP15 platforms
+that use SP_min as BL32 instead of OP-TEE.
+
+Change-Id: I40f7611cf46b89a30243cc55bf55a8d9c9de93c8
+Fixes: c73686a11cea ("feat(pmu): introduce pmuv3 lib/extensions folder")
+Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
+---
+ lib/el3_runtime/aarch32/context_mgmt.c | 7 ++-----
+ lib/extensions/pmuv3/aarch32/pmuv3.c | 4 ----
+ 2 files changed, 2 insertions(+), 9 deletions(-)
+
+diff --git a/lib/el3_runtime/aarch32/context_mgmt.c b/lib/el3_runtime/aarch32/context_mgmt.c
+index b60b8e0f05d0..72af43d3dcb0 100644
+--- a/lib/el3_runtime/aarch32/context_mgmt.c
++++ b/lib/el3_runtime/aarch32/context_mgmt.c
+@@ -149,11 +149,8 @@ static void enable_extensions_nonsecure(bool el2_unused)
+ trf_init_el3();
+ }
+
+- /*
+- * Also applies to PMU < v3. The PMU is only disabled for EL3 and Secure
+- * state execution. This does not affect lower NS ELs.
+- */
+- pmuv3_init_el3();
++ if (read_feat_pmuv3_id_field() >= 3)
++ pmuv3_init_el3();
+ #endif /* IMAGE_BL32 */
+ }
+
+diff --git a/lib/extensions/pmuv3/aarch32/pmuv3.c b/lib/extensions/pmuv3/aarch32/pmuv3.c
+index effb7e02dc29..456a48efb0fb 100644
+--- a/lib/extensions/pmuv3/aarch32/pmuv3.c
++++ b/lib/extensions/pmuv3/aarch32/pmuv3.c
+@@ -25,10 +25,6 @@ static u_register_t mtpmu_disable_el3(u_register_t sdcr)
+ return sdcr;
+ }
+
+-/*
+- * Applies to all PMU versions. Name is PMUv3 for compatibility with aarch64 and
+- * to not clash with platforms which reuse the PMU name
+- */
+ void pmuv3_init_el3(void)
+ {
+ u_register_t sdcr = read_sdcr();
+--
+2.39.2
+
diff --git a/patches/tf-a-v2.10/0002-feat-imx8mq-detect-console-base-address-during-runti.patch b/patches/tf-a-v2.10/0002-feat-imx8mq-detect-console-base-address-during-runti.patch
new file mode 100644
index 000000000000..c48833730753
--- /dev/null
+++ b/patches/tf-a-v2.10/0002-feat-imx8mq-detect-console-base-address-during-runti.patch
@@ -0,0 +1,69 @@
+From aeb68be64c5c47142de3c95a8961749f7b33030a Mon Sep 17 00:00:00 2001
+From: Ahmad Fatoum <a.fatoum@pengutronix.de>
+Date: Wed, 13 Mar 2024 02:08:54 +0100
+Subject: [PATCH 2/3] feat(imx8mq): detect console base address during runtime
+
+Change-Id: I9ba70f7068e762da979bd103390fa006c3a5d480
+---
+ plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c | 8 +++++++-
+ plat/imx/imx8m/imx8mq/platform.mk | 4 ++++
+ 2 files changed, 11 insertions(+), 1 deletion(-)
+
+diff --git a/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c b/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c
+index 7065a658614f..70c2def7d18b 100644
+--- a/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c
++++ b/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c
+@@ -26,6 +26,7 @@
+ #include <imx_aipstz.h>
+ #include <imx_uart.h>
+ #include <imx8m_caam.h>
++#include <imx8m_ccm.h>
+ #include <plat_imx8.h>
+
+ #define TRUSTY_PARAMS_LEN_BYTES (4096*2)
+@@ -145,6 +146,7 @@ static void bl31_tz380_setup(void)
+ void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
+ u_register_t arg2, u_register_t arg3)
+ {
++ unsigned int console_base = IMX_BOOT_UART_BASE;
+ static console_t console;
+ int i;
+ /* enable CSU NS access permission */
+@@ -154,7 +156,11 @@ void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
+
+ imx_aipstz_init(aipstz);
+
+- console_imx_uart_register(IMX_BOOT_UART_BASE, IMX_BOOT_UART_CLK_IN_HZ,
++ if (console_base == 0U) {
++ console_base = imx8m_uart_get_base();
++ }
++
++ console_imx_uart_register(console_base, IMX_BOOT_UART_CLK_IN_HZ,
+ IMX_CONSOLE_BAUDRATE, &console);
+ /* This console is only used for boot stage */
+ console_set_scope(&console, CONSOLE_FLAG_BOOT);
+diff --git a/plat/imx/imx8m/imx8mq/platform.mk b/plat/imx/imx8m/imx8mq/platform.mk
+index b1c189fa09f5..648159eb3d10 100644
+--- a/plat/imx/imx8m/imx8mq/platform.mk
++++ b/plat/imx/imx8m/imx8mq/platform.mk
+@@ -31,6 +31,7 @@ BL31_SOURCES += plat/imx/common/imx8_helpers.S \
+ plat/imx/imx8m/gpc_common.c \
+ plat/imx/imx8m/imx_aipstz.c \
+ plat/imx/imx8m/imx8m_caam.c \
++ plat/imx/imx8m/imx8m_ccm.c \
+ plat/imx/imx8m/imx8m_psci_common.c \
+ plat/imx/imx8m/imx8mq/gpc.c \
+ plat/imx/common/imx8_topology.c \
+@@ -62,6 +63,9 @@ BL32_SIZE ?= 0x2000000
+ $(eval $(call add_define,BL32_SIZE))
+
+ IMX_BOOT_UART_BASE ?= 0x30860000
++ifeq (${IMX_BOOT_UART_BASE},auto)
++ override IMX_BOOT_UART_BASE := 0
++endif
+ $(eval $(call add_define,IMX_BOOT_UART_BASE))
+
+ ifeq (${SPD},trusty)
+--
+2.39.2
+
diff --git a/patches/tf-a-v2.10/0003-imx-disable-DRAM-retention-by-default.patch b/patches/tf-a-v2.10/0003-imx-disable-DRAM-retention-by-default.patch
new file mode 100644
index 000000000000..7d2b36119599
--- /dev/null
+++ b/patches/tf-a-v2.10/0003-imx-disable-DRAM-retention-by-default.patch
@@ -0,0 +1,174 @@
+From 5d2f3f48a66a1f3f90d35679920832569100ed35 Mon Sep 17 00:00:00 2001
+From: Ahmad Fatoum <a.fatoum@pengutronix.de>
+Date: Wed, 13 Mar 2024 08:08:13 +0100
+Subject: [PATCH 3/3] imx: disable DRAM retention by default
+
+Building the default upstream configuration is no longer possible
+
+Change-Id: I714f8ea96f18154db02390ba500f4a2dc5329ee7
+---
+ plat/imx/common/include/imx_sip_svc.h | 8 ++++++++
+ plat/imx/imx8m/imx8mm/platform.mk | 9 ++++++++-
+ plat/imx/imx8m/imx8mn/platform.mk | 9 ++++++++-
+ plat/imx/imx8m/imx8mp/platform.mk | 9 ++++++++-
+ plat/imx/imx8m/imx8mq/platform.mk | 9 ++++++++-
+ plat/imx/imx8m/include/dram.h | 8 +++++++-
+ 6 files changed, 47 insertions(+), 5 deletions(-)
+
+diff --git a/plat/imx/common/include/imx_sip_svc.h b/plat/imx/common/include/imx_sip_svc.h
+index 0e91c7174a52..5015eb6a1f11 100644
+--- a/plat/imx/common/include/imx_sip_svc.h
++++ b/plat/imx/common/include/imx_sip_svc.h
+@@ -57,8 +57,16 @@ int imx_soc_info_handler(uint32_t smc_fid, u_register_t x1,
+ u_register_t x2, u_register_t x3);
+ int imx_gpc_handler(uint32_t smc_fid, u_register_t x1,
+ u_register_t x2, u_register_t x3);
++#if IMX_DRAM_RETENTION
+ int dram_dvfs_handler(uint32_t smc_fid, void *handle,
+ u_register_t x1, u_register_t x2, u_register_t x3);
++#else
++static inline int dram_dvfs_handler(uint32_t smc_fid, void *handle,
++ u_register_t x1, u_register_t x2, u_register_t x3)
++{
++ SMC_RET1(handle, SMC_UNK);
++}
++#endif
+ #endif
+ #if defined(PLAT_imx8mm) || defined(PLAT_imx8mn) || defined(PLAT_imx8mp)
+ int dram_dvfs_handler(uint32_t smc_fid, void *handle,
+diff --git a/plat/imx/imx8m/imx8mm/platform.mk b/plat/imx/imx8m/imx8mm/platform.mk
+index 97f4f248824d..849ae5e4ca36 100644
+--- a/plat/imx/imx8m/imx8mm/platform.mk
++++ b/plat/imx/imx8m/imx8mm/platform.mk
+@@ -52,7 +52,6 @@ BL31_SOURCES += plat/imx/common/imx8_helpers.S \
+ drivers/delay_timer/delay_timer.c \
+ drivers/delay_timer/generic_delay_timer.c \
+ ${XLAT_TABLES_LIB_SRCS} \
+- ${IMX_DRAM_SOURCES} \
+ ${IMX_GIC_SOURCES}
+
+ ifeq (${NEED_BL2},yes)
+@@ -153,6 +152,14 @@ ERRATA_A53_835769 := 1
+ ERRATA_A53_843419 := 1
+ ERRATA_A53_855873 := 1
+
++IMX_DRAM_RETENTION ?= 1
++$(eval $(call assert_boolean,IMX_DRAM_RETENTION))
++$(eval $(call add_define,IMX_DRAM_RETENTION))
++
++ifeq (${IMX_DRAM_RETENTION},1)
++BL31_SOURCES += ${IMX_DRAM_SOURCES}
++endif
++
+ BL32_BASE ?= 0xbe000000
+ $(eval $(call add_define,BL32_BASE))
+
+diff --git a/plat/imx/imx8m/imx8mn/platform.mk b/plat/imx/imx8m/imx8mn/platform.mk
+index e0826e29a88c..94d31a2681aa 100644
+--- a/plat/imx/imx8m/imx8mn/platform.mk
++++ b/plat/imx/imx8m/imx8mn/platform.mk
+@@ -46,7 +46,6 @@ BL31_SOURCES += plat/imx/common/imx8_helpers.S \
+ drivers/arm/tzc/tzc380.c \
+ drivers/delay_timer/delay_timer.c \
+ drivers/delay_timer/generic_delay_timer.c \
+- ${IMX_DRAM_SOURCES} \
+ ${IMX_GIC_SOURCES} \
+ ${XLAT_TABLES_LIB_SRCS}
+
+@@ -59,6 +58,14 @@ ERRATA_A53_835769 := 1
+ ERRATA_A53_843419 := 1
+ ERRATA_A53_855873 := 1
+
++IMX_DRAM_RETENTION ?= 1
++$(eval $(call assert_boolean,IMX_DRAM_RETENTION))
++$(eval $(call add_define,IMX_DRAM_RETENTION))
++
++ifeq (${IMX_DRAM_RETENTION},1)
++BL31_SOURCES += ${IMX_DRAM_SOURCES}
++endif
++
+ BL32_BASE ?= 0xbe000000
+ $(eval $(call add_define,BL32_BASE))
+
+diff --git a/plat/imx/imx8m/imx8mp/platform.mk b/plat/imx/imx8m/imx8mp/platform.mk
+index ce6907195152..1f699c4f26f0 100644
+--- a/plat/imx/imx8m/imx8mp/platform.mk
++++ b/plat/imx/imx8m/imx8mp/platform.mk
+@@ -47,7 +47,6 @@ BL31_SOURCES += plat/imx/common/imx8_helpers.S \
+ drivers/arm/tzc/tzc380.c \
+ drivers/delay_timer/delay_timer.c \
+ drivers/delay_timer/generic_delay_timer.c \
+- ${IMX_DRAM_SOURCES} \
+ ${IMX_GIC_SOURCES} \
+ ${XLAT_TABLES_LIB_SRCS}
+
+@@ -150,6 +149,14 @@ ERRATA_A53_835769 := 1
+ ERRATA_A53_843419 := 1
+ ERRATA_A53_855873 := 1
+
++IMX_DRAM_RETENTION ?= 1
++$(eval $(call assert_boolean,IMX_DRAM_RETENTION))
++$(eval $(call add_define,IMX_DRAM_RETENTION))
++
++ifeq (${IMX_DRAM_RETENTION},1)
++BL31_SOURCES += ${IMX_DRAM_SOURCES}
++endif
++
+ BL32_BASE ?= 0x56000000
+ $(eval $(call add_define,BL32_BASE))
+
+diff --git a/plat/imx/imx8m/imx8mq/platform.mk b/plat/imx/imx8m/imx8mq/platform.mk
+index 648159eb3d10..f61620bd4224 100644
+--- a/plat/imx/imx8m/imx8mq/platform.mk
++++ b/plat/imx/imx8m/imx8mq/platform.mk
+@@ -43,7 +43,6 @@ BL31_SOURCES += plat/imx/common/imx8_helpers.S \
+ drivers/delay_timer/delay_timer.c \
+ drivers/delay_timer/generic_delay_timer.c \
+ ${XLAT_TABLES_LIB_SRCS} \
+- ${IMX_DRAM_SOURCES} \
+ ${IMX_GIC_SOURCES}
+
+ ENABLE_PIE := 1
+@@ -56,6 +55,14 @@ ERRATA_A53_835769 := 1
+ ERRATA_A53_843419 := 1
+ ERRATA_A53_855873 := 1
+
++IMX_DRAM_RETENTION ?= 0
++$(eval $(call assert_boolean,IMX_DRAM_RETENTION))
++$(eval $(call add_define,IMX_DRAM_RETENTION))
++
++ifeq (${IMX_DRAM_RETENTION},1)
++BL31_SOURCES += ${IMX_DRAM_SOURCES}
++endif
++
+ BL32_BASE ?= 0xfe000000
+ $(eval $(call add_define,BL32_BASE))
+
+diff --git a/plat/imx/imx8m/include/dram.h b/plat/imx/imx8m/include/dram.h
+index 719c39063778..1cf0666e9cad 100644
+--- a/plat/imx/imx8m/include/dram.h
++++ b/plat/imx/imx8m/include/dram.h
+@@ -70,13 +70,19 @@ struct dram_info {
+
+ extern struct dram_info dram_info;
+
+-void dram_info_init(unsigned long dram_timing_base);
+ void dram_umctl2_init(struct dram_timing_info *timing);
+ void dram_phy_init(struct dram_timing_info *timing);
+
+ /* dram retention */
++#if IMX_DRAM_RETENTION
++void dram_info_init(unsigned long dram_timing_base);
+ void dram_enter_retention(void);
+ void dram_exit_retention(void);
++#else
++static inline void dram_info_init(unsigned long dram_timing_base) {}
++static inline void dram_enter_retention(void) {}
++static inline void dram_exit_retention(void) {}
++#endif
+
+ void dram_clock_switch(unsigned int target_drate, bool bypass_mode);
+
+--
+2.39.2
+
diff --git a/patches/tf-a-v2.10/0101-feat-imx8mq-detect-console-base-address-during-runti.patch b/patches/tf-a-v2.10/0101-feat-imx8mq-detect-console-base-address-during-runti.patch
new file mode 100644
index 000000000000..d375a45c1598
--- /dev/null
+++ b/patches/tf-a-v2.10/0101-feat-imx8mq-detect-console-base-address-during-runti.patch
@@ -0,0 +1,72 @@
+From: Ahmad Fatoum <a.fatoum@pengutronix.de>
+Date: Wed, 13 Mar 2024 02:08:54 +0100
+Subject: [PATCH] feat(imx8mq): detect console base address during runtime
+
+On the i.MX8M SoCs, TF-A doesn't itself initialize the UART, but depends
+on BL2 to set it up beforehand. To allow using the same TF-A binary on
+boards with different UART assignment, TF-A On i.MX8M M/N/P supports
+dynamically determining the UART in use. The code is also applicable to
+the i.MX8MQ, so enable it there too.
+
+Change-Id: I9ba70f7068e762da979bd103390fa006c3a5d480
+Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
+---
+ plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c | 8 +++++++-
+ plat/imx/imx8m/imx8mq/platform.mk | 4 ++++
+ 2 files changed, 11 insertions(+), 1 deletion(-)
+
+diff --git a/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c b/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c
+index 7065a658614f..70c2def7d18b 100644
+--- a/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c
++++ b/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c
+@@ -26,6 +26,7 @@
+ #include <imx_aipstz.h>
+ #include <imx_uart.h>
+ #include <imx8m_caam.h>
++#include <imx8m_ccm.h>
+ #include <plat_imx8.h>
+
+ #define TRUSTY_PARAMS_LEN_BYTES (4096*2)
+@@ -145,6 +146,7 @@ static void bl31_tz380_setup(void)
+ void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
+ u_register_t arg2, u_register_t arg3)
+ {
++ unsigned int console_base = IMX_BOOT_UART_BASE;
+ static console_t console;
+ int i;
+ /* enable CSU NS access permission */
+@@ -154,7 +156,11 @@ void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
+
+ imx_aipstz_init(aipstz);
+
+- console_imx_uart_register(IMX_BOOT_UART_BASE, IMX_BOOT_UART_CLK_IN_HZ,
++ if (console_base == 0U) {
++ console_base = imx8m_uart_get_base();
++ }
++
++ console_imx_uart_register(console_base, IMX_BOOT_UART_CLK_IN_HZ,
+ IMX_CONSOLE_BAUDRATE, &console);
+ /* This console is only used for boot stage */
+ console_set_scope(&console, CONSOLE_FLAG_BOOT);
+diff --git a/plat/imx/imx8m/imx8mq/platform.mk b/plat/imx/imx8m/imx8mq/platform.mk
+index b48449725791..f61620bd4224 100644
+--- a/plat/imx/imx8m/imx8mq/platform.mk
++++ b/plat/imx/imx8m/imx8mq/platform.mk
+@@ -31,6 +31,7 @@ BL31_SOURCES += plat/imx/common/imx8_helpers.S \
+ plat/imx/imx8m/gpc_common.c \
+ plat/imx/imx8m/imx_aipstz.c \
+ plat/imx/imx8m/imx8m_caam.c \
++ plat/imx/imx8m/imx8m_ccm.c \
+ plat/imx/imx8m/imx8m_psci_common.c \
+ plat/imx/imx8m/imx8mq/gpc.c \
+ plat/imx/common/imx8_topology.c \
+@@ -69,6 +70,9 @@ BL32_SIZE ?= 0x2000000
+ $(eval $(call add_define,BL32_SIZE))
+
+ IMX_BOOT_UART_BASE ?= 0x30860000
++ifeq (${IMX_BOOT_UART_BASE},auto)
++ override IMX_BOOT_UART_BASE := 0
++endif
+ $(eval $(call add_define,IMX_BOOT_UART_BASE))
+
+ ifeq (${SPD},trusty)
diff --git a/patches/tf-a-v2.10/0201-fix-pmu-fix-breakage-on-ARMv7-CPUs-with-SP_min-as-BL.patch b/patches/tf-a-v2.10/0201-fix-pmu-fix-breakage-on-ARMv7-CPUs-with-SP_min-as-BL.patch
new file mode 100644
index 000000000000..60abc4862d7c
--- /dev/null
+++ b/patches/tf-a-v2.10/0201-fix-pmu-fix-breakage-on-ARMv7-CPUs-with-SP_min-as-BL.patch
@@ -0,0 +1,57 @@
+From: Ahmad Fatoum <a.fatoum@pengutronix.de>
+Date: Tue, 12 Mar 2024 18:36:46 +0100
+Subject: [PATCH] fix(pmu): fix breakage on ARMv7 CPUs with SP_min as BL32
+
+While comments introduced with the original commit claim that
+pmuv3_disable_el3()/pmuv3_init_el3() are compatible with PMUv2 and
+PMUv1, this is not true in practice: The function accesses the Secure
+Debug Control Register (SDCR), which only available to ARMv8 CPUs.
+
+ARMv8 CPUs executing in AArch32 mode would thus be able to disable
+their PMUv3, while ARMv7 CPUs would hang trying to access the SDCR.
+
+Fix this by only doing PMUv3 handling when we know a PMUv3 to be
+available. This resolves boot hanging on all STM32MP15 platforms
+that use SP_min as BL32 instead of OP-TEE.
+
+Change-Id: I40f7611cf46b89a30243cc55bf55a8d9c9de93c8
+Fixes: c73686a11cea ("feat(pmu): introduce pmuv3 lib/extensions folder")
+Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
+---
+ lib/el3_runtime/aarch32/context_mgmt.c | 7 ++-----
+ lib/extensions/pmuv3/aarch32/pmuv3.c | 4 ----
+ 2 files changed, 2 insertions(+), 9 deletions(-)
+
+diff --git a/lib/el3_runtime/aarch32/context_mgmt.c b/lib/el3_runtime/aarch32/context_mgmt.c
+index b60b8e0f05d0..72af43d3dcb0 100644
+--- a/lib/el3_runtime/aarch32/context_mgmt.c
++++ b/lib/el3_runtime/aarch32/context_mgmt.c
+@@ -149,11 +149,8 @@ static void enable_extensions_nonsecure(bool el2_unused)
+ trf_init_el3();
+ }
+
+- /*
+- * Also applies to PMU < v3. The PMU is only disabled for EL3 and Secure
+- * state execution. This does not affect lower NS ELs.
+- */
+- pmuv3_init_el3();
++ if (read_feat_pmuv3_id_field() >= 3)
++ pmuv3_init_el3();
+ #endif /* IMAGE_BL32 */
+ }
+
+diff --git a/lib/extensions/pmuv3/aarch32/pmuv3.c b/lib/extensions/pmuv3/aarch32/pmuv3.c
+index effb7e02dc29..456a48efb0fb 100644
+--- a/lib/extensions/pmuv3/aarch32/pmuv3.c
++++ b/lib/extensions/pmuv3/aarch32/pmuv3.c
+@@ -25,10 +25,6 @@ static u_register_t mtpmu_disable_el3(u_register_t sdcr)
+ return sdcr;
+ }
+
+-/*
+- * Applies to all PMU versions. Name is PMUv3 for compatibility with aarch64 and
+- * to not clash with platforms which reuse the PMU name
+- */
+ void pmuv3_init_el3(void)
+ {
+ u_register_t sdcr = read_sdcr();
diff --git a/patches/tf-a-v2.10/0301-Release-2.10-customers-pengutronix-distrokit-2024031.patch b/patches/tf-a-v2.10/0301-Release-2.10-customers-pengutronix-distrokit-2024031.patch
new file mode 100644
index 000000000000..58cbc06803cb
--- /dev/null
+++ b/patches/tf-a-v2.10/0301-Release-2.10-customers-pengutronix-distrokit-2024031.patch
@@ -0,0 +1,21 @@
+From: Ahmad Fatoum <a.fatoum@pengutronix.de>
+Date: Fri, 15 Mar 2024 21:18:29 +0100
+Subject: [PATCH] Release 2.10/customers/pengutronix/distrokit/20240315-1
+
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 97c3c1548a78..56556db0be78 100644
+--- a/Makefile
++++ b/Makefile
+@@ -222,7 +222,7 @@ endif #(Debug)
+ ifeq (${BUILD_STRING},)
+ BUILD_STRING := $(shell git describe --always --dirty --tags 2> /dev/null)
+ endif
+-VERSION_STRING := v${VERSION}(${BUILD_TYPE}):${BUILD_STRING}
++VERSION_STRING := v${VERSION}(${BUILD_TYPE}):${BUILD_STRING}-20240315-1
+
+ ifeq (${AARCH32_INSTRUCTION_SET},A32)
+ TF_CFLAGS_aarch32 += -marm
diff --git a/patches/tf-a-v2.10/series b/patches/tf-a-v2.10/series
new file mode 100644
index 000000000000..4dd620f0aa06
--- /dev/null
+++ b/patches/tf-a-v2.10/series
@@ -0,0 +1,19 @@
+# umpf-base: v2.10
+# umpf-name: 2.10/customers/pengutronix/distrokit
+# umpf-version: 2.10/customers/pengutronix/distrokit/20240315-1
+# umpf-topic: v2.10/topic/imx8mq-size
+# umpf-hashinfo: a972970be20be852b0d48576dfb1c233612efbdd
+# umpf-topic-range: b6c0948400594e3cc4dbb5a4ef04b815d2675808..6c0660bf6047f288628c282e44b9b1b06bd1d33a
+0001-fix-imx-disable-DRAM-retention-by-default-on-i.MX8MQ.patch
+# umpf-topic: v2.10/topic/imx8mq-console
+# umpf-hashinfo: 252b1100fb3c424e0fe1043e60414c3d7e0fa675
+# umpf-topic-range: 6c0660bf6047f288628c282e44b9b1b06bd1d33a..ec9b46be3c0c561ed61f113dc3c15085dbce5bf7
+0101-feat-imx8mq-detect-console-base-address-during-runti.patch
+# umpf-topic: v2.10/topic/stm32mp1
+# umpf-hashinfo: 44f35b67ee4f89b05408ecfe7b4b2c1ae5366b72
+# umpf-topic-range: ec9b46be3c0c561ed61f113dc3c15085dbce5bf7..10dfac53fdfff2f98d8140863f583df472483f1d
+0201-fix-pmu-fix-breakage-on-ARMv7-CPUs-with-SP_min-as-BL.patch
+# umpf-release: 2.10/customers/pengutronix/distrokit/20240315-1
+# umpf-topic-range: 10dfac53fdfff2f98d8140863f583df472483f1d..288664026c3117bda3f8f2275e76bb97be116b89
+0301-Release-2.10-customers-pengutronix-distrokit-2024031.patch
+# umpf-end
diff --git a/patches/tf-a-v2.8/0001-build-makefile-add-helper-to-detect-linker-options.patch b/patches/tf-a-v2.8/0001-build-makefile-add-helper-to-detect-linker-options.patch
deleted file mode 100644
index e86f31b8858a..000000000000
--- a/patches/tf-a-v2.8/0001-build-makefile-add-helper-to-detect-linker-options.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From: Marco Felsch <m.felsch@pengutronix.de>
-Date: Thu, 24 Nov 2022 11:02:05 +0100
-Subject: [PATCH] build(makefile): add helper to detect linker options
-
-This is a small helper to check for possible linker options. If the
-linker supports the requested option it is returned and if not nothing
-will be returned, e.g.:
-
- TF_LDFLAGS += $(call ld_option, --no-warn-rwx-segments)
-
-can be called unconditional.
-
-Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
-Change-Id: I236800852ece49948ff53a0b91fddba53c8f0f95
----
- make_helpers/build_macros.mk | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/make_helpers/build_macros.mk b/make_helpers/build_macros.mk
-index 426e344941d9..7d0b0a511226 100644
---- a/make_helpers/build_macros.mk
-+++ b/make_helpers/build_macros.mk
-@@ -86,6 +86,12 @@ define assert_numerics
- $(foreach num,$1,$(eval $(call assert_numeric,$(num))))
- endef
-
-+# Convenience function to check for a given linker option. An call to
-+# $(call ld_option, --no-XYZ) will return --no-XYZ if supported by the linker
-+define ld_option
-+ $(shell if $(LD) $(1) -v >/dev/null 2>&1; then echo $(1); fi )
-+endef
-+
- # CREATE_SEQ is a recursive function to create sequence of numbers from 1 to
- # $(2) and assign the sequence to $(1)
- define CREATE_SEQ
diff --git a/patches/tf-a-v2.8/0002-feat-build-add-support-for-new-binutils-versions.patch b/patches/tf-a-v2.8/0002-feat-build-add-support-for-new-binutils-versions.patch
deleted file mode 100644
index b254a578d7d4..000000000000
--- a/patches/tf-a-v2.8/0002-feat-build-add-support-for-new-binutils-versions.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From: Marco Felsch <m.felsch@pengutronix.de>
-Date: Wed, 9 Nov 2022 12:59:09 +0100
-Subject: [PATCH] feat(build): add support for new binutils versions
-
-Users of GNU ld (BPF) from binutils 2.39+ will observe multiple instaces
-of a new warning when linking the bl*.elf in the form:
-
- ld.bfd: warning: stm32mp1_helper.o: missing .note.GNU-stack section implies executable stack
- ld.bfd: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
- ld.bfd: warning: bl2.elf has a LOAD segment with RWX permissions
- ld.bfd: warning: bl32.elf has a LOAD segment with RWX permissions
-
-These new warnings are enbaled by default to secure elf binaries:
- - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=ba951afb99912da01a6e8434126b8fac7aa75107
- - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=0d38576a34ec64a1b4500c9277a8e9d0f07e6774
-
-Fix it in a similar way to what the Linux kernel does, see:
-https://lore.kernel.org/all/20220810222442.2296651-1-ndesaulniers@google.com/
-
-Following the reasoning there, we set "-z noexecstack" for all linkers
-(although LLVM's LLD defaults to it) and optional add
---no-warn-rwx-segments since this a ld.bfd related.
-
-Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
-Signed-off-by: Robert Schwebel <r.schwebel@pengutronix.de>
-Change-Id: I9430f5fa5036ca88da46cd3b945754d62616b617
----
- Makefile | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/Makefile b/Makefile
-index 1ddb7b84417d..1bfff716485a 100644
---- a/Makefile
-+++ b/Makefile
-@@ -416,6 +416,8 @@ endif
-
- GCC_V_OUTPUT := $(shell $(CC) -v 2>&1)
-
-+TF_LDFLAGS += -z noexecstack
-+
- # LD = armlink
- ifneq ($(findstring armlink,$(notdir $(LD))),)
- TF_LDFLAGS += --diag_error=warning --lto_level=O1
-@@ -451,6 +453,10 @@ TF_LDFLAGS += $(TF_LDFLAGS_$(ARCH))
- endif
- endif
-
-+# With ld.bfd version 2.29 and newer new warnings are added. Skip those since we
-+# are not loaded by a elf loader.
-+TF_LDFLAGS += $(call ld_option, --no-warn-rwx-segments)
-+
- DTC_FLAGS += -I dts -O dtb
- DTC_CPPFLAGS += -P -nostdinc -Iinclude -Ifdts -undef \
- -x assembler-with-cpp $(DEFINES)
diff --git a/patches/tf-a-v2.8/0101-feat-imx8mq-make-IMX_BOOT_UART_BASE-configurable-via.patch b/patches/tf-a-v2.8/0101-feat-imx8mq-make-IMX_BOOT_UART_BASE-configurable-via.patch
deleted file mode 100644
index 958b7fda325a..000000000000
--- a/patches/tf-a-v2.8/0101-feat-imx8mq-make-IMX_BOOT_UART_BASE-configurable-via.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From: Lucas Stach <l.stach@pengutronix.de>
-Date: Thu, 8 Dec 2022 15:54:26 +0100
-Subject: [PATCH] feat(imx8mq): make IMX_BOOT_UART_BASE configurable via build
- parameter
-
-This aligns the i.MX8MQ build with the other i.MX8M platforms by allowing
-to override the default IMX_BOOT_UART_BASE value via a make parameter.
-
-Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
-Change-Id: Iad9b844517209fc7d051c61767f71ac9fa2b55c7
----
- plat/imx/imx8m/imx8mq/include/platform_def.h | 1 -
- plat/imx/imx8m/imx8mq/platform.mk | 3 +++
- 2 files changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/plat/imx/imx8m/imx8mq/include/platform_def.h b/plat/imx/imx8m/imx8mq/include/platform_def.h
-index 1dd22d952305..4671cd3afa40 100644
---- a/plat/imx/imx8m/imx8mq/include/platform_def.h
-+++ b/plat/imx/imx8m/imx8mq/include/platform_def.h
-@@ -54,7 +54,6 @@
-
- #define HAB_RVT_BASE U(0x00000880) /* HAB_RVT for i.MX8MQ */
-
--#define IMX_BOOT_UART_BASE U(0x30860000)
- #define IMX_BOOT_UART_CLK_IN_HZ 25000000 /* Select 25Mhz oscillator */
- #define PLAT_CRASH_UART_BASE IMX_BOOT_UART_BASE
- #define PLAT_CRASH_UART_CLK_IN_HZ 25000000
-diff --git a/plat/imx/imx8m/imx8mq/platform.mk b/plat/imx/imx8m/imx8mq/platform.mk
-index 7b6df920c924..f62d3aa5be15 100644
---- a/plat/imx/imx8m/imx8mq/platform.mk
-+++ b/plat/imx/imx8m/imx8mq/platform.mk
-@@ -52,6 +52,9 @@ $(eval $(call add_define,BL32_BASE))
- BL32_SIZE ?= 0x2000000
- $(eval $(call add_define,BL32_SIZE))
-
-+IMX_BOOT_UART_BASE ?= 0x30860000
-+$(eval $(call add_define,IMX_BOOT_UART_BASE))
-+
- ifeq (${SPD},trusty)
- BL31_CFLAGS += -DPLAT_XLAT_TABLES_DYNAMIC=1
- endif
diff --git a/patches/tf-a-v2.8/0102-feat-imx8mq-remove-empty-bl31_plat_runtime_setup.patch b/patches/tf-a-v2.8/0102-feat-imx8mq-remove-empty-bl31_plat_runtime_setup.patch
deleted file mode 100644
index 0b1bc7e8c82b..000000000000
--- a/patches/tf-a-v2.8/0102-feat-imx8mq-remove-empty-bl31_plat_runtime_setup.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From: Lucas Stach <l.stach@pengutronix.de>
-Date: Thu, 8 Dec 2022 17:51:17 +0100
-Subject: [PATCH] feat(imx8mq): remove empty bl31_plat_runtime_setup
-
-Having this empty definition is actively harmful, as it prevents the
-default weak function to be used, which does a switch of the console
-state.
-
-Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
-Change-Id: I3b78e0c524c4907714036dba573a44d8f9c48b09
----
- plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c | 5 -----
- 1 file changed, 5 deletions(-)
-
-diff --git a/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c b/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c
-index 59c3779abb7f..0feb6d7fbad2 100644
---- a/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c
-+++ b/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c
-@@ -227,11 +227,6 @@ unsigned int plat_get_syscnt_freq2(void)
- return COUNTER_FREQUENCY;
- }
-
--void bl31_plat_runtime_setup(void)
--{
-- return;
--}
--
- #ifdef SPD_trusty
- void plat_trusty_set_boot_args(aapcs64_params_t *args)
- {
diff --git a/patches/tf-a-v2.8/0103-feat-imx8mq-always-set-up-console.patch b/patches/tf-a-v2.8/0103-feat-imx8mq-always-set-up-console.patch
deleted file mode 100644
index 3a44ae3a149d..000000000000
--- a/patches/tf-a-v2.8/0103-feat-imx8mq-always-set-up-console.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From: Lucas Stach <l.stach@pengutronix.de>
-Date: Thu, 8 Dec 2022 16:00:04 +0100
-Subject: [PATCH] feat(imx8mq): always set up console
-
-This aligns the i.MX8MQ platform behaviour with the other i.MX8M*
-platforms by always setting up the console UART.
-
-Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
-Change-Id: I1279d9cb4feb6e789422b9844cab711b8daae74e
----
- plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c | 7 +++----
- plat/imx/imx8m/imx8mq/include/platform_def.h | 1 -
- 2 files changed, 3 insertions(+), 5 deletions(-)
-
-diff --git a/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c b/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c
-index 0feb6d7fbad2..0972c35e9554 100644
---- a/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c
-+++ b/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c
-@@ -124,6 +124,7 @@ static void bl31_tz380_setup(void)
- void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
- u_register_t arg2, u_register_t arg3)
- {
-+ static console_t console;
- int i;
- /* enable CSU NS access permission */
- for (i = 0; i < 64; i++) {
-@@ -132,12 +133,10 @@ void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
-
- imx_aipstz_init(aipstz);
-
--#if DEBUG_CONSOLE
-- static console_t console;
--
- console_imx_uart_register(IMX_BOOT_UART_BASE, IMX_BOOT_UART_CLK_IN_HZ,
- IMX_CONSOLE_BAUDRATE, &console);
--#endif
-+ /* This console is only used for boot stage */
-+ console_set_scope(&console, CONSOLE_FLAG_BOOT);
-
- imx8m_caam_init();
-
-diff --git a/plat/imx/imx8m/imx8mq/include/platform_def.h b/plat/imx/imx8m/imx8mq/include/platform_def.h
-index 4671cd3afa40..103f2e4087e2 100644
---- a/plat/imx/imx8m/imx8mq/include/platform_def.h
-+++ b/plat/imx/imx8m/imx8mq/include/platform_def.h
-@@ -127,5 +127,4 @@
-
- #define COUNTER_FREQUENCY 8333333 /* 25MHz / 3 */
-
--#define DEBUG_CONSOLE 0
- #define IMX_WDOG_B_RESET
diff --git a/patches/tf-a-v2.8/0104-refactor-imx8mq-make-use-of-setup_page_tables.patch b/patches/tf-a-v2.8/0104-refactor-imx8mq-make-use-of-setup_page_tables.patch
deleted file mode 100644
index 6cf2dc18deb2..000000000000
--- a/patches/tf-a-v2.8/0104-refactor-imx8mq-make-use-of-setup_page_tables.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From: Lucas Stach <l.stach@pengutronix.de>
-Date: Thu, 8 Dec 2022 16:35:11 +0100
-Subject: [PATCH] refactor(imx8mq): make use of setup_page_tables()
-
-Improve code readability and align with other i.MX8M* platforms.
-
-Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
-Change-Id: Ifd29b74872e3a567288d208de4827403078164e9
----
- plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c | 28 +++++++++++++---------------
- 1 file changed, 13 insertions(+), 15 deletions(-)
-
-diff --git a/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c b/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c
-index 0972c35e9554..c7eddf430197 100644
---- a/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c
-+++ b/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c
-@@ -175,23 +175,21 @@ void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
-
- void bl31_plat_arch_setup(void)
- {
-- mmap_add_region(BL31_BASE, BL31_BASE, (BL31_LIMIT - BL31_BASE),
-- MT_MEMORY | MT_RW | MT_SECURE);
-- mmap_add_region(BL_CODE_BASE, BL_CODE_BASE, (BL_CODE_END - BL_CODE_BASE),
-- MT_MEMORY | MT_RO | MT_SECURE);
--
-- /* Map TEE memory */
-- mmap_add_region(BL32_BASE, BL32_BASE, BL32_SIZE, MT_MEMORY | MT_RW);
--
-- mmap_add(imx_mmap);
--
-+ const mmap_region_t bl_regions[] = {
-+ MAP_REGION_FLAT(BL31_BASE, BL31_LIMIT - BL31_BASE,
-+ MT_MEMORY | MT_RW | MT_SECURE),
-+ MAP_REGION_FLAT(BL_CODE_BASE, BL_CODE_END - BL_CODE_BASE,
-+ MT_MEMORY | MT_RO | MT_SECURE),
- #if USE_COHERENT_MEM
-- mmap_add_region(BL_COHERENT_RAM_BASE, BL_COHERENT_RAM_BASE,
-- BL_COHERENT_RAM_END - BL_COHERENT_RAM_BASE,
-- MT_DEVICE | MT_RW | MT_SECURE);
-+ MAP_REGION_FLAT(BL_COHERENT_RAM_BASE,
-+ BL_COHERENT_RAM_END - BL_COHERENT_RAM_BASE,
-+ MT_DEVICE | MT_RW | MT_SECURE),
- #endif
-- /* setup xlat table */
-- init_xlat_tables();
-+ MAP_REGION_FLAT(BL32_BASE, BL32_SIZE, MT_MEMORY | MT_RW),
-+ {0},
-+ };
-+
-+ setup_page_tables(bl_regions, imx_mmap);
- /* enable the MMU */
- enable_mmu_el3(0);
- }
diff --git a/patches/tf-a-v2.8/0105-refactor-imx8mq-introduce-BL31_SIZE.patch b/patches/tf-a-v2.8/0105-refactor-imx8mq-introduce-BL31_SIZE.patch
deleted file mode 100644
index 960d7265cc08..000000000000
--- a/patches/tf-a-v2.8/0105-refactor-imx8mq-introduce-BL31_SIZE.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From: Lucas Stach <l.stach@pengutronix.de>
-Date: Thu, 8 Dec 2022 16:37:44 +0100
-Subject: [PATCH] refactor(imx8mq): introduce BL31_SIZE
-
-No functional change.
-
-Introduce BL31_SIZE define and calculate the limits based on the
-BL31_BASE and the BL31_SIZE define. Also make use of SZ_64K to make it
-easier to read. This is required for later BL31 PIE support since it
-drops the calculation based on the BL31_LIMIT and BL31_BASE.
-
-Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
-Change-Id: I517074b866b5bf11841b51777f87c926b304488d
----
- plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c | 2 +-
- plat/imx/imx8m/imx8mq/include/platform_def.h | 5 ++++-
- 2 files changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c b/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c
-index c7eddf430197..bbdb4d899a39 100644
---- a/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c
-+++ b/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c
-@@ -176,7 +176,7 @@ void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
- void bl31_plat_arch_setup(void)
- {
- const mmap_region_t bl_regions[] = {
-- MAP_REGION_FLAT(BL31_BASE, BL31_LIMIT - BL31_BASE,
-+ MAP_REGION_FLAT(BL31_BASE, BL31_SIZE,
- MT_MEMORY | MT_RW | MT_SECURE),
- MAP_REGION_FLAT(BL_CODE_BASE, BL_CODE_END - BL_CODE_BASE,
- MT_MEMORY | MT_RO | MT_SECURE),
-diff --git a/plat/imx/imx8m/imx8mq/include/platform_def.h b/plat/imx/imx8m/imx8mq/include/platform_def.h
-index 103f2e4087e2..bb570748f573 100644
---- a/plat/imx/imx8m/imx8mq/include/platform_def.h
-+++ b/plat/imx/imx8m/imx8mq/include/platform_def.h
-@@ -4,6 +4,8 @@
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-+#include <plat/common/common_def.h>
-+
- #define PLATFORM_LINKER_FORMAT "elf64-littleaarch64"
- #define PLATFORM_LINKER_ARCH aarch64
-
-@@ -31,7 +33,8 @@
- #define PLAT_STOP_OFF_STATE U(3)
-
- #define BL31_BASE U(0x910000)
--#define BL31_LIMIT U(0x920000)
-+#define BL31_SIZE SZ_64K
-+#define BL31_LIMIT (BL31_BASE + BL31_SIZE)
-
- /* non-secure uboot base */
- #define PLAT_NS_IMAGE_OFFSET U(0x40200000)
diff --git a/patches/tf-a-v2.8/0106-feat-imx8mq-add-BL31-PIE-support.patch b/patches/tf-a-v2.8/0106-feat-imx8mq-add-BL31-PIE-support.patch
deleted file mode 100644
index 25d2aaae70fd..000000000000
--- a/patches/tf-a-v2.8/0106-feat-imx8mq-add-BL31-PIE-support.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From: Lucas Stach <l.stach@pengutronix.de>
-Date: Thu, 8 Dec 2022 16:44:00 +0100
-Subject: [PATCH] feat(imx8mq): add BL31 PIE support
-
-Enable PIE support so the BL31 firmware can be loaded from anywhere
-within the OCRAM (SRAM). For the PIE support we only need to replace the
-BL31_BASE define by the BL31_START symbol which is a relocatable and we
-need to enable it by setting ENABLE_PIE := 1.
-
-Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
-Change-Id: Ie6a13e4ae0fdc6627a94798d7a86df7d5b310896
----
- plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c | 2 +-
- plat/imx/imx8m/imx8mq/imx8mq_psci.c | 2 +-
- plat/imx/imx8m/imx8mq/platform.mk | 1 +
- 3 files changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c b/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c
-index bbdb4d899a39..3c2d223fef21 100644
---- a/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c
-+++ b/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c
-@@ -176,7 +176,7 @@ void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
- void bl31_plat_arch_setup(void)
- {
- const mmap_region_t bl_regions[] = {
-- MAP_REGION_FLAT(BL31_BASE, BL31_SIZE,
-+ MAP_REGION_FLAT(BL31_START, BL31_SIZE,
- MT_MEMORY | MT_RW | MT_SECURE),
- MAP_REGION_FLAT(BL_CODE_BASE, BL_CODE_END - BL_CODE_BASE,
- MT_MEMORY | MT_RO | MT_SECURE),
-diff --git a/plat/imx/imx8m/imx8mq/imx8mq_psci.c b/plat/imx/imx8m/imx8mq/imx8mq_psci.c
-index 662017d6fe4a..01582afe490c 100644
---- a/plat/imx/imx8m/imx8mq/imx8mq_psci.c
-+++ b/plat/imx/imx8m/imx8mq/imx8mq_psci.c
-@@ -41,7 +41,7 @@ int imx_validate_power_state(unsigned int power_state,
-
- void imx_domain_suspend(const psci_power_state_t *target_state)
- {
-- uint64_t base_addr = BL31_BASE;
-+ uint64_t base_addr = BL31_START;
- uint64_t mpidr = read_mpidr_el1();
- unsigned int core_id = MPIDR_AFFLVL0_VAL(mpidr);
-
-diff --git a/plat/imx/imx8m/imx8mq/platform.mk b/plat/imx/imx8m/imx8mq/platform.mk
-index f62d3aa5be15..901a974a591e 100644
---- a/plat/imx/imx8m/imx8mq/platform.mk
-+++ b/plat/imx/imx8m/imx8mq/platform.mk
-@@ -38,6 +38,7 @@ BL31_SOURCES += plat/imx/common/imx8_helpers.S \
- ${XLAT_TABLES_LIB_SRCS} \
- ${IMX_GIC_SOURCES}
-
-+ENABLE_PIE := 1
- USE_COHERENT_MEM := 1
- RESET_TO_BL31 := 1
- A53_DISABLE_NON_TEMPORAL_HINT := 0
diff --git a/patches/tf-a-v2.8/0107-feat-imx8mq-add-support-for-gcc-12.x.patch b/patches/tf-a-v2.8/0107-feat-imx8mq-add-support-for-gcc-12.x.patch
deleted file mode 100644
index 24a5b80ca473..000000000000
--- a/patches/tf-a-v2.8/0107-feat-imx8mq-add-support-for-gcc-12.x.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From: Marco Felsch <m.felsch@pengutronix.de>
-Date: Fri, 10 Feb 2023 12:14:26 +0100
-Subject: [PATCH] feat(imx8mq): add support for gcc >= 12.x
-
-Starting with GCC >= 12.x the -Wall option includes -Werror=array-bounds
-checks. Per default GCC threads all memory accesses below 4096 as NULL,
-so access to ROMAPI causes the following warning:
-
-In file included from plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c:20:
-In function 'mmio_read_8',
- inlined from 'imx8mq_soc_info_init' at plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c:70:16,
- inlined from 'bl31_platform_setup' at plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c:206:2:
-include/lib/mmio.h:19:16: error: array subscript 0 is outside array bounds of 'volatile uint8_t[0]' {aka 'volatile unsigned char[]'} [-Werror=array-bounds]
- 19 | return *(volatile uint8_t*)addr;
- | ^~~~~~~~~~~~~~~~~~~~~~~~
-In function 'mmio_read_8',
- inlined from 'imx8mq_soc_info_init' at plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c:74:16,
- inlined from 'bl31_platform_setup' at plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c:206:2:
-include/lib/mmio.h:19:16: error: array subscript 0 is outside array bounds of 'volatile uint8_t[0]' {aka 'volatile unsigned char[]'} [-Werror=array-bounds]
- 19 | return *(volatile uint8_t*)addr;
- | ^~~~~~~~~~~~~~~~~~~~~~~~
-cc1: all warnings being treated as errors
-
-Fix this by setting the default min-pagesize to 0 instead of 4096, so
-the ROMAPI access will not trigger the warning. Don't set this option
-for all files since it is unkown how it affects code
-generation/optimizations.
-
-Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
-Change-Id: Ibcca65ca69750e1a1bca3d528c80e5b445d2f90f
----
- plat/imx/imx8m/imx8mq/platform.mk | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/plat/imx/imx8m/imx8mq/platform.mk b/plat/imx/imx8m/imx8mq/platform.mk
-index 901a974a591e..985be71725f7 100644
---- a/plat/imx/imx8m/imx8mq/platform.mk
-+++ b/plat/imx/imx8m/imx8mq/platform.mk
-@@ -59,3 +59,6 @@ $(eval $(call add_define,IMX_BOOT_UART_BASE))
- ifeq (${SPD},trusty)
- BL31_CFLAGS += -DPLAT_XLAT_TABLES_DYNAMIC=1
- endif
-+
-+# Required with gcc version >= 12
-+$(BUILD_PLAT)/bl31/imx8mq_bl31_setup.o: CFLAGS += --param=min-pagesize=0
diff --git a/patches/tf-a-v2.8/0201-feat-imx8m-detect-console-base-address-during-runtim.patch b/patches/tf-a-v2.8/0201-feat-imx8m-detect-console-base-address-during-runtim.patch
deleted file mode 100644
index 68f36aca7aa1..000000000000
--- a/patches/tf-a-v2.8/0201-feat-imx8m-detect-console-base-address-during-runtim.patch
+++ /dev/null
@@ -1,304 +0,0 @@
-From: Marco Felsch <m.felsch@pengutronix.de>
-Date: Mon, 24 Jul 2023 15:05:58 +0200
-Subject: [PATCH] feat(imx8m): detect console base address during runtime
-
-Provide a helper to detect the enabled UART device during runtime. This
-lower the integration effort and make it more straight forward for
-'simple' use-cases with a single UART enabled. If multiple UARTs are
-enabled the first enabled is returned.
-
-The auto-detection is enabled by setting IMX_BOOT_UART_BASE=0 to keep
-the backward compatibility. For more advanced use-cases (multiple UARTs
-are enabled) the user still has to provide the correct base address.
-
-Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
-Change-Id: I300a167e1a10f9aa991c8d1c3efe2c6b23f56c47
----
- plat/imx/imx8m/imx8m_ccm.c | 58 +++++++++++++++++++++++++++++++
- plat/imx/imx8m/imx8mm/imx8mm_bl31_setup.c | 11 +++++-
- plat/imx/imx8m/imx8mm/platform.mk | 1 +
- plat/imx/imx8m/imx8mn/imx8mn_bl31_setup.c | 11 +++++-
- plat/imx/imx8m/imx8mn/platform.mk | 1 +
- plat/imx/imx8m/imx8mp/imx8mp_bl31_setup.c | 11 +++++-
- plat/imx/imx8m/imx8mp/platform.mk | 1 +
- plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c | 11 +++++-
- plat/imx/imx8m/imx8mq/platform.mk | 1 +
- plat/imx/imx8m/include/imx8m_ccm.h | 12 +++++++
- 10 files changed, 114 insertions(+), 4 deletions(-)
- create mode 100644 plat/imx/imx8m/imx8m_ccm.c
- create mode 100644 plat/imx/imx8m/include/imx8m_ccm.h
-
-diff --git a/plat/imx/imx8m/imx8m_ccm.c b/plat/imx/imx8m/imx8m_ccm.c
-new file mode 100644
-index 000000000000..10a00c990031
---- /dev/null
-+++ b/plat/imx/imx8m/imx8m_ccm.c
-@@ -0,0 +1,58 @@
-+/*
-+ * Copyright (c) 2023, Pengutronix. All rights reserved.
-+ *
-+ * SPDX-License-Identifier: BSD-3-Clause
-+ */
-+
-+#include <lib/mmio.h>
-+#include <platform_def.h>
-+
-+#define UCR1 0x80
-+#define UCR1_UARTEN BIT(0)
-+#define DOMAIN0_RUNNING(d) (((d) & 0x3) != 0)
-+
-+static struct imx_uart {
-+ unsigned int ccm_reg;
-+ unsigned int uart_base;
-+} imx8m_uart_info[] = {
-+ { /* UART 1 */
-+ .ccm_reg = 0x4490,
-+ .uart_base = 0x30860000,
-+ }, { /* UART 2 */
-+ .ccm_reg = 0x44a0,
-+ .uart_base = 0x30890000,
-+ }, { /* UART 3 */
-+ .ccm_reg = 0x44b0,
-+ .uart_base = 0x30880000,
-+ }, { /* UART 4 */
-+ .ccm_reg = 0x44c0,
-+ .uart_base = 0x30a60000,
-+ }
-+};
-+
-+unsigned int imx8m_uart_get_base(void)
-+{
-+ unsigned int i;
-+
-+ for (i = 0; i < ARRAY_SIZE(imx8m_uart_info); i++) {
-+ uint32_t val;
-+
-+ /*
-+ * At least check that the clock-gate is ungated before we
-+ * access the UART register.
-+ */
-+ val = mmio_read_32(IMX_CCM_BASE + imx8m_uart_info[i].ccm_reg);
-+ if (DOMAIN0_RUNNING(val)) {
-+ val = mmio_read_32(imx8m_uart_info[i].uart_base + UCR1);
-+ if (val & UCR1_UARTEN) {
-+ return imx8m_uart_info[i].uart_base;
-+ }
-+ }
-+ }
-+
-+ /*
-+ * We should return an error and inform the user but we can't do it
-+ * this early.
-+ */
-+ return 0;
-+}
-diff --git a/plat/imx/imx8m/imx8mm/imx8mm_bl31_setup.c b/plat/imx/imx8m/imx8mm/imx8mm_bl31_setup.c
-index 67bfd3651dfe..8e6636147438 100644
---- a/plat/imx/imx8m/imx8mm/imx8mm_bl31_setup.c
-+++ b/plat/imx/imx8m/imx8mm/imx8mm_bl31_setup.c
-@@ -27,6 +27,7 @@
- #include <imx_uart.h>
- #include <imx_rdc.h>
- #include <imx8m_caam.h>
-+#include <imx8m_ccm.h>
- #include <imx8m_csu.h>
- #include <plat_imx8.h>
-
-@@ -130,6 +131,7 @@ void bl31_tzc380_setup(void)
- void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
- u_register_t arg2, u_register_t arg3)
- {
-+ unsigned int console_base = 0U;
- static console_t console;
- int i;
-
-@@ -144,7 +146,14 @@ void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
-
- imx_csu_init(csu_cfg);
-
-- console_imx_uart_register(IMX_BOOT_UART_BASE, IMX_BOOT_UART_CLK_IN_HZ,
-+#if IMX_BOOT_UART_BASE
-+ console_base = IMX_BOOT_UART_BASE;
-+#endif
-+ if (console_base == 0U) {
-+ console_base = imx8m_uart_get_base();
-+ }
-+
-+ console_imx_uart_register(console_base, IMX_BOOT_UART_CLK_IN_HZ,
- IMX_CONSOLE_BAUDRATE, &console);
- /* This console is only used for boot stage */
- console_set_scope(&console, CONSOLE_FLAG_BOOT);
-diff --git a/plat/imx/imx8m/imx8mm/platform.mk b/plat/imx/imx8m/imx8mm/platform.mk
-index 7a42554f5739..22791fda4c2c 100644
---- a/plat/imx/imx8m/imx8mm/platform.mk
-+++ b/plat/imx/imx8m/imx8mm/platform.mk
-@@ -37,6 +37,7 @@ BL31_SOURCES += plat/imx/common/imx8_helpers.S \
- plat/imx/imx8m/imx_rdc.c \
- plat/imx/imx8m/imx8m_csu.c \
- plat/imx/imx8m/imx8m_caam.c \
-+ plat/imx/imx8m/imx8m_ccm.c \
- plat/imx/imx8m/imx8m_psci_common.c \
- plat/imx/imx8m/imx8mm/imx8mm_bl31_setup.c \
- plat/imx/imx8m/imx8mm/imx8mm_psci.c \
-diff --git a/plat/imx/imx8m/imx8mn/imx8mn_bl31_setup.c b/plat/imx/imx8m/imx8mn/imx8mn_bl31_setup.c
-index eff198dd741c..aeb1cbf2945f 100644
---- a/plat/imx/imx8m/imx8mn/imx8mn_bl31_setup.c
-+++ b/plat/imx/imx8m/imx8mn/imx8mn_bl31_setup.c
-@@ -25,6 +25,7 @@
- #include <imx_uart.h>
- #include <imx_rdc.h>
- #include <imx8m_caam.h>
-+#include <imx8m_ccm.h>
- #include <imx8m_csu.h>
- #include <platform_def.h>
- #include <plat_imx8.h>
-@@ -121,6 +122,7 @@ static void bl31_tzc380_setup(void)
- void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
- u_register_t arg2, u_register_t arg3)
- {
-+ unsigned int console_base = 0U;
- static console_t console;
- unsigned int val;
- int i;
-@@ -141,7 +143,14 @@ void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
- val = mmio_read_32(IMX_IOMUX_GPR_BASE + 0x2c);
- mmio_write_32(IMX_IOMUX_GPR_BASE + 0x2c, val | 0x3DFF0000);
-
-- console_imx_uart_register(IMX_BOOT_UART_BASE, IMX_BOOT_UART_CLK_IN_HZ,
-+#if IMX_BOOT_UART_BASE
-+ console_base = IMX_BOOT_UART_BASE;
-+#endif
-+ if (console_base == 0U) {
-+ console_base = imx8m_uart_get_base();
-+ }
-+
-+ console_imx_uart_register(console_base, IMX_BOOT_UART_CLK_IN_HZ,
- IMX_CONSOLE_BAUDRATE, &console);
- /* This console is only used for boot stage */
- console_set_scope(&console, CONSOLE_FLAG_BOOT);
-diff --git a/plat/imx/imx8m/imx8mn/platform.mk b/plat/imx/imx8m/imx8mn/platform.mk
-index 1c0ad4f3bc23..46516104f16d 100644
---- a/plat/imx/imx8m/imx8mn/platform.mk
-+++ b/plat/imx/imx8m/imx8mn/platform.mk
-@@ -31,6 +31,7 @@ BL31_SOURCES += plat/imx/common/imx8_helpers.S \
- plat/imx/imx8m/imx_aipstz.c \
- plat/imx/imx8m/imx_rdc.c \
- plat/imx/imx8m/imx8m_caam.c \
-+ plat/imx/imx8m/imx8m_ccm.c \
- plat/imx/imx8m/imx8m_csu.c \
- plat/imx/imx8m/imx8m_psci_common.c \
- plat/imx/imx8m/imx8mn/imx8mn_bl31_setup.c \
-diff --git a/plat/imx/imx8m/imx8mp/imx8mp_bl31_setup.c b/plat/imx/imx8m/imx8mp/imx8mp_bl31_setup.c
-index 4c31fa28dab7..e25668b879b3 100644
---- a/plat/imx/imx8m/imx8mp/imx8mp_bl31_setup.c
-+++ b/plat/imx/imx8m/imx8mp/imx8mp_bl31_setup.c
-@@ -25,6 +25,7 @@
- #include <imx_uart.h>
- #include <imx_rdc.h>
- #include <imx8m_caam.h>
-+#include <imx8m_ccm.h>
- #include <imx8m_csu.h>
- #include <platform_def.h>
- #include <plat_imx8.h>
-@@ -117,6 +118,7 @@ static void bl31_tzc380_setup(void)
- void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
- u_register_t arg2, u_register_t arg3)
- {
-+ unsigned int console_base = 0U;
- static console_t console;
- unsigned int val;
- unsigned int i;
-@@ -137,7 +139,14 @@ void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
- val = mmio_read_32(IMX_IOMUX_GPR_BASE + 0x2c);
- mmio_write_32(IMX_IOMUX_GPR_BASE + 0x2c, val | 0x3DFF0000);
-
-- console_imx_uart_register(IMX_BOOT_UART_BASE, IMX_BOOT_UART_CLK_IN_HZ,
-+#if IMX_BOOT_UART_BASE
-+ console_base = IMX_BOOT_UART_BASE;
-+#endif
-+ if (console_base == 0U) {
-+ console_base = imx8m_uart_get_base();
-+ }
-+
-+ console_imx_uart_register(console_base, IMX_BOOT_UART_CLK_IN_HZ,
- IMX_CONSOLE_BAUDRATE, &console);
- /* This console is only used for boot stage */
- console_set_scope(&console, CONSOLE_FLAG_BOOT);
-diff --git a/plat/imx/imx8m/imx8mp/platform.mk b/plat/imx/imx8m/imx8mp/platform.mk
-index 5414c0a5732d..cdb504de0f3d 100644
---- a/plat/imx/imx8m/imx8mp/platform.mk
-+++ b/plat/imx/imx8m/imx8mp/platform.mk
-@@ -32,6 +32,7 @@ BL31_SOURCES += plat/imx/common/imx8_helpers.S \
- plat/imx/imx8m/imx_aipstz.c \
- plat/imx/imx8m/imx_rdc.c \
- plat/imx/imx8m/imx8m_caam.c \
-+ plat/imx/imx8m/imx8m_ccm.c \
- plat/imx/imx8m/imx8m_csu.c \
- plat/imx/imx8m/imx8m_psci_common.c \
- plat/imx/imx8m/imx8mp/imx8mp_bl31_setup.c \
-diff --git a/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c b/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c
-index 3c2d223fef21..1cb2d2a25b54 100644
---- a/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c
-+++ b/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c
-@@ -25,6 +25,7 @@
- #include <imx_aipstz.h>
- #include <imx_uart.h>
- #include <imx8m_caam.h>
-+#include <imx8m_ccm.h>
- #include <plat_imx8.h>
-
- #define TRUSTY_PARAMS_LEN_BYTES (4096*2)
-@@ -124,6 +125,7 @@ static void bl31_tz380_setup(void)
- void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
- u_register_t arg2, u_register_t arg3)
- {
-+ unsigned int console_base = 0U;
- static console_t console;
- int i;
- /* enable CSU NS access permission */
-@@ -133,7 +135,14 @@ void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
-
- imx_aipstz_init(aipstz);
-
-- console_imx_uart_register(IMX_BOOT_UART_BASE, IMX_BOOT_UART_CLK_IN_HZ,
-+#if IMX_BOOT_UART_BASE
-+ console_base = IMX_BOOT_UART_BASE;
-+#endif
-+ if (console_base == 0U) {
-+ console_base = imx8m_uart_get_base();
-+ }
-+
-+ console_imx_uart_register(console_base, IMX_BOOT_UART_CLK_IN_HZ,
- IMX_CONSOLE_BAUDRATE, &console);
- /* This console is only used for boot stage */
- console_set_scope(&console, CONSOLE_FLAG_BOOT);
-diff --git a/plat/imx/imx8m/imx8mq/platform.mk b/plat/imx/imx8m/imx8mq/platform.mk
-index 985be71725f7..0c34c10bdcb4 100644
---- a/plat/imx/imx8m/imx8mq/platform.mk
-+++ b/plat/imx/imx8m/imx8mq/platform.mk
-@@ -25,6 +25,7 @@ BL31_SOURCES += plat/imx/common/imx8_helpers.S \
- plat/imx/imx8m/gpc_common.c \
- plat/imx/imx8m/imx_aipstz.c \
- plat/imx/imx8m/imx8m_caam.c \
-+ plat/imx/imx8m/imx8m_ccm.c \
- plat/imx/imx8m/imx8m_psci_common.c \
- plat/imx/imx8m/imx8mq/gpc.c \
- plat/imx/common/imx8_topology.c \
-diff --git a/plat/imx/imx8m/include/imx8m_ccm.h b/plat/imx/imx8m/include/imx8m_ccm.h
-new file mode 100644
-index 000000000000..acbd135cb314
---- /dev/null
-+++ b/plat/imx/imx8m/include/imx8m_ccm.h
-@@ -0,0 +1,12 @@
-+/*
-+ * Copyright (c) 2023, Pengutronix. All rights reserved.
-+ *
-+ * SPDX-License-Identifier: BSD-3-Clause
-+ */
-+
-+#ifndef IMX8M_CCM_H
-+#define IMX8M_CCM_H
-+
-+unsigned int imx8m_uart_get_base(void);
-+
-+#endif /* IMX8M_CCM_H */
diff --git a/patches/tf-a-v2.8/0202-fix-imx8m-make-IMX_BOOT_UART_BASE-autodetection-opti.patch b/patches/tf-a-v2.8/0202-fix-imx8m-make-IMX_BOOT_UART_BASE-autodetection-opti.patch
deleted file mode 100644
index 9fae10905edd..000000000000
--- a/patches/tf-a-v2.8/0202-fix-imx8m-make-IMX_BOOT_UART_BASE-autodetection-opti.patch
+++ /dev/null
@@ -1,172 +0,0 @@
-From: Marco Felsch <m.felsch@pengutronix.de>
-Date: Wed, 2 Aug 2023 08:11:35 +0200
-Subject: [PATCH] fix(imx8m): make IMX_BOOT_UART_BASE autodetection option more
- obvious
-
-Switch from IMX_BOOT_UART_BASE=0 to IMX_BOOT_UART_BASE=auto to make it
-more obvious that the detection is based on the runtime autodetection.
-
-In addition this moves the evaluation of IMX_BOOT_UART_BASE into the
-makefile which removes the ugly conditional compilation as well.
-
-Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
-Change-Id: I92c13607bf81c6267f4b6aee829d74902b7f72d2
----
- plat/imx/imx8m/imx8mm/imx8mm_bl31_setup.c | 5 +----
- plat/imx/imx8m/imx8mm/platform.mk | 3 +++
- plat/imx/imx8m/imx8mn/imx8mn_bl31_setup.c | 5 +----
- plat/imx/imx8m/imx8mn/platform.mk | 3 +++
- plat/imx/imx8m/imx8mp/imx8mp_bl31_setup.c | 5 +----
- plat/imx/imx8m/imx8mp/platform.mk | 3 +++
- plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c | 5 +----
- plat/imx/imx8m/imx8mq/platform.mk | 3 +++
- 8 files changed, 16 insertions(+), 16 deletions(-)
-
-diff --git a/plat/imx/imx8m/imx8mm/imx8mm_bl31_setup.c b/plat/imx/imx8m/imx8mm/imx8mm_bl31_setup.c
-index 8e6636147438..c8a3adf8f333 100644
---- a/plat/imx/imx8m/imx8mm/imx8mm_bl31_setup.c
-+++ b/plat/imx/imx8m/imx8mm/imx8mm_bl31_setup.c
-@@ -131,7 +131,7 @@ void bl31_tzc380_setup(void)
- void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
- u_register_t arg2, u_register_t arg3)
- {
-- unsigned int console_base = 0U;
-+ unsigned int console_base = IMX_BOOT_UART_BASE;
- static console_t console;
- int i;
-
-@@ -146,9 +146,6 @@ void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
-
- imx_csu_init(csu_cfg);
-
--#if IMX_BOOT_UART_BASE
-- console_base = IMX_BOOT_UART_BASE;
--#endif
- if (console_base == 0U) {
- console_base = imx8m_uart_get_base();
- }
-diff --git a/plat/imx/imx8m/imx8mm/platform.mk b/plat/imx/imx8m/imx8mm/platform.mk
-index 22791fda4c2c..1b4a1f2f37c7 100644
---- a/plat/imx/imx8m/imx8mm/platform.mk
-+++ b/plat/imx/imx8m/imx8mm/platform.mk
-@@ -159,6 +159,9 @@ BL32_SIZE ?= 0x2000000
- $(eval $(call add_define,BL32_SIZE))
-
- IMX_BOOT_UART_BASE ?= 0x30890000
-+ifeq (${IMX_BOOT_UART_BASE},auto)
-+ override IMX_BOOT_UART_BASE := 0
-+endif
- $(eval $(call add_define,IMX_BOOT_UART_BASE))
-
- EL3_EXCEPTION_HANDLING := $(SDEI_SUPPORT)
-diff --git a/plat/imx/imx8m/imx8mn/imx8mn_bl31_setup.c b/plat/imx/imx8m/imx8mn/imx8mn_bl31_setup.c
-index aeb1cbf2945f..147249ee5e56 100644
---- a/plat/imx/imx8m/imx8mn/imx8mn_bl31_setup.c
-+++ b/plat/imx/imx8m/imx8mn/imx8mn_bl31_setup.c
-@@ -122,7 +122,7 @@ static void bl31_tzc380_setup(void)
- void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
- u_register_t arg2, u_register_t arg3)
- {
-- unsigned int console_base = 0U;
-+ unsigned int console_base = IMX_BOOT_UART_BASE;
- static console_t console;
- unsigned int val;
- int i;
-@@ -143,9 +143,6 @@ void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
- val = mmio_read_32(IMX_IOMUX_GPR_BASE + 0x2c);
- mmio_write_32(IMX_IOMUX_GPR_BASE + 0x2c, val | 0x3DFF0000);
-
--#if IMX_BOOT_UART_BASE
-- console_base = IMX_BOOT_UART_BASE;
--#endif
- if (console_base == 0U) {
- console_base = imx8m_uart_get_base();
- }
-diff --git a/plat/imx/imx8m/imx8mn/platform.mk b/plat/imx/imx8m/imx8mn/platform.mk
-index 46516104f16d..a6b43f213506 100644
---- a/plat/imx/imx8m/imx8mn/platform.mk
-+++ b/plat/imx/imx8m/imx8mn/platform.mk
-@@ -65,6 +65,9 @@ BL32_SIZE ?= 0x2000000
- $(eval $(call add_define,BL32_SIZE))
-
- IMX_BOOT_UART_BASE ?= 0x30890000
-+ifeq (${IMX_BOOT_UART_BASE},auto)
-+ override IMX_BOOT_UART_BASE := 0
-+endif
- $(eval $(call add_define,IMX_BOOT_UART_BASE))
-
- EL3_EXCEPTION_HANDLING := $(SDEI_SUPPORT)
-diff --git a/plat/imx/imx8m/imx8mp/imx8mp_bl31_setup.c b/plat/imx/imx8m/imx8mp/imx8mp_bl31_setup.c
-index e25668b879b3..b0a41c741c17 100644
---- a/plat/imx/imx8m/imx8mp/imx8mp_bl31_setup.c
-+++ b/plat/imx/imx8m/imx8mp/imx8mp_bl31_setup.c
-@@ -118,7 +118,7 @@ static void bl31_tzc380_setup(void)
- void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
- u_register_t arg2, u_register_t arg3)
- {
-- unsigned int console_base = 0U;
-+ unsigned int console_base = IMX_BOOT_UART_BASE;
- static console_t console;
- unsigned int val;
- unsigned int i;
-@@ -139,9 +139,6 @@ void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
- val = mmio_read_32(IMX_IOMUX_GPR_BASE + 0x2c);
- mmio_write_32(IMX_IOMUX_GPR_BASE + 0x2c, val | 0x3DFF0000);
-
--#if IMX_BOOT_UART_BASE
-- console_base = IMX_BOOT_UART_BASE;
--#endif
- if (console_base == 0U) {
- console_base = imx8m_uart_get_base();
- }
-diff --git a/plat/imx/imx8m/imx8mp/platform.mk b/plat/imx/imx8m/imx8mp/platform.mk
-index cdb504de0f3d..0169144f4a1a 100644
---- a/plat/imx/imx8m/imx8mp/platform.mk
-+++ b/plat/imx/imx8m/imx8mp/platform.mk
-@@ -156,6 +156,9 @@ BL32_SIZE ?= 0x2000000
- $(eval $(call add_define,BL32_SIZE))
-
- IMX_BOOT_UART_BASE ?= 0x30890000
-+ifeq (${IMX_BOOT_UART_BASE},auto)
-+ override IMX_BOOT_UART_BASE := 0
-+endif
- $(eval $(call add_define,IMX_BOOT_UART_BASE))
-
- EL3_EXCEPTION_HANDLING := $(SDEI_SUPPORT)
-diff --git a/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c b/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c
-index 1cb2d2a25b54..a2c81610b353 100644
---- a/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c
-+++ b/plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c
-@@ -125,7 +125,7 @@ static void bl31_tz380_setup(void)
- void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
- u_register_t arg2, u_register_t arg3)
- {
-- unsigned int console_base = 0U;
-+ unsigned int console_base = IMX_BOOT_UART_BASE;
- static console_t console;
- int i;
- /* enable CSU NS access permission */
-@@ -135,9 +135,6 @@ void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
-
- imx_aipstz_init(aipstz);
-
--#if IMX_BOOT_UART_BASE
-- console_base = IMX_BOOT_UART_BASE;
--#endif
- if (console_base == 0U) {
- console_base = imx8m_uart_get_base();
- }
-diff --git a/plat/imx/imx8m/imx8mq/platform.mk b/plat/imx/imx8m/imx8mq/platform.mk
-index 0c34c10bdcb4..6ee7d23d4882 100644
---- a/plat/imx/imx8m/imx8mq/platform.mk
-+++ b/plat/imx/imx8m/imx8mq/platform.mk
-@@ -55,6 +55,9 @@ BL32_SIZE ?= 0x2000000
- $(eval $(call add_define,BL32_SIZE))
-
- IMX_BOOT_UART_BASE ?= 0x30860000
-+ifeq (${IMX_BOOT_UART_BASE},auto)
-+ override IMX_BOOT_UART_BASE := 0
-+endif
- $(eval $(call add_define,IMX_BOOT_UART_BASE))
-
- ifeq (${SPD},trusty)
diff --git a/patches/tf-a-v2.8/0301-Release-2.8-customers-pengutronix-distrokit-20240117.patch b/patches/tf-a-v2.8/0301-Release-2.8-customers-pengutronix-distrokit-20240117.patch
deleted file mode 100644
index 1d1a9b9471bb..000000000000
--- a/patches/tf-a-v2.8/0301-Release-2.8-customers-pengutronix-distrokit-20240117.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-From: =?UTF-8?q?Leonard=20G=C3=B6hrs?= <l.goehrs@pengutronix.de>
-Date: Wed, 17 Jan 2024 11:13:01 +0100
-Subject: [PATCH] Release 2.8/customers/pengutronix/distrokit/20240117-1
-
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index 1bfff716485a..f39eb940a024 100644
---- a/Makefile
-+++ b/Makefile
-@@ -327,7 +327,7 @@ endif
- ifeq (${BUILD_STRING},)
- BUILD_STRING := $(shell git describe --always --dirty --tags 2> /dev/null)
- endif
--VERSION_STRING := v${VERSION}(${BUILD_TYPE}):${BUILD_STRING}
-+VERSION_STRING := v${VERSION}(${BUILD_TYPE}):${BUILD_STRING}-20240117-1
-
- ifeq (${AARCH32_INSTRUCTION_SET},A32)
- TF_CFLAGS_aarch32 += -marm
diff --git a/patches/tf-a-v2.8/series b/patches/tf-a-v2.8/series
deleted file mode 100644
index 7a73fce4ff94..000000000000
--- a/patches/tf-a-v2.8/series
+++ /dev/null
@@ -1,27 +0,0 @@
-# umpf-base: v2.8
-# umpf-name: 2.8/customers/pengutronix/distrokit
-# umpf-version: 2.8/customers/pengutronix/distrokit/20240117-1
-# umpf-topic: v2.8/topic/fix-build-warnings
-# umpf-hashinfo: 4730b4b80206cf2fc27787f43cefd3169a6f8a2f
-# umpf-topic-range: 9881bb93a3bc0a3ea37e9f093e09ab4b360a9e48..da1b5e74dc7c2b3e7a2d9a1adb7e23beeba079e3
-0001-build-makefile-add-helper-to-detect-linker-options.patch
-0002-feat-build-add-support-for-new-binutils-versions.patch
-# umpf-topic: v2.8/topic/imx8mq
-# umpf-hashinfo: 651310b67fd269e8118285e9ed44e8ad6cc52941
-# umpf-topic-range: da1b5e74dc7c2b3e7a2d9a1adb7e23beeba079e3..be7bcbebf5b22958e8b88564ca0865b4591263e7
-0101-feat-imx8mq-make-IMX_BOOT_UART_BASE-configurable-via.patch
-0102-feat-imx8mq-remove-empty-bl31_plat_runtime_setup.patch
-0103-feat-imx8mq-always-set-up-console.patch
-0104-refactor-imx8mq-make-use-of-setup_page_tables.patch
-0105-refactor-imx8mq-introduce-BL31_SIZE.patch
-0106-feat-imx8mq-add-BL31-PIE-support.patch
-0107-feat-imx8mq-add-support-for-gcc-12.x.patch
-# umpf-topic: v2.8/topic/uart-runtime-detection
-# umpf-hashinfo: b59093eaea88fddf1c893eb8f45a3eadf1f570cc
-# umpf-topic-range: be7bcbebf5b22958e8b88564ca0865b4591263e7..015b0b19a839d0d4beb01babbe1af81917fcfb57
-0201-feat-imx8m-detect-console-base-address-during-runtim.patch
-0202-fix-imx8m-make-IMX_BOOT_UART_BASE-autodetection-opti.patch
-# umpf-release: 2.8/customers/pengutronix/distrokit/20240117-1
-# umpf-topic-range: 015b0b19a839d0d4beb01babbe1af81917fcfb57..070499680453a1c6a358828e4bd7cf6c9629ef6b
-0301-Release-2.8-customers-pengutronix-distrokit-20240117.patch
-# umpf-end
--
2.39.2
next prev parent reply other threads:[~2024-03-15 21:12 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-15 21:12 [DistroKit] [PATCH 00/12] update and add STM32MP135F-DK support Ahmad Fatoum
2024-03-15 21:12 ` [DistroKit] [PATCH 01/12] ptxdist: migrate 2023.02.0 → 2024.03.0 Ahmad Fatoum
2024-03-16 9:26 ` Alexander Dahl
2024-03-17 19:14 ` Robert Schwebel
2024-03-21 9:37 ` Alexander Dahl
2024-03-25 18:45 ` [DistroKit] [PATCH] blspec-entry: remove superfluous file Roland Hieber
2024-03-25 20:51 ` Robert Schwebel
2024-03-15 21:12 ` Ahmad Fatoum [this message]
2024-04-24 11:15 ` [DistroKit] [PATCH 02/12] tf-a: update from v2.8 → v2.10 Alexander Dahl
2024-04-24 11:48 ` Ahmad Fatoum
2024-04-24 11:58 ` Alexander Dahl
2024-03-15 21:12 ` [DistroKit] [PATCH 03/12] v8a: imx8mq-evk: disable PCI nodes Ahmad Fatoum
2024-03-15 21:12 ` [DistroKit] [PATCH 04/12] v8a: update kernel from v6.6 → v6.8 Ahmad Fatoum
2024-03-16 11:18 ` Michael Olbrich
2024-03-16 13:09 ` Ahmad Fatoum
2024-03-15 21:12 ` [DistroKit] [PATCH 05/12] v8a: barebox: version bump v2023.12.0 → v2024.03.0 Ahmad Fatoum
2024-03-15 21:12 ` [DistroKit] [PATCH 06/12] v7a: update kernel from v6.6 → v6.8 Ahmad Fatoum
2024-03-15 21:12 ` [DistroKit] [PATCH 07/12] v7a: barebox: version bump v2024.01.0 → v2024.03.0 Ahmad Fatoum
2024-03-15 21:12 ` [DistroKit] [PATCH 08/12] v7a: barebox: enable STM32MP135F-DK support Ahmad Fatoum
2024-03-15 21:12 ` [DistroKit] [PATCH 09/12] v7a: build OP-TEE for STM32MP13 Ahmad Fatoum
2024-03-15 21:12 ` [DistroKit] [PATCH 10/12] v7a: stm32mp: add TF-A recipe " Ahmad Fatoum
2024-04-26 8:03 ` Alexander Dahl
2024-03-15 21:12 ` [DistroKit] [PATCH 11/12] v7a: kernel: enable STM32MP135F-DK support Ahmad Fatoum
2024-03-18 13:07 ` Michael Olbrich
2024-03-18 14:23 ` Robert Schwebel
2024-03-15 21:12 ` [DistroKit] [PATCH 12/12] v7a: stm32mp: add image recipe for STM32MP135F-DK Ahmad Fatoum
2024-03-17 19:27 ` [DistroKit] [PATCH 00/12] update and add STM32MP135F-DK support Robert Schwebel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240315211240.3016716-3-a.fatoum@pengutronix.de \
--to=a.fatoum@pengutronix.de \
--cc=distrokit@pengutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox