Blame view
arch/blackfin/include/asm/cplb.h
4.69 KB
3bebca2d2 Blackfin arch: to... |
1 |
/* |
96f1050d3 Blackfin: mass cl... |
2 |
* Copyright 2004-2009 Analog Devices Inc. |
1394f0322 blackfin architec... |
3 |
* |
96f1050d3 Blackfin: mass cl... |
4 |
* Licensed under the GPL-2 or later. |
3bebca2d2 Blackfin arch: to... |
5 |
*/ |
1394f0322 blackfin architec... |
6 7 8 |
#ifndef _CPLB_H #define _CPLB_H |
639f65714 Blackfin arch: mo... |
9 |
#include <mach/anomaly.h> |
1394f0322 blackfin architec... |
10 |
|
3bebca2d2 Blackfin arch: to... |
11 12 13 14 |
#define SDRAM_IGENERIC (CPLB_L1_CHBL | CPLB_USER_RD | CPLB_VALID | CPLB_PORTPRIO) #define SDRAM_IKERNEL (SDRAM_IGENERIC | CPLB_LOCK) #define L1_IMEMORY ( CPLB_USER_RD | CPLB_VALID | CPLB_LOCK) #define SDRAM_INON_CHBL ( CPLB_USER_RD | CPLB_VALID) |
3bebca2d2 Blackfin arch: to... |
15 16 17 18 19 20 21 |
#if ANOMALY_05000158 #define ANOMALY_05000158_WORKAROUND 0x200 #else #define ANOMALY_05000158_WORKAROUND 0x0 #endif #define CPLB_COMMON (CPLB_DIRTY | CPLB_SUPV_WR | CPLB_USER_WR | CPLB_USER_RD | CPLB_VALID | ANOMALY_05000158_WORKAROUND) |
41ba653f2 Blackfin: decoupl... |
22 |
#ifdef CONFIG_BFIN_EXTMEM_WRITEBACK |
3bebca2d2 Blackfin arch: to... |
23 |
#define SDRAM_DGENERIC (CPLB_L1_CHBL | CPLB_COMMON) |
41ba653f2 Blackfin: decoupl... |
24 |
#elif defined(CONFIG_BFIN_EXTMEM_WRITETHROUGH) |
3bebca2d2 Blackfin arch: to... |
25 |
#define SDRAM_DGENERIC (CPLB_L1_CHBL | CPLB_WT | CPLB_L1_AOW | CPLB_COMMON) |
41ba653f2 Blackfin: decoupl... |
26 27 |
#else #define SDRAM_DGENERIC (CPLB_COMMON) |
3bebca2d2 Blackfin arch: to... |
28 |
#endif |
5ba766752 Blackfin: work ar... |
29 30 31 |
#define SDRAM_DNON_CHBL (CPLB_COMMON) #define SDRAM_EBIU (CPLB_COMMON) #define SDRAM_OOPS (CPLB_VALID | ANOMALY_05000158_WORKAROUND | CPLB_LOCK | CPLB_DIRTY) |
3bebca2d2 Blackfin arch: to... |
32 |
#define L1_DMEMORY (CPLB_LOCK | CPLB_COMMON) |
b8a989893 Blackfin arch: SM... |
33 34 |
#ifdef CONFIG_SMP |
5ba766752 Blackfin: work ar... |
35 |
#define L2_ATTR (INITIAL_T | I_CPLB | D_CPLB) |
41ba653f2 Blackfin: decoupl... |
36 37 |
#define L2_IMEMORY (CPLB_COMMON | PAGE_SIZE_1MB) #define L2_DMEMORY (CPLB_LOCK | CPLB_COMMON | PAGE_SIZE_1MB) |
b8a989893 Blackfin arch: SM... |
38 39 |
#else |
5ba766752 Blackfin: work ar... |
40 |
#define L2_ATTR (INITIAL_T | SWITCH_T | I_CPLB | D_CPLB) |
41ba653f2 Blackfin: decoupl... |
41 42 43 44 45 |
# if defined(CONFIG_BFIN_L2_ICACHEABLE) # define L2_IMEMORY (CPLB_L1_CHBL | CPLB_USER_RD | CPLB_VALID | PAGE_SIZE_1MB) # else # define L2_IMEMORY ( CPLB_USER_RD | CPLB_VALID | PAGE_SIZE_1MB) # endif |
5ba766752 Blackfin: work ar... |
46 |
|
41ba653f2 Blackfin: decoupl... |
47 48 49 50 |
# 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) |
5ba766752 Blackfin: work ar... |
51 |
# else |
41ba653f2 Blackfin: decoupl... |
52 |
# define L2_DMEMORY (CPLB_COMMON | PAGE_SIZE_1MB) |
5ba766752 Blackfin: work ar... |
53 |
# endif |
b8a989893 Blackfin arch: SM... |
54 |
#endif /* CONFIG_SMP */ |
3bebca2d2 Blackfin arch: to... |
55 56 57 58 |
#define SIZE_1K 0x00000400 /* 1K */ #define SIZE_4K 0x00001000 /* 4K */ #define SIZE_1M 0x00100000 /* 1M */ #define SIZE_4M 0x00400000 /* 4M */ |
b97b8a998 [Blackfin] arch: ... |
59 |
#define MAX_CPLBS 16 |
07bdda026 Blackfin arch: bu... |
60 |
|
1394f0322 blackfin architec... |
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
#define CPLB_ENABLE_ICACHE_P 0 #define CPLB_ENABLE_DCACHE_P 1 #define CPLB_ENABLE_DCACHE2_P 2 #define CPLB_ENABLE_CPLBS_P 3 /* Deprecated! */ #define CPLB_ENABLE_ICPLBS_P 4 #define CPLB_ENABLE_DCPLBS_P 5 #define CPLB_ENABLE_ICACHE (1<<CPLB_ENABLE_ICACHE_P) #define CPLB_ENABLE_DCACHE (1<<CPLB_ENABLE_DCACHE_P) #define CPLB_ENABLE_DCACHE2 (1<<CPLB_ENABLE_DCACHE2_P) #define CPLB_ENABLE_CPLBS (1<<CPLB_ENABLE_CPLBS_P) #define CPLB_ENABLE_ICPLBS (1<<CPLB_ENABLE_ICPLBS_P) #define CPLB_ENABLE_DCPLBS (1<<CPLB_ENABLE_DCPLBS_P) #define CPLB_ENABLE_ANY_CPLBS CPLB_ENABLE_CPLBS | \ CPLB_ENABLE_ICPLBS | \ CPLB_ENABLE_DCPLBS #define CPLB_RELOADED 0x0000 #define CPLB_NO_UNLOCKED 0x0001 #define CPLB_NO_ADDR_MATCH 0x0002 #define CPLB_PROT_VIOL 0x0003 #define CPLB_UNKNOWN_ERR 0x0004 #define CPLB_DEF_CACHE CPLB_L1_CHBL | CPLB_WT #define CPLB_CACHE_ENABLED CPLB_L1_CHBL | CPLB_DIRTY |
1394f0322 blackfin architec... |
86 87 88 89 90 91 |
#define CPLB_I_PAGE_MGMT CPLB_LOCK | CPLB_VALID #define CPLB_D_PAGE_MGMT CPLB_LOCK | CPLB_ALL_ACCESS | CPLB_VALID #define CPLB_DNOCACHE CPLB_ALL_ACCESS | CPLB_VALID #define CPLB_DDOCACHE CPLB_DNOCACHE | CPLB_DEF_CACHE #define CPLB_INOCACHE CPLB_USER_RD | CPLB_VALID #define CPLB_IDOCACHE CPLB_INOCACHE | CPLB_L1_CHBL |
dbdf20db5 Blackfin arch: Fa... |
92 93 94 |
#define FAULT_RW (1 << 16) #define FAULT_USERSUPV (1 << 17) #define FAULT_CPLBBITS 0x0000ffff |
eb7bd9c46 Blackfin: cleanup... |
95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 |
#ifndef __ASSEMBLY__ static inline void _disable_cplb(u32 mmr, u32 mask) { u32 ctrl = bfin_read32(mmr) & ~mask; /* CSYNC to ensure load store ordering */ __builtin_bfin_csync(); bfin_write32(mmr, ctrl); __builtin_bfin_ssync(); } static inline void disable_cplb(u32 mmr, u32 mask) { u32 ctrl = bfin_read32(mmr) & ~mask; CSYNC(); bfin_write32(mmr, ctrl); SSYNC(); } #define _disable_dcplb() _disable_cplb(DMEM_CONTROL, ENDCPLB) #define disable_dcplb() disable_cplb(DMEM_CONTROL, ENDCPLB) #define _disable_icplb() _disable_cplb(IMEM_CONTROL, ENICPLB) #define disable_icplb() disable_cplb(IMEM_CONTROL, ENICPLB) static inline void _enable_cplb(u32 mmr, u32 mask) { u32 ctrl = bfin_read32(mmr) | mask; /* CSYNC to ensure load store ordering */ __builtin_bfin_csync(); bfin_write32(mmr, ctrl); __builtin_bfin_ssync(); } static inline void enable_cplb(u32 mmr, u32 mask) { u32 ctrl = bfin_read32(mmr) | mask; CSYNC(); bfin_write32(mmr, ctrl); SSYNC(); } #define _enable_dcplb() _enable_cplb(DMEM_CONTROL, ENDCPLB) #define enable_dcplb() enable_cplb(DMEM_CONTROL, ENDCPLB) #define _enable_icplb() _enable_cplb(IMEM_CONTROL, ENICPLB) #define enable_icplb() enable_cplb(IMEM_CONTROL, ENICPLB) #endif /* __ASSEMBLY__ */ #endif /* _CPLB_H */ |