diff options
author | York Sun <york.sun@nxp.com> | 2017-03-06 09:02:34 -0800 |
---|---|---|
committer | York Sun <york.sun@nxp.com> | 2017-03-14 08:44:03 -0700 |
commit | 4961eafc25d0bfa7ac5f88ec78a7f7501c202fbb (patch) | |
tree | f1e66358f067240368b3b3b70514f7b8b3c49dc5 /board/freescale | |
parent | 7f9b9f318ff152bd8d2e8b573708e2bdc088c1b1 (diff) |
armv8: layerscape: Update early MMU for DDR after initialization
In early MMU table, DDR has to be mapped as device memory to avoid
speculative access. After DDR is initialized, it needs to be updated
to normal memory to allow code execution. To simplify the code,
dram_init() is moved into a common file as a weak function.
Signed-off-by: York Sun <york.sun@nxp.com>
Diffstat (limited to 'board/freescale')
-rw-r--r-- | board/freescale/ls1012afrdm/ls1012afrdm.c | 5 | ||||
-rw-r--r-- | board/freescale/ls1012aqds/ls1012aqds.c | 5 | ||||
-rw-r--r-- | board/freescale/ls1012ardb/ls1012ardb.c | 5 | ||||
-rw-r--r-- | board/freescale/ls1043aqds/ls1043aqds.c | 5 | ||||
-rw-r--r-- | board/freescale/ls1043ardb/ls1043ardb.c | 7 | ||||
-rw-r--r-- | board/freescale/ls1046aqds/ls1046aqds.c | 5 | ||||
-rw-r--r-- | board/freescale/ls1046ardb/ls1046ardb.c | 7 | ||||
-rw-r--r-- | board/freescale/ls2080a/ls2080a.c | 7 | ||||
-rw-r--r-- | board/freescale/ls2080aqds/ls2080aqds.c | 7 | ||||
-rw-r--r-- | board/freescale/ls2080ardb/ls2080ardb.c | 8 |
10 files changed, 26 insertions, 35 deletions
diff --git a/board/freescale/ls1012afrdm/ls1012afrdm.c b/board/freescale/ls1012afrdm/ls1012afrdm.c index 1f3adc1e88..25d22d25bf 100644 --- a/board/freescale/ls1012afrdm/ls1012afrdm.c +++ b/board/freescale/ls1012afrdm/ls1012afrdm.c @@ -12,6 +12,7 @@ #ifdef CONFIG_FSL_LS_PPA #include <asm/arch/ppa.h> #endif +#include <asm/arch/mmu.h> #include <asm/arch/soc.h> #include <hwconfig.h> #include <environment.h> @@ -48,6 +49,10 @@ int dram_init(void) mmdc_init(&mparam); gd->ram_size = CONFIG_SYS_SDRAM_SIZE; +#if !defined(CONFIG_SPL) || defined(CONFIG_SPL_BUILD) + /* This will break-before-make MMU for DDR */ + update_early_mmu_table(); +#endif return 0; } diff --git a/board/freescale/ls1012aqds/ls1012aqds.c b/board/freescale/ls1012aqds/ls1012aqds.c index fbda504c04..97ab3400ad 100644 --- a/board/freescale/ls1012aqds/ls1012aqds.c +++ b/board/freescale/ls1012aqds/ls1012aqds.c @@ -14,6 +14,7 @@ #include <asm/arch/ppa.h> #endif #include <asm/arch/fdt.h> +#include <asm/arch/mmu.h> #include <asm/arch/soc.h> #include <ahci.h> #include <hwconfig.h> @@ -76,6 +77,10 @@ int dram_init(void) mmdc_init(&mparam); gd->ram_size = CONFIG_SYS_SDRAM_SIZE; +#if !defined(CONFIG_SPL) || defined(CONFIG_SPL_BUILD) + /* This will break-before-make MMU for DDR */ + update_early_mmu_table(); +#endif return 0; } diff --git a/board/freescale/ls1012ardb/ls1012ardb.c b/board/freescale/ls1012ardb/ls1012ardb.c index 2a85a1f8f7..a23a23be1f 100644 --- a/board/freescale/ls1012ardb/ls1012ardb.c +++ b/board/freescale/ls1012ardb/ls1012ardb.c @@ -12,6 +12,7 @@ #ifdef CONFIG_FSL_LS_PPA #include <asm/arch/ppa.h> #endif +#include <asm/arch/mmu.h> #include <asm/arch/soc.h> #include <hwconfig.h> #include <ahci.h> @@ -80,6 +81,10 @@ int dram_init(void) mmdc_init(&mparam); gd->ram_size = CONFIG_SYS_SDRAM_SIZE; +#if !defined(CONFIG_SPL) || defined(CONFIG_SPL_BUILD) + /* This will break-before-make MMU for DDR */ + update_early_mmu_table(); +#endif return 0; } diff --git a/board/freescale/ls1043aqds/ls1043aqds.c b/board/freescale/ls1043aqds/ls1043aqds.c index 8835a49bb5..6507c09143 100644 --- a/board/freescale/ls1043aqds/ls1043aqds.c +++ b/board/freescale/ls1043aqds/ls1043aqds.c @@ -11,6 +11,7 @@ #include <asm/arch/clock.h> #include <asm/arch/fsl_serdes.h> #include <asm/arch/fdt.h> +#include <asm/arch/mmu.h> #include <asm/arch/soc.h> #include <ahci.h> #include <hwconfig.h> @@ -153,6 +154,10 @@ int dram_init(void) */ select_i2c_ch_pca9547(I2C_MUX_CH_DEFAULT); gd->ram_size = initdram(0); +#if !defined(CONFIG_SPL) || defined(CONFIG_SPL_BUILD) + /* This will break-before-make MMU for DDR */ + update_early_mmu_table(); +#endif return 0; } diff --git a/board/freescale/ls1043ardb/ls1043ardb.c b/board/freescale/ls1043ardb/ls1043ardb.c index e213128c1b..2333843958 100644 --- a/board/freescale/ls1043ardb/ls1043ardb.c +++ b/board/freescale/ls1043ardb/ls1043ardb.c @@ -67,13 +67,6 @@ int checkboard(void) return 0; } -int dram_init(void) -{ - gd->ram_size = initdram(0); - - return 0; -} - int board_early_init_f(void) { fsl_lsch2_early_init_f(); diff --git a/board/freescale/ls1046aqds/ls1046aqds.c b/board/freescale/ls1046aqds/ls1046aqds.c index 552365b9d8..af3f70a38b 100644 --- a/board/freescale/ls1046aqds/ls1046aqds.c +++ b/board/freescale/ls1046aqds/ls1046aqds.c @@ -11,6 +11,7 @@ #include <asm/arch/clock.h> #include <asm/arch/fsl_serdes.h> #include <asm/arch/fdt.h> +#include <asm/arch/mmu.h> #include <asm/arch/soc.h> #include <ahci.h> #include <hwconfig.h> @@ -149,6 +150,10 @@ int dram_init(void) */ select_i2c_ch_pca9547(I2C_MUX_CH_DEFAULT); gd->ram_size = initdram(0); +#if !defined(CONFIG_SPL) || defined(CONFIG_SPL_BUILD) + /* This will break-before-make MMU for DDR */ + update_early_mmu_table(); +#endif return 0; } diff --git a/board/freescale/ls1046ardb/ls1046ardb.c b/board/freescale/ls1046ardb/ls1046ardb.c index 33a58cf440..02b6c4c375 100644 --- a/board/freescale/ls1046ardb/ls1046ardb.c +++ b/board/freescale/ls1046ardb/ls1046ardb.c @@ -56,13 +56,6 @@ int checkboard(void) return 0; } -int dram_init(void) -{ - gd->ram_size = initdram(0); - - return 0; -} - int board_early_init_f(void) { fsl_lsch2_early_init_f(); diff --git a/board/freescale/ls2080a/ls2080a.c b/board/freescale/ls2080a/ls2080a.c index 21ea70bd4d..9e7701d81f 100644 --- a/board/freescale/ls2080a/ls2080a.c +++ b/board/freescale/ls2080a/ls2080a.c @@ -49,13 +49,6 @@ void detail_board_ddr_info(void) #endif } -int dram_init(void) -{ - gd->ram_size = initdram(0); - - return 0; -} - #if defined(CONFIG_ARCH_MISC_INIT) int arch_misc_init(void) { diff --git a/board/freescale/ls2080aqds/ls2080aqds.c b/board/freescale/ls2080aqds/ls2080aqds.c index ec53992bcc..8abf64add8 100644 --- a/board/freescale/ls2080aqds/ls2080aqds.c +++ b/board/freescale/ls2080aqds/ls2080aqds.c @@ -254,13 +254,6 @@ void detail_board_ddr_info(void) #endif } -int dram_init(void) -{ - gd->ram_size = initdram(0); - - return 0; -} - #if defined(CONFIG_ARCH_MISC_INIT) int arch_misc_init(void) { diff --git a/board/freescale/ls2080ardb/ls2080ardb.c b/board/freescale/ls2080ardb/ls2080ardb.c index 7a4c6a3a5c..4c01f560bc 100644 --- a/board/freescale/ls2080ardb/ls2080ardb.c +++ b/board/freescale/ls2080ardb/ls2080ardb.c @@ -17,6 +17,7 @@ #include <environment.h> #include <efi_loader.h> #include <i2c.h> +#include <asm/arch/mmu.h> #include <asm/arch/soc.h> #include <fsl_sec.h> @@ -219,13 +220,6 @@ void detail_board_ddr_info(void) #endif } -int dram_init(void) -{ - gd->ram_size = initdram(0); - - return 0; -} - #if defined(CONFIG_ARCH_MISC_INIT) int arch_misc_init(void) { |