MIPS: Split I & D cache line size config
authorPaul Burton <paul.burton@imgtec.com>
Fri, 27 May 2016 13:28:05 +0000 (14:28 +0100)
committerDaniel Schwierzeck <daniel.schwierzeck@gmail.com>
Tue, 31 May 2016 07:44:24 +0000 (09:44 +0200)
Allow L1 Icache & L1 Dcache line size to be specified separately, since
there's no architectural mandate that they be the same. The
[id]cache_line_size functions are tidied up to take advantage of the
fact that the Kconfig entries are always present to simply check them
for zero rather than needing to #ifdef on their presence.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
[removed CONFIG_SYS_CACHELINE_SIZE in include/configs/pic32mzdask.h]
Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
12 files changed:
arch/mips/Kconfig
arch/mips/include/asm/cache.h
arch/mips/lib/cache.c
arch/mips/lib/cache_init.S
board/dbau1x00/Kconfig
board/micronas/vct/Kconfig
board/pb1x00/Kconfig
board/qca/ap121/Kconfig
board/qca/ap143/Kconfig
board/qemu-mips/Kconfig
board/tplink/wdr4300/Kconfig
include/configs/pic32mzdask.h

index a79224e525ed34bae477b8cecd709aa9588a5eb2..5c30ae981dfdd871817316637862da326ef38fbc 100644 (file)
@@ -252,21 +252,27 @@ config SYS_DCACHE_SIZE
        help
          The total size of the L1 Dcache, if known at compile time.
 
+config SYS_DCACHE_LINE_SIZE
+       hex
+       default 0
+       help
+         The size of L1 Dcache lines, if known at compile time.
+
 config SYS_ICACHE_SIZE
        int
        default 0
        help
          The total size of the L1 ICache, if known at compile time.
 
-config SYS_CACHELINE_SIZE
+config SYS_ICACHE_LINE_SIZE
        int
        default 0
        help
-         The size of L1 cache lines, if known at compile time.
+         The size of L1 Icache lines, if known at compile time.
 
 config SYS_CACHE_SIZE_AUTO
        def_bool y if SYS_DCACHE_SIZE = 0 && SYS_ICACHE_SIZE = 0 && \
-               SYS_CACHELINE_SIZE = 0
+               SYS_DCACHE_LINE_SIZE = 0 && SYS_ICACHE_LINE_SIZE = 0
        help
          Select this (or let it be auto-selected by not defining any cache
          sizes) in order to allow U-Boot to automatically detect the sizes
index 806bd26ba989e4e4954988940b19028c37a901ab..0cea581e5d8cd1575653c0730fdc32790b01321a 100644 (file)
 
 #define ARCH_DMA_MINALIGN      (L1_CACHE_BYTES)
 
+/*
+ * CONFIG_SYS_CACHELINE_SIZE is still used in various drivers primarily for
+ * DMA buffer alignment. Satisfy those drivers by providing it as a synonym
+ * of ARCH_DMA_MINALIGN for now.
+ */
+#define CONFIG_SYS_CACHELINE_SIZE ARCH_DMA_MINALIGN
+
 #endif /* __MIPS_CACHE_H__ */
index fbaafee8cdeaac121e728ea886311ad409c1f1ef..19a42ff8316fec3168f2fc457a8ec01201977598 100644 (file)
@@ -9,23 +9,13 @@
 #include <asm/cacheops.h>
 #include <asm/mipsregs.h>
 
-#ifndef CONFIG_SYS_CACHE_SIZE_AUTO
-
 static inline unsigned long icache_line_size(void)
 {
-       return CONFIG_SYS_CACHELINE_SIZE;
-}
-
-static inline unsigned long dcache_line_size(void)
-{
-       return CONFIG_SYS_CACHELINE_SIZE;
-}
+       unsigned long conf1, il;
 
-#else /* !CONFIG_SYS_CACHELINE_SIZE */
+       if (!config_enabled(CONFIG_SYS_CACHE_SIZE_AUTO))
+               return CONFIG_SYS_ICACHE_LINE_SIZE;
 
