All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marek Vasut <marex@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 08/11] pxa: add support for D- and I- caches
Date: Mon, 21 Mar 2016 02:51:41 +0100	[thread overview]
Message-ID: <56EF53AD.5050709@denx.de> (raw)
In-Reply-To: <1458524230-10827-8-git-send-email-anarsoul@gmail.com>

On 03/21/2016 02:37 AM, Vasily Khoruzhick wrote:
> Tested with OHCI and pxafb drivers - no issues found
> 
> Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
> ---
>  arch/arm/cpu/pxa/Makefile    |  1 +
>  arch/arm/cpu/pxa/cache.c     | 62 ++++++++++++++++++++++++++++++++++++++++++++
>  arch/arm/cpu/pxa/pxa2xx.c    | 10 +++++++
>  include/configs/pxa-common.h |  1 +
>  4 files changed, 74 insertions(+)
>  create mode 100644 arch/arm/cpu/pxa/cache.c
> 
> diff --git a/arch/arm/cpu/pxa/Makefile b/arch/arm/cpu/pxa/Makefile
> index 3ee08cd..79fcb73 100644
> --- a/arch/arm/cpu/pxa/Makefile
> +++ b/arch/arm/cpu/pxa/Makefile
> @@ -14,3 +14,4 @@ obj-y	+= cpuinfo.o
>  obj-y	+= timer.o
>  obj-y	+= usb.o
>  obj-y	+= relocate.o
> +obj-y	+= cache.o
> diff --git a/arch/arm/cpu/pxa/cache.c b/arch/arm/cpu/pxa/cache.c
> new file mode 100644
> index 0000000..7aba112
> --- /dev/null
> +++ b/arch/arm/cpu/pxa/cache.c
> @@ -0,0 +1,62 @@
> +/*
> + * (C) Copyright 2016 Vasily Khoruzhick <anarsoul@gmail.com>
> + *
> + * SPDX-License-Identifier:	GPL-2.0+
> + */
> +
> +#include <linux/types.h>
> +#include <common.h>
> +
> +#ifndef CONFIG_SYS_DCACHE_OFF
> +
> +#ifndef CONFIG_SYS_CACHELINE_SIZE
> +#define CONFIG_SYS_CACHELINE_SIZE	32

This condition where CONFIG_SYS_CACHELINE_SIZE is undefined must not
ever happen.

