Message ID | 1471418009-12660-4-git-send-email-hs@denx.de |
---|---|
State | Accepted |
Commit | 6ed67659b93f9b3190558845c20faea1447ae4ce |
Delegated to: | Andreas Bießmann |
Headers | show |
On 17 August 2016 at 01:13, Heiko Schocher <hs@denx.de> wrote: > add at least icache support for at91 based boards. > This speeds up NOR flash access on an at91sam9g15 > based board from 15.2 seconds reading 8 MiB from > a SPI NOR flash to 5.7 seconds. > > Signed-off-by: Heiko Schocher <hs@denx.de> > > --- > removed the dcache enable in the gurnard board. Comment > says that enabling dcache breaks Ethernet MAC ... why > is it then enabled? > > @Simon: If you need dache enabled for the gurnard board, > arch/arm/mach-at91/arm926ejs/cache.c is the correct place > for doing this, I think. Please add there the common functions > needed for dcache support on at91 plattforms and undef in > the gurnard board configuration CONFIG_SYS_DCACHE_OFF. > > arch/arm/mach-at91/arm926ejs/Makefile | 1 + > arch/arm/mach-at91/arm926ejs/cache.c | 29 +++++++++++++++++++++++++++++ > board/bluewater/gurnard/gurnard.c | 6 ------ > 3 files changed, 30 insertions(+), 6 deletions(-) > create mode 100644 arch/arm/mach-at91/arm926ejs/cache.c Reviewed-by: Simon Glass <sjg@chromium.org>
On 17.08.16 09:13, Heiko Schocher wrote: > add at least icache support for at91 based boards. > This speeds up NOR flash access on an at91sam9g15 > based board from 15.2 seconds reading 8 MiB from > a SPI NOR flash to 5.7 seconds. > > Signed-off-by: Heiko Schocher <hs@denx.de> Reviewed-by: Andreas Bießmann <andreas@biessmann.org>
Dear Heiko Schocher, Heiko Schocher <hs@denx.de> writes: >add at least icache support for at91 based boards. >This speeds up NOR flash access on an at91sam9g15 >based board from 15.2 seconds reading 8 MiB from >a SPI NOR flash to 5.7 seconds. > >Signed-off-by: Heiko Schocher <hs@denx.de> >Reviewed-by: Simon Glass <sjg@chromium.org> >Reviewed-by: Andreas Bießmann <andreas@biessmann.org> >--- >removed the dcache enable in the gurnard board. Comment >says that enabling dcache breaks Ethernet MAC ... why >is it then enabled? > >@Simon: If you need dache enabled for the gurnard board, >arch/arm/mach-at91/arm926ejs/cache.c is the correct place >for doing this, I think. Please add there the common functions >needed for dcache support on at91 plattforms and undef in >the gurnard board configuration CONFIG_SYS_DCACHE_OFF. > > arch/arm/mach-at91/arm926ejs/Makefile | 1 + > arch/arm/mach-at91/arm926ejs/cache.c | 29 +++++++++++++++++++++++++++++ > board/bluewater/gurnard/gurnard.c | 6 ------ > 3 files changed, 30 insertions(+), 6 deletions(-) > create mode 100644 arch/arm/mach-at91/arm926ejs/cache.c applied to u-boot-atmel/master, thanks! Best regards, Andreas Bießmann
diff --git a/arch/arm/mach-at91/arm926ejs/Makefile b/arch/arm/mach-at91/arm926ejs/Makefile index ddc323f..d36e15a 100644 --- a/arch/arm/mach-at91/arm926ejs/Makefile +++ b/arch/arm/mach-at91/arm926ejs/Makefile @@ -18,6 +18,7 @@ obj-$(CONFIG_AT91SAM9N12) += at91sam9n12_devices.o obj-$(CONFIG_AT91SAM9X5) += at91sam9x5_devices.o obj-$(CONFIG_AT91_EFLASH) += eflash.o obj-$(CONFIG_AT91_LED) += led.o +obj-y += cache.o obj-y += clock.o obj-y += cpu.o obj-y += reset.o diff --git a/arch/arm/mach-at91/arm926ejs/cache.c b/arch/arm/mach-at91/arm926ejs/cache.c new file mode 100644 index 0000000..8813706 --- /dev/null +++ b/arch/arm/mach-at91/arm926ejs/cache.c @@ -0,0 +1,29 @@ +/* + * (C) Copyright 2016 + * Heiko Schocher, DENX Software Engineering, hs@denx.de. + * + * SPDX-License-Identifier: GPL-2.0+ + */ +#include <linux/types.h> +#include <common.h> + +void enable_caches(void) +{ +#ifndef CONFIG_SYS_ICACHE_OFF + icache_enable(); +#endif +} + +#ifndef CONFIG_SYS_ICACHE_OFF +/* Invalidate entire I-cache and branch predictor array */ +void invalidate_icache_all(void) +{ + unsigned long i = 0; + + asm ("mcr p15, 0, %0, c7, c5, 0" : : "r" (i)); +} +#else +void invalidate_icache_all(void) +{ +} +#endif diff --git a/board/bluewater/gurnard/gurnard.c b/board/bluewater/gurnard/gurnard.c index 2a36d29..08b1401 100644 --- a/board/bluewater/gurnard/gurnard.c +++ b/board/bluewater/gurnard/gurnard.c @@ -414,12 +414,6 @@ void reset_phy(void) { } -/* This breaks the Ethernet MAC at present */ -void enable_caches(void) -{ - dcache_enable(); -} - /* SPI chip select control - only used for FPGA programming */ #ifdef CONFIG_ATMEL_SPI
add at least icache support for at91 based boards. This speeds up NOR flash access on an at91sam9g15 based board from 15.2 seconds reading 8 MiB from a SPI NOR flash to 5.7 seconds. Signed-off-by: Heiko Schocher <hs@denx.de> --- removed the dcache enable in the gurnard board. Comment says that enabling dcache breaks Ethernet MAC ... why is it then enabled? @Simon: If you need dache enabled for the gurnard board, arch/arm/mach-at91/arm926ejs/cache.c is the correct place for doing this, I think. Please add there the common functions needed for dcache support on at91 plattforms and undef in the gurnard board configuration CONFIG_SYS_DCACHE_OFF. arch/arm/mach-at91/arm926ejs/Makefile | 1 + arch/arm/mach-at91/arm926ejs/cache.c | 29 +++++++++++++++++++++++++++++ board/bluewater/gurnard/gurnard.c | 6 ------ 3 files changed, 30 insertions(+), 6 deletions(-) create mode 100644 arch/arm/mach-at91/arm926ejs/cache.c