-static inline unsigned long icache_line_size(void)
-{
-       unsigned long conf1, il;
        conf1 = read_c0_config1();
        il = (conf1 & MIPS_CONF1_IL) >> MIPS_CONF1_IL_SHF;
        if (!il)
@@ -36,6 +26,10 @@ static inline unsigned long icache_line_size(void)
 static inline unsigned long dcache_line_size(void)
 {
        unsigned long conf1, dl;
+
+       if (!config_enabled(CONFIG_SYS_CACHE_SIZE_AUTO))
+               return CONFIG_SYS_DCACHE_LINE_SIZE;
+
        conf1 = read_c0_config1();
        dl = (conf1 & MIPS_CONF1_DL) >> MIPS_CONF1_DL_SHF;
        if (!dl)
@@ -43,8 +37,6 @@ static inline unsigned long dcache_line_size(void)
        return 2 << dl;
 }
 
-#endif /* !CONFIG_SYS_CACHELINE_SIZE */
-
 void flush_cache(ulong start_addr, ulong size)
 {
        unsigned long ilsize = icache_line_size();
index 4bb9a17e749add16f0d709fea614a6bb27fe88eb..bc8ab27b58d92289088b8659d0ac224babdb6d46 100644 (file)
 LEAF(mips_cache_reset)
 #ifndef CONFIG_SYS_CACHE_SIZE_AUTO
        li      t2, CONFIG_SYS_ICACHE_SIZE
-       li      t8, CONFIG_SYS_CACHELINE_SIZE
+       li      t8, CONFIG_SYS_ICACHE_LINE_SIZE
 #else
        l1_info t2, t8, MIPS_CONF1_IA_SHF
 #endif
 
 #ifndef CONFIG_SYS_CACHE_SIZE_AUTO
        li      t3, CONFIG_SYS_DCACHE_SIZE
-       li      t9, CONFIG_SYS_CACHELINE_SIZE
+       li      t9, CONFIG_SYS_DCACHE_LINE_SIZE
 #else
        l1_info t3, t9, MIPS_CONF1_DA_SHF
 #endif
index 1715a2897553db3ddb4a5632d1bcf92d95f7ad4a..448176d8ba8488b7fe3ed5930c035e71cf3d09c4 100644 (file)
@@ -15,10 +15,13 @@ config SYS_TEXT_BASE
 config SYS_DCACHE_SIZE
        default 16384
 
+config SYS_DCACHE_LINE_SIZE
+       default 32
+
 config SYS_ICACHE_SIZE
        default 16384
 
-config SYS_CACHELINE_SIZE
+config SYS_ICACHE_LINE_SIZE
        default 32
 
 menu "dbau1x00 board options"
index 5bb6f03f30f178c3e5a3bb9cd214cc28dddefd53..df7c0296c7d8051bd684ffeac08c96f57948440f 100644 (file)
@@ -15,10 +15,13 @@ config SYS_TEXT_BASE
 config SYS_DCACHE_SIZE
        default 16384
 
+config SYS_DCACHE_LINE_SIZE
+       default 32
+
 config SYS_ICACHE_SIZE
        default 16384
 
-config SYS_CACHELINE_SIZE
+config SYS_ICACHE_LINE_SIZE
        default 32
 
 menu "vct board options"
index 27b2ef000b0937a6e5a1e514b2683ff4c1aaaf9f..ef8905d46a524e3de08120dfb1ca9b33d619f802 100644 (file)
@@ -15,10 +15,13 @@ config SYS_TEXT_BASE
 config SYS_DCACHE_SIZE
        default 16384
 
+config SYS_DCACHE_LINE_SIZE
+       default 32
+
 config SYS_ICACHE_SIZE
        default 16384
 
-config SYS_CACHELINE_SIZE
+config SYS_ICACHE_LINE_SIZE
        default 32
 
 endif
index f28ea1cd44f4041b1ec16e6524e658e2955a943d..4fd6a7167a5eaf8219b304701e1dfe542953354e 100644 (file)
@@ -15,10 +15,13 @@ config SYS_TEXT_BASE
 config SYS_DCACHE_SIZE
        default 32768
 
+config SYS_DCACHE_LINE_SIZE
+       default 32
+
 config SYS_ICACHE_SIZE
        default 65536
 
-config SYS_CACHELINE_SIZE
+config SYS_ICACHE_LINE_SIZE
        default 32
 
 endif
index ff02236d5d834650807f564a79d823a3b43692bd..74c632a03e74e3802c46a45992089547b58d732f 100644 (file)
@@ -15,10 +15,13 @@ config SYS_TEXT_BASE
 config SYS_DCACHE_SIZE
        default 32768
 
+config SYS_DCACHE_LINE_SIZE
+       default 32
+
 config SYS_ICACHE_SIZE
        default 65536
 
-config SYS_CACHELINE_SIZE
+config SYS_ICACHE_LINE_SIZE
        default 32
 
 endif
index 66957e7a57ac005db1f963eb6a99079a83801945..e696a12192b4b08a421827ded5d1db81f7c2280c 100644 (file)
@@ -14,10 +14,13 @@ config SYS_TEXT_BASE
 config SYS_DCACHE_SIZE
        default 16384
 
+config SYS_DCACHE_LINE_SIZE
+       default 32
+
 config SYS_ICACHE_SIZE
        default 16384
 
-config SYS_CACHELINE_SIZE
+config SYS_ICACHE_LINE_SIZE
        default 32
 
 endif
index ded7f9b1798dfdd2bae10a13dfc4189b10fda016..67a0228773ba4ddce3d1ae05e5cb0ffcfaf6f65a 100644 (file)
@@ -18,10 +18,13 @@ config SYS_TEXT_BASE
 config SYS_DCACHE_SIZE
        default 32768
 
+config SYS_DCACHE_LINE_SIZE
+       default 32
+
 config SYS_ICACHE_SIZE
        default 65536
 
-config SYS_CACHELINE_SIZE
+config SYS_ICACHE_LINE_SIZE
        default 32
 
 endif
index fb2e41fd92e11351b4b1d52cc9be65fde7987fee..319e3b5111e8b7c1fd3d338ab48a4a15f8aaeb5e 100644 (file)
  * USB Configuration
  */
 #define CONFIG_USB_MUSB_PIO_ONLY
-#define CONFIG_SYS_CACHELINE_SIZE      16
 
 /*-----------------------------------------------------------------------
  * File System Configuration