diff options
author | tang yuantian <Yuantian.Tang@freescale.com> | 2014-12-17 12:58:05 +0800 |
---|---|---|
committer | York Sun <yorksun@freescale.com> | 2015-01-24 09:12:32 -0600 |
commit | 41ba57d0c7968506ddcc71604bd39131acf6ee23 (patch) | |
tree | bf26f87db9187364bb16418ce264c5d13fb03f84 /board/freescale/ls1021aqds/ls1021aqds.c | |
parent | 55d53ab45e3be3442c7b8555ff059df1d28f2838 (diff) | |
download | u-boot-imx-41ba57d0c7968506ddcc71604bd39131acf6ee23.zip u-boot-imx-41ba57d0c7968506ddcc71604bd39131acf6ee23.tar.gz u-boot-imx-41ba57d0c7968506ddcc71604bd39131acf6ee23.tar.bz2 |
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 'board/freescale/ls1021aqds/ls1021aqds.c')
-rw-r--r-- | board/freescale/ls1021aqds/ls1021aqds.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/board/freescale/ls1021aqds/ls1021aqds.c b/board/freescale/ls1021aqds/ls1021aqds.c index f2dda22..20eade4 100644 --- a/board/freescale/ls1021aqds/ls1021aqds.c +++ b/board/freescale/ls1021aqds/ls1021aqds.c @@ -20,6 +20,7 @@ #include <fsl_sec.h> #include <spl.h> +#include "../common/sleep.h" #include "../common/qixis.h" #include "ls1021aqds_qixis.h" #ifdef CONFIG_U_QE @@ -218,6 +219,11 @@ int board_early_init_f(void) * allow barrier transaction to DDR again */ out_le32(&cci->ctrl_ord, CCI400_CTRLORD_TERM_BARRIER); +#if defined(CONFIG_DEEP_SLEEP) + if (is_warm_boot()) + fsl_dp_disable_console(); +#endif + return 0; } @@ -251,6 +257,11 @@ void board_init_f(ulong dummy) get_clocks(); +#if defined(CONFIG_DEEP_SLEEP) + if (is_warm_boot()) + fsl_dp_disable_console(); +#endif + preloader_console_init(); #ifdef CONFIG_SPL_I2C_SUPPORT @@ -544,6 +555,21 @@ int board_init(void) return 0; } +#if defined(CONFIG_DEEP_SLEEP) +void board_sleep_prepare(void) +{ + struct ccsr_cci400 __iomem *cci = (void *)CONFIG_SYS_CCI400_ADDR; + + /* Set CCI-400 control override register to + * enable barrier transaction */ + out_le32(&cci->ctrl_ord, CCI400_CTRLORD_EN_BARRIER); + +#ifdef CONFIG_LS102XA_NS_ACCESS + enable_devices_ns_access(ns_dev, ARRAY_SIZE(ns_dev)); +#endif +} +#endif + int ft_board_setup(void *blob, bd_t *bd) { ft_cpu_setup(blob, bd); |