summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authortang yuantian <Yuantian.Tang@freescale.com>2014-12-17 12:58:05 +0800
committerYork Sun <yorksun@freescale.com>2015-01-24 09:12:32 -0600
commit41ba57d0c7968506ddcc71604bd39131acf6ee23 (patch)
treebf26f87db9187364bb16418ce264c5d13fb03f84 /arch
parent55d53ab45e3be3442c7b8555ff059df1d28f2838 (diff)
downloadblackbird-obmc-uboot-41ba57d0c7968506ddcc71604bd39131acf6ee23.tar.gz
blackbird-obmc-uboot-41ba57d0c7968506ddcc71604bd39131acf6ee23.zip
fsl/ls1021qds: Add deep sleep support
Add deep sleep support on Freescale LS1021QDS platform. Signed-off-by: Tang Yuantian <Yuantian.Tang@freescale.com> [York Sun: Fix conflict in fdt.c] Reviewed-by: York Sun <yorksun@freescale.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/cpu/armv7/ls102xa/fdt.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/arch/arm/cpu/armv7/ls102xa/fdt.c b/arch/arm/cpu/armv7/ls102xa/fdt.c
index e0288b8c3f..71a175392f 100644
--- a/arch/arm/cpu/armv7/ls102xa/fdt.c
+++ b/arch/arm/cpu/armv7/ls102xa/fdt.c
@@ -124,6 +124,25 @@ void ft_cpu_setup(void *blob, bd_t *bd)
do_fixup_by_compat_u32(blob, "fsl,qoriq-sysclk-2.0",
"clock-frequency", CONFIG_SYS_CLK_FREQ, 1);
+#if defined(CONFIG_DEEP_SLEEP) && defined(CONFIG_SD_BOOT)
+#define UBOOT_HEAD_LEN 0x1000
+ /*
+ * Reserved memory in SD boot deep sleep case.
+ * Second stage uboot binary and malloc space should be reserved.
+ * If the memory they occupied has not been reserved, then this
+ * space would be used by kernel and overwritten in uboot when
+ * deep sleep resume, which cause deep sleep failed.
+ * Since second uboot binary has a head, that space need to be
+ * reserved either(assuming its size is less than 0x1000).
+ */
+ off = fdt_add_mem_rsv(blob, CONFIG_SYS_TEXT_BASE - UBOOT_HEAD_LEN,
+ CONFIG_SYS_MONITOR_LEN + CONFIG_SYS_SPL_MALLOC_SIZE +
+ UBOOT_HEAD_LEN);
+ if (off < 0)
+ printf("Failed to reserve memory for SD boot deep sleep: %s\n",
+ fdt_strerror(off));
+#endif
+
#if defined(CONFIG_FSL_ESDHC)
fdt_fixup_esdhc(blob, bd);
#endif
OpenPOWER on IntegriCloud