summaryrefslogtreecommitdiffstats
path: root/patches/tf-a-v2.10/0003-imx-disable-DRAM-retention-by-default.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/tf-a-v2.10/0003-imx-disable-DRAM-retention-by-default.patch')
-rw-r--r--patches/tf-a-v2.10/0003-imx-disable-DRAM-retention-by-default.patch174
1 files changed, 174 insertions, 0 deletions
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 0000000..7d2b361
--- /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
+