Commit 7677d65f6522b1a911ac3a24225ec29709106010
Committed by
sonic
1 parent
ee8259623e
Exists in
master
and in
53 other branches
blackfin: bf60x: support big cplb page
BF60x support 16K, 64K, 16M and 64M cplb pages, this patch add support for them. So that bf609-ezkit can use it's 128M memory. Signed-off-by: Bob Liu <lliubbo@gmail.com> Signed-off-by: Sonic Zhang <sonic.zhang@analog.com> Signed-off-by: Sonic Zhang <sonic.adi@gmail.com>
Showing 2 changed files with 44 additions and 6 deletions Side-by-side Diff
arch/blackfin/include/asm/cplb.h
... | ... | @@ -46,8 +46,13 @@ |
46 | 46 | #define CPLB_IDOCACHE CPLB_INOCACHE | CPLB_L1_CHBL |
47 | 47 | |
48 | 48 | /* Data Attibutes*/ |
49 | - | |
50 | -#define SDRAM_IGENERIC (PAGE_SIZE_4MB | CPLB_L1_CHBL | CPLB_USER_RD | CPLB_VALID) | |
49 | +#if defined(__ADSPBF60x__) | |
50 | +#define SDRAM_IGENERIC (PAGE_SIZE_16MB | CPLB_L1_CHBL | \ | |
51 | + CPLB_USER_RD | CPLB_VALID) | |
52 | +#else | |
53 | +#define SDRAM_IGENERIC (PAGE_SIZE_4MB | CPLB_L1_CHBL | \ | |
54 | + CPLB_USER_RD | CPLB_VALID) | |
55 | +#endif | |
51 | 56 | #define SDRAM_IKERNEL (PAGE_SIZE_4MB | CPLB_L1_CHBL | CPLB_USER_RD | CPLB_VALID | CPLB_LOCK) |
52 | 57 | #define L1_IMEMORY (PAGE_SIZE_1MB | CPLB_USER_RD | CPLB_VALID | CPLB_LOCK) |
53 | 58 | #define SDRAM_INON_CHBL (PAGE_SIZE_4MB | CPLB_USER_RD | CPLB_VALID) |
54 | 59 | |
... | ... | @@ -59,14 +64,32 @@ |
59 | 64 | #endif |
60 | 65 | |
61 | 66 | #ifdef CONFIG_DCACHE_WB /*Write Back Policy */ |
62 | -#define SDRAM_DGENERIC (PAGE_SIZE_4MB | CPLB_L1_CHBL | CPLB_DIRTY | CPLB_SUPV_WR | CPLB_USER_WR | CPLB_USER_RD | CPLB_VALID | ANOMALY_05000158_WORKAROUND) | |
67 | +#if defined(__ADSPBF60x__) | |
68 | +#define SDRAM_DGENERIC (PAGE_SIZE_16MB | CPLB_L1_CHBL | CPLB_DIRTY | \ | |
69 | + CPLB_SUPV_WR | CPLB_USER_WR | CPLB_USER_RD | \ | |
70 | + CPLB_VALID | ANOMALY_05000158_WORKAROUND) | |
71 | +#else | |
72 | +#define SDRAM_DGENERIC (PAGE_SIZE_4MB | CPLB_L1_CHBL | CPLB_DIRTY | \ | |
73 | + CPLB_SUPV_WR | CPLB_USER_WR | CPLB_USER_RD | \ | |
74 | + CPLB_VALID | ANOMALY_05000158_WORKAROUND) | |
75 | +#endif | |
63 | 76 | #define SDRAM_DNON_CHBL (PAGE_SIZE_4MB | CPLB_DIRTY | CPLB_SUPV_WR | CPLB_USER_RD | CPLB_USER_WR | CPLB_VALID | ANOMALY_05000158_WORKAROUND) |
64 | 77 | #define SDRAM_DKERNEL (PAGE_SIZE_4MB | CPLB_L1_CHBL | CPLB_USER_RD | CPLB_USER_WR | CPLB_DIRTY | CPLB_SUPV_WR | CPLB_VALID | CPLB_LOCK | ANOMALY_05000158_WORKAROUND) |
65 | 78 | #define L1_DMEMORY (PAGE_SIZE_4MB | CPLB_SUPV_WR | CPLB_USER_WR | CPLB_USER_RD | CPLB_VALID | ANOMALY_05000158_WORKAROUND) |
66 | 79 | #define SDRAM_EBIU (PAGE_SIZE_4MB | CPLB_DIRTY | CPLB_USER_RD | CPLB_USER_WR | CPLB_SUPV_WR | CPLB_VALID | ANOMALY_05000158_WORKAROUND) |
67 | 80 | |
68 | 81 | #else /*Write Through */ |
69 | -#define SDRAM_DGENERIC (PAGE_SIZE_4MB | CPLB_L1_CHBL | CPLB_WT | CPLB_L1_AOW | CPLB_SUPV_WR | CPLB_USER_RD | CPLB_USER_WR | CPLB_VALID | ANOMALY_05000158_WORKAROUND) | |
82 | +#if defined(__ADSPBF60x__) | |
83 | +#define SDRAM_DGENERIC (PAGE_SIZE_16MB | CPLB_L1_CHBL | CPLB_WT | \ | |
84 | + CPLB_L1_AOW | CPLB_SUPV_WR | CPLB_USER_RD | \ | |
85 | + CPLB_USER_WR | CPLB_VALID | \ | |
86 | + ANOMALY_05000158_WORKAROUND) | |
87 | +#else | |
88 | +#define SDRAM_DGENERIC (PAGE_SIZE_4MB | CPLB_L1_CHBL | CPLB_WT | \ | |
89 | + CPLB_L1_AOW | CPLB_SUPV_WR | CPLB_USER_RD | \ | |
90 | + CPLB_USER_WR | CPLB_VALID | \ | |
91 | + ANOMALY_05000158_WORKAROUND) | |
92 | +#endif | |
70 | 93 | #define SDRAM_DNON_CHBL (PAGE_SIZE_4MB | CPLB_WT | CPLB_L1_AOW | CPLB_SUPV_WR | CPLB_USER_WR | CPLB_USER_RD | CPLB_VALID | ANOMALY_05000158_WORKAROUND) |
71 | 94 | #define SDRAM_DKERNEL (PAGE_SIZE_4MB | CPLB_L1_CHBL | CPLB_WT | CPLB_L1_AOW | CPLB_USER_RD | CPLB_SUPV_WR | CPLB_USER_WR | CPLB_VALID | CPLB_LOCK | ANOMALY_05000158_WORKAROUND) |
72 | 95 | #define L1_DMEMORY (PAGE_SIZE_4MB | CPLB_SUPV_WR | CPLB_USER_WR | CPLB_VALID | ANOMALY_05000158_WORKAROUND) |
arch/blackfin/lib/board.c
... | ... | @@ -96,6 +96,13 @@ |
96 | 96 | |
97 | 97 | #define CPLB_PAGE_SIZE (4 * 1024 * 1024) |
98 | 98 | #define CPLB_PAGE_MASK (~(CPLB_PAGE_SIZE - 1)) |
99 | +#if defined(__ADSPBF60x__) | |
100 | +#define CPLB_EX_PAGE_SIZE (16 * 1024 * 1024) | |
101 | +#define CPLB_EX_PAGE_MASK (~(CPLB_EX_PAGE_SIZE - 1)) | |
102 | +#else | |
103 | +#define CPLB_EX_PAGE_SIZE CPLB_PAGE_SIZE | |
104 | +#define CPLB_EX_PAGE_MASK CPLB_PAGE_MASK | |
105 | +#endif | |
99 | 106 | void init_cplbtables(void) |
100 | 107 | { |
101 | 108 | volatile uint32_t *ICPLB_ADDR, *ICPLB_DATA; |
... | ... | @@ -127,6 +134,11 @@ |
127 | 134 | icplb_add(0xFFA00000, L1_IMEMORY); |
128 | 135 | dcplb_add(0xFF800000, L1_DMEMORY); |
129 | 136 | ++i; |
137 | +#if defined(__ADSPBF60x__) | |
138 | + icplb_add(0x0, 0x0); | |
139 | + dcplb_add(CONFIG_SYS_FLASH_BASE, SDRAM_EBIU); | |
140 | + ++i; | |
141 | +#endif | |
130 | 142 | |
131 | 143 | if (CONFIG_MEM_SIZE) { |
132 | 144 | uint32_t mbase = CONFIG_SYS_MONITOR_BASE; |
133 | 145 | |
... | ... | @@ -150,9 +162,11 @@ |
150 | 162 | } |
151 | 163 | } |
152 | 164 | |
165 | +#ifndef __ADSPBF60x__ | |
153 | 166 | icplb_add(0x20000000, SDRAM_INON_CHBL); |
154 | 167 | dcplb_add(0x20000000, SDRAM_EBIU); |
155 | 168 | ++i; |
169 | +#endif | |
156 | 170 | |
157 | 171 | /* Add entries for the rest of external RAM up to the bootrom */ |
158 | 172 | extern_memory = 0; |
159 | 173 | |
... | ... | @@ -167,10 +181,11 @@ |
167 | 181 | ++i; |
168 | 182 | #endif |
169 | 183 | |
170 | - while (i < 16 && extern_memory < (CONFIG_SYS_MONITOR_BASE & CPLB_PAGE_MASK)) { | |
184 | + while (i < 16 && extern_memory < | |
185 | + (CONFIG_SYS_MONITOR_BASE & CPLB_EX_PAGE_MASK)) { | |
171 | 186 | icplb_add(extern_memory, SDRAM_IGENERIC); |
172 | 187 | dcplb_add(extern_memory, SDRAM_DGENERIC); |
173 | - extern_memory += CPLB_PAGE_SIZE; | |
188 | + extern_memory += CPLB_EX_PAGE_SIZE; | |
174 | 189 | ++i; |
175 | 190 | } |
176 | 191 | while (i < 16) { |