> +#endif
> +
> +void invalidate_dcache_all(void)
> +{
> +	/* Flush/Invalidate I cache */
> +	asm volatile("mcr p15, 0, %0, c7, c5, 0\n" : : "r"(0));
> +	/* Flush/Invalidate D cache */
> +	asm volatile("mcr p15, 0, %0, c7, c6, 0\n" : : "r"(0));
> +}
> +
> +void flush_dcache_all(void)
> +{
> +	return invalidate_dcache_all();
> +}
> +
> +void invalidate_dcache_range(unsigned long start, unsigned long stop)
> +{
> +	start &= ~(CONFIG_SYS_CACHELINE_SIZE - 1);
> +	stop &= ~(CONFIG_SYS_CACHELINE_SIZE - 1);

Apply same sanity check as armv7 does please.

> +	while (start <= stop) {
> +		asm volatile("mcr p15, 0, %0, c7, c6, 1\n" : : "r"(start));
> +		start += CONFIG_SYS_CACHELINE_SIZE;
> +	}
> +}
> +
> +void flush_dcache_range(unsigned long start, unsigned long stop)
> +{
> +	return invalidate_dcache_range(start, stop);
> +}
> +#else /* #ifndef CONFIG_SYS_DCACHE_OFF */
> +void invalidate_dcache_all(void)
> +{
> +}
> +
> +void flush_dcache_all(void)
> +{
> +}
> +#endif /* #ifndef CONFIG_SYS_DCACHE_OFF */
> +
> +/*
> + * Stub implementations for l2 cache operations
> + */
> +
> +__weak void l2_cache_disable(void) {}
> +
> +#if defined CONFIG_SYS_THUMB_BUILD
> +__weak void invalidate_l2_cache(void) {}
> +#endif
> diff --git a/arch/arm/cpu/pxa/pxa2xx.c b/arch/arm/cpu/pxa/pxa2xx.c
> index 2f12fb9..77f0ef2 100644
> --- a/arch/arm/cpu/pxa/pxa2xx.c
> +++ b/arch/arm/cpu/pxa/pxa2xx.c
> @@ -284,3 +284,13 @@ void reset_cpu(ulong ignored)
>  	for (;;)
>  		;
>  }
> +
> +void enable_caches(void)
> +{
> +#ifndef CONFIG_SYS_ICACHE_OFF
> +	icache_enable();
> +#endif
> +#ifndef CONFIG_SYS_DCACHE_OFF
> +	dcache_enable();
> +#endif
> +}
> diff --git a/include/configs/pxa-common.h b/include/configs/pxa-common.h
> index 4c1c2c7..7295687 100644
> --- a/include/configs/pxa-common.h
> +++ b/include/configs/pxa-common.h
> @@ -10,6 +10,7 @@
>  #define	__CONFIG_PXA_COMMON_H__
>  
>  #define	CONFIG_DISPLAY_CPUINFO
> +#define	CONFIG_SYS_ARM_CACHE_WRITETHROUGH
>  
>  /*
>   * KGDB
> 


-- 
Best regards,
Marek Vasut

  reply	other threads:[~2016-03-21  1:51 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-21  1:37 [U-Boot] [PATCH 01/11] zipitz2: restore board support Vasily Khoruzhick
2016-03-21  1:37 ` [U-Boot] [PATCH 02/11] zipitz2: enable LCD rotation Vasily Khoruzhick
2016-03-21  1:47   ` Marek Vasut
2016-03-27 22:29   ` [U-Boot] [U-Boot,02/11] " Tom Rini
2016-03-21  1:37 ` [U-Boot] [PATCH 03/11] pxa_lcd: invert colors for Zipit Z2 to get white on black palette Vasily Khoruzhick
2016-03-21  1:48   ` Marek Vasut
2016-03-21  2:10     ` Vasily Khoruzhick
2016-03-21  2:14       ` Marek Vasut
2016-03-27 22:29   ` [U-Boot] [U-Boot, " Tom Rini
2016-03-27 23:26     ` Marek Vasut
2016-03-28  0:58       ` Tom Rini
2016-03-21  1:37 ` [U-Boot] [PATCH 04/11] zipitz2: enable libfdt Vasily Khoruzhick
2016-03-21  1:48   ` Marek Vasut
2016-03-27 22:29   ` [U-Boot] [U-Boot,04/11] " Tom Rini
2016-03-21  1:37 ` [U-Boot] [PATCH 05/11] pxa-common: pxa27x has 3 OHCI ports Vasily Khoruzhick
2016-03-21  1:49   ` Marek Vasut
2016-03-27 22:29   ` [U-Boot] [U-Boot,05/11] " Tom Rini
2016-03-21  1:37 ` [U-Boot] [PATCH 06/11] zipitz2: enable USB host support Vasily Khoruzhick
2016-03-21  1:49   ` Marek Vasut
2016-03-27 22:29   ` [U-Boot] [U-Boot,06/11] " Tom Rini
2016-03-21  1:37 ` [U-Boot] [PATCH 07/11] pxa: start.S: enable SRAM clock Vasily Khoruzhick
2016-03-21  1:50   ` Marek Vasut
2016-03-27 22:29   ` [U-Boot] [U-Boot,07/11] " Tom Rini
2016-03-21  1:37 ` [U-Boot] [PATCH 08/11] pxa: add support for D- and I- caches Vasily Khoruzhick
2016-03-21  1:51   ` Marek Vasut [this message]
2016-03-27 22:29   ` [U-Boot] [U-Boot,08/11] " Tom Rini
2016-03-21  1:37 ` [U-Boot] [PATCH 09/11] pxa_lcd: make driver cache-aware Vasily Khoruzhick
2016-03-21  1:52   ` Marek Vasut
2016-03-27 22:29   ` [U-Boot] [U-Boot,09/11] " Tom Rini
2016-03-27 23:27     ` Marek Vasut
2016-03-28  0:58       ` Tom Rini
2016-03-21  1:37 ` [U-Boot] [PATCH 10/11] zipitz2: enable caches Vasily Khoruzhick
2016-03-21  1:52   ` Marek Vasut
2016-03-27 22:30   ` [U-Boot] [U-Boot,10/11] " Tom Rini
2016-03-21  1:37 ` [U-Boot] [PATCH 11/11] cfi_flash: return device into read array mode after reading status Vasily Khoruzhick
2016-03-21  1:54   ` Marek Vasut
2016-03-21 16:19     ` Stefan Roese
2016-03-21 19:22       ` Vasily Khoruzhick
2016-03-22  6:40         ` Stefan Roese
2016-03-27 22:30   ` [U-Boot] [U-Boot, " Tom Rini
2016-03-21  1:45 ` [U-Boot] [PATCH 01/11] zipitz2: restore board support Marek Vasut
2016-03-27 22:29 ` [U-Boot] [U-Boot,01/11] " Tom Rini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=56EF53AD.5050709@denx.de \
    --to=marex@denx.de \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.