diff options
author | Kumar Gala <galak@kernel.crashing.org> | 2008-09-22 19:11:11 (GMT) |
---|---|---|
committer | Wolfgang Denk <wd@denx.de> | 2008-10-18 19:54:04 (GMT) |
commit | 7c0d4a7508d252d2d7c137eeb376814132dda30f (patch) | |
tree | 305460a7a5f0d9c30ea94b7e6382129a9900750e /board/freescale/mpc8536ds/mpc8536ds.c | |
parent | 54e091d3b603a3332c619199ca83a07e95960da4 (diff) | |
download | u-boot-7c0d4a7508d252d2d7c137eeb376814132dda30f.tar.xz |
85xx: Improve flash remapping on MPC8572DS & MPC8536DS
Changing the flash from cacheable to cache-inhibited was taking a significant
amount of time due to the fact that we were iterating over the full 256M of
flash. Instead we can just flush the L1 d-cache and invalidate the i-cache.
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Diffstat (limited to 'board/freescale/mpc8536ds/mpc8536ds.c')
-rw-r--r-- | board/freescale/mpc8536ds/mpc8536ds.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/board/freescale/mpc8536ds/mpc8536ds.c b/board/freescale/mpc8536ds/mpc8536ds.c index f634e17..5b252d1 100644 --- a/board/freescale/mpc8536ds/mpc8536ds.c +++ b/board/freescale/mpc8536ds/mpc8536ds.c @@ -25,6 +25,7 @@ #include <pci.h> #include <asm/processor.h> #include <asm/mmu.h> +#include <asm/cache.h> #include <asm/immap_85xx.h> #include <asm/immap_fsl_pci.h> #include <asm/fsl_ddr_sdram.h> @@ -441,7 +442,6 @@ pci_init_board(void) int board_early_init_r(void) { - unsigned int i; const unsigned int flashbase = CONFIG_SYS_FLASH_BASE; const u8 flash_esel = 1; @@ -450,11 +450,9 @@ int board_early_init_r(void) * so that flash can be erased properly. */ - /* Invalidate any remaining lines of the flash from caches. */ - for (i = 0; i < 256*1024*1024; i+=32) { - asm volatile ("dcbi %0,%1": : "b" (flashbase), "r" (i)); - asm volatile ("icbi %0,%1": : "b" (flashbase), "r" (i)); - } + /* Flush d-cache and invalidate i-cache of any FLASH data */ + flush_dcache(); + invalidate_icache(); /* invalidate existing TLB entry for flash + promjet */ disable_tlb(flash_esel); |