DistroKit Mailinglist
 help / color / mirror / Atom feed
From: Alexander Dahl <ada@thorsis.com>
To: distrokit@pengutronix.de
Cc: Ahmad Fatoum <a.fatoum@pengutronix.de>
Subject: Re: [DistroKit]  [PATCH 02/12] tf-a: update from v2.8 → v2.10
Date: Wed, 24 Apr 2024 13:15:18 +0200	[thread overview]
Message-ID: <12425358.O9o76ZdvQC@ada-pc> (raw)
In-Reply-To: <20240315211240.3016716-3-a.fatoum@pengutronix.de>

Hello Ahmad,

Am Freitag, 15. März 2024, 22:12:30 CEST schrieb Ahmad Fatoum:
> 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.MX8M
> Q.patch create mode 100644
> patches/tf-a-v2.10/0001-fix-pmu-fix-breakage-on-ARMv7-CPUs-with-SP_min-as-B
> L.patch create mode 100644
> patches/tf-a-v2.10/0002-feat-imx8mq-detect-console-base-address-during-runt
> i.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-runt
> i.patch create mode 100644
> patches/tf-a-v2.10/0201-fix-pmu-fix-breakage-on-ARMv7-CPUs-with-SP_min-as-B
> L.patch create mode 100644
> patches/tf-a-v2.10/0301-Release-2.10-customers-pengutronix-distrokit-202403
> 1.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.p
> atch delete mode 100644
> patches/tf-a-v2.8/0002-feat-build-add-support-for-new-binutils-versions.pat
> ch 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.pat
> ch 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.g
> it/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.g
> it/snapshot" -PTXCONF_TF_A_VERSION="v2.8"
> -PTXCONF_TF_A_MD5="784a1e94d4b1e938927372e3bc12d12e"
> +PTXCONF_TF_A_VERSION="v2.10"
> +PTXCONF_TF_A_MD5="641f42080967e05d687ef2fa9f8f3bc3"

Download fails like this:


-------------------------
target: tf-a-v2.10.tar.gz
-------------------------

--2024-04-24 13:09:40--  https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/snapshot/v2.10.tar.gz
Resolving git.trustedfirmware.org (git.trustedfirmware.org)... 51.159.18.17
Connecting to git.trustedfirmware.org (git.trustedfirmware.org)|51.159.18.17|:
443... connected.
HTTP request sent, awaiting response... 401 Unauthorized

Username/Password Authentication Failed.
--2024-04-24 13:09:40--  http://www.pengutronix.de/software/ptxdist/temporary-src/tf-a-v2.10.tar.gz
Resolving www.pengutronix.de (www.pengutronix.de)... 2a01:4f9:2a:
2c17:5054:ff:fe65:8c93, 95.216.103.100
Connecting to www.pengutronix.de (www.pengutronix.de)|2a01:4f9:2a:
2c17:5054:ff:fe65:8c93|:80... connected.
HTTP request sent, awaiting response... 307 Temporary Redirect
Location: https://www.pengutronix.de/software/ptxdist/temporary-src/tf-a-v2.10.tar.gz [following]
--2024-04-24 13:09:40--  https://www.pengutronix.de/software/ptxdist/
temporary-src/tf-a-v2.10.tar.gz
Connecting to www.pengutronix.de (www.pengutronix.de)|2a01:4f9:2a:
2c17:5054:ff:fe65:8c93|:443... connected.
HTTP request sent, awaiting response... 307 Temporary Redirect
Location: https://public.pengutronix.de/mirror/software/ptxdist/temporary-src/
tf-a-v2.10.tar.gz [following]
--2024-04-24 13:09:41--  https://public.pengutronix.de/mirror/software/
ptxdist/temporary-src/tf-a-v2.10.tar.gz
Resolving public.pengutronix.de (public.pengutronix.de)... 2a01:4f9:2a:
2c17:5054:ff:fe65:8c93, 95.216.103.100
Connecting to public.pengutronix.de (public.pengutronix.de)|2a01:4f9:2a:
2c17:5054:ff:fe65:8c93|:443... connected.
HTTP request sent, awaiting response... 404 Not Found
2024-04-24 13:09:41 ERROR 404: Not Found.


Could not download package
URL: https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/snapshot/
v2.10.tar.gz

make: *** [/usr/local/lib/ptxdist-2024.03.0/rules/post/
ptxd_make_world_get.make:16: /home/adahl/mnt/bagend-src_archive/tf-a-
v2.10.tar.gz] Error 1


Greets
Alex

