Blackfin: decouple unrelated cache settings to get exact behavior
The current cache options don't really represent the hardware features. They end up setting different aspects of the hardware so that the end result is to turn on/off the cache. Unfortunately, when we hit cache problems with the hardware, it's difficult to test different settings to root cause the problem. The current settings also don't cleanly allow for different caching behaviors with different regions of memory. So split the configure options such that they properly reflect the settings that are applied to the hardware. Signed-off-by: Jie Zhang <jie.zhang@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
This commit is contained in:

committed by
Mike Frysinger

parent
7c039a90f0
commit
41ba653f24
@@ -37,8 +37,6 @@
|
||||
#define L1_IMEMORY ( CPLB_USER_RD | CPLB_VALID | CPLB_LOCK)
|
||||
#define SDRAM_INON_CHBL ( CPLB_USER_RD | CPLB_VALID)
|
||||
|
||||
/*Use the menuconfig cache policy here - CONFIG_BFIN_WT/CONFIG_BFIN_WB*/
|
||||
|
||||
#if ANOMALY_05000158
|
||||
#define ANOMALY_05000158_WORKAROUND 0x200
|
||||
#else
|
||||
@@ -47,10 +45,12 @@
|
||||
|
||||
#define CPLB_COMMON (CPLB_DIRTY | CPLB_SUPV_WR | CPLB_USER_WR | CPLB_USER_RD | CPLB_VALID | ANOMALY_05000158_WORKAROUND)
|
||||
|
||||
#ifdef CONFIG_BFIN_WB /*Write Back Policy */
|
||||
#ifdef CONFIG_BFIN_EXTMEM_WRITEBACK
|
||||
#define SDRAM_DGENERIC (CPLB_L1_CHBL | CPLB_COMMON)
|
||||
#else /*Write Through */
|
||||
#elif defined(CONFIG_BFIN_EXTMEM_WRITETHROUGH)
|
||||
#define SDRAM_DGENERIC (CPLB_L1_CHBL | CPLB_WT | CPLB_L1_AOW | CPLB_COMMON)
|
||||
#else
|
||||
#define SDRAM_DGENERIC (CPLB_COMMON)
|
||||
#endif
|
||||
|
||||
#define SDRAM_DNON_CHBL (CPLB_COMMON)
|
||||
@@ -61,21 +61,23 @@
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
#define L2_ATTR (INITIAL_T | I_CPLB | D_CPLB)
|
||||
#define L2_IMEMORY (CPLB_COMMON)
|
||||
#define L2_DMEMORY (CPLB_LOCK | CPLB_COMMON)
|
||||
#define L2_IMEMORY (CPLB_COMMON | PAGE_SIZE_1MB)
|
||||
#define L2_DMEMORY (CPLB_LOCK | CPLB_COMMON | PAGE_SIZE_1MB)
|
||||
|
||||
#else
|
||||
#define L2_ATTR (INITIAL_T | SWITCH_T | I_CPLB | D_CPLB)
|
||||
#define L2_IMEMORY (SDRAM_IGENERIC)
|
||||
|
||||
# if defined(CONFIG_BFIN_L2_WB)
|
||||
# define L2_DMEMORY (CPLB_L1_CHBL | CPLB_COMMON)
|
||||
# elif defined(CONFIG_BFIN_L2_WT)
|
||||
# define L2_DMEMORY (CPLB_L1_CHBL | CPLB_WT | CPLB_L1_AOW | CPLB_COMMON)
|
||||
# elif defined(CONFIG_BFIN_L2_NOT_CACHED)
|
||||
# define L2_DMEMORY (CPLB_COMMON)
|
||||
# if defined(CONFIG_BFIN_L2_ICACHEABLE)
|
||||
# define L2_IMEMORY (CPLB_L1_CHBL | CPLB_USER_RD | CPLB_VALID | PAGE_SIZE_1MB)
|
||||
# else
|
||||
# define L2_DMEMORY (0)
|
||||
# define L2_IMEMORY ( CPLB_USER_RD | CPLB_VALID | PAGE_SIZE_1MB)
|
||||
# endif
|
||||
|
||||
# if defined(CONFIG_BFIN_L2_WRITEBACK)
|
||||
# define L2_DMEMORY (CPLB_L1_CHBL | CPLB_COMMON | PAGE_SIZE_1MB)
|
||||
# elif defined(CONFIG_BFIN_L2_WRITETHROUGH)
|
||||
# define L2_DMEMORY (CPLB_L1_CHBL | CPLB_WT | CPLB_L1_AOW | CPLB_COMMON | PAGE_SIZE_1MB)
|
||||
# else
|
||||
# define L2_DMEMORY (CPLB_COMMON | PAGE_SIZE_1MB)
|
||||
# endif
|
||||
#endif /* CONFIG_SMP */
|
||||
|
||||
|
Reference in New Issue
Block a user