>  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.MX
> 8MQ.patch
> b/patches/tf-a-v2.10/0001-fix-imx-disable-DRAM-retention-by-default-on-i.MX
> 8MQ.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.MX
> 8MQ.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-ru
> nti.patch
> b/patches/tf-a-v2.10/0002-feat-imx8mq-detect-console-base-address-during-ru
> nti.patch new file mode 100644
> index 000000000000..c48833730753
> --- /dev/null
> +++
> b/patches/tf-a-v2.10/0002-feat-imx8mq-detect-console-base-address-during-ru
> nti.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-ru
> nti.patch
> b/patches/tf-a-v2.10/0101-feat-imx8mq-detect-console-base-address-during-ru
> nti.patch new file mode 100644
> index 000000000000..d375a45c1598
> --- /dev/null
> +++
> b/patches/tf-a-v2.10/0101-feat-imx8mq-detect-console-base-address-during-ru
> nti.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-2024
> 031.patch
> b/patches/tf-a-v2.10/0301-Release-2.10-customers-pengutronix-distrokit-2024
> 031.patch new file mode 100644
> index 000000000000..58cbc06803cb
> --- /dev/null
> +++
> b/patches/tf-a-v2.10/0301-Release-2.10-customers-pengutronix-distrokit-2024
> 031.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..6c0660bf6047f288628c282e44b9b1b06
> bd1d33a +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..ec9b46be3c0c561ed61f113dc3c15085d
> bce5bf7 +0101-feat-imx8mq-detect-console-base-address-during-runti.patch
> +# umpf-topic: v2.10/topic/stm32mp1
> +# umpf-hashinfo: 44f35b67ee4f89b05408ecfe7b4b2c1ae5366b72
> +# umpf-topic-range:
> ec9b46be3c0c561ed61f113dc3c15085dbce5bf7..10dfac53fdfff2f98d8140863f583df47
> 2483f1d +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..288664026c3117bda3f8f2275e76bb97b
> e116b89 +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.p
> atch
> b/patches/tf-a-v2.8/0002-feat-build-add-support-for-new-binutils-versions.p
> atch deleted file mode 100644
> index b254a578d7d4..000000000000
> ---
> a/patches/tf-a-v2.8/0002-feat-build-add-support-for-new-binutils-versions.p
> atch +++ /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=ba951afb99912da01
> a6e8434126b8fac7aa75107 - -
> https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=0d38576a34ec64a1b
> 4500c9277a8e9d0f07e6774 -
> -Fix it in a similar way to what the Linux kernel does, see:
> -https://lore.kernel.org/all/20220810222442.2296651-1-ndesaulniers@google.co
> m/ -
> -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-v
> ia.patch
> b/patches/tf-a-v2.8/0101-feat-imx8mq-make-IMX_BOOT_UART_BASE-configurable-v
> ia.patch deleted file mode 100644
> index 958b7fda325a..000000000000
> ---
> a/patches/tf-a-v2.8/0101-feat-imx8mq-make-IMX_BOOT_UART_BASE-configurable-v
> ia.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.p
> atch
> b/patches/tf-a-v2.8/0102-feat-imx8mq-remove-empty-bl31_plat_runtime_setup.p
> atch deleted file mode 100644
> index 0b1bc7e8c82b..000000000000
> ---
> a/patches/tf-a-v2.8/0102-feat-imx8mq-remove-empty-bl31_plat_runtime_setup.p
> atch +++ /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.patc
> h
> b/patches/tf-a-v2.8/0104-refactor-imx8mq-make-use-of-setup_page_tables.patc
> h deleted file mode 100644
> index 6cf2dc18deb2..000000000000
> ---
> a/patches/tf-a-v2.8/0104-refactor-imx8mq-make-use-of-setup_page_tables.patc
> h +++ /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-runt
> im.patch
> b/patches/tf-a-v2.8/0201-feat-imx8m-detect-console-base-address-during-runt
> im.patch deleted file mode 100644
> index 68f36aca7aa1..000000000000
> ---
> a/patches/tf-a-v2.8/0201-feat-imx8m-detect-console-base-address-during-runt
> im.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-op
> ti.patch
> b/patches/tf-a-v2.8/0202-fix-imx8m-make-IMX_BOOT_UART_BASE-autodetection-op
> ti.patch deleted file mode 100644
> index 9fae10905edd..000000000000
> ---
> a/patches/tf-a-v2.8/0202-fix-imx8m-make-IMX_BOOT_UART_BASE-autodetection-op
> ti.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-202401
> 17.patch
> b/patches/tf-a-v2.8/0301-Release-2.8-customers-pengutronix-distrokit-202401
> 17.patch deleted file mode 100644
> index 1d1a9b9471bb..000000000000
> ---
> a/patches/tf-a-v2.8/0301-Release-2.8-customers-pengutronix-distrokit-202401
> 17.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..da1b5e74dc7c2b3e7a2d9a1adb7e23bee
> ba079e3 -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..be7bcbebf5b22958e8b88564ca0865b45
> 91263e7 -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..015b0b19a839d0d4beb01babbe1af8191
> 7fcfb57 -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..070499680453a1c6a358828e4bd7cf6c9
> 629ef6b -0301-Release-2.8-customers-pengutronix-distrokit-20240117.patch
> -# umpf-end







  reply	other threads:[~2024-04-24 11:15 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 ` [DistroKit] [PATCH 02/12] tf-a: update from v2.8 → v2.10 Ahmad Fatoum
2024-04-24 11:15   ` Alexander Dahl [this message]
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=12425358.O9o76ZdvQC@ada-pc \
    --to=ada@thorsis.com \
    --cc=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