diff options
Diffstat (limited to 'arch/blackfin/kernel/setup.c')
-rw-r--r-- | arch/blackfin/kernel/setup.c | 90 |
1 files changed, 45 insertions, 45 deletions
diff --git a/arch/blackfin/kernel/setup.c b/arch/blackfin/kernel/setup.c index 88f221b89b33..8dcd76e87ed5 100644 --- a/arch/blackfin/kernel/setup.c +++ b/arch/blackfin/kernel/setup.c | |||
@@ -39,10 +39,12 @@ | |||
39 | #include <linux/cramfs_fs.h> | 39 | #include <linux/cramfs_fs.h> |
40 | #include <linux/romfs_fs.h> | 40 | #include <linux/romfs_fs.h> |
41 | 41 | ||
42 | #include <asm/cplb.h> | ||
42 | #include <asm/cacheflush.h> | 43 | #include <asm/cacheflush.h> |
43 | #include <asm/blackfin.h> | 44 | #include <asm/blackfin.h> |
44 | #include <asm/cplbinit.h> | 45 | #include <asm/cplbinit.h> |
45 | #include <asm/fixed_code.h> | 46 | #include <asm/fixed_code.h> |
47 | #include <asm/early_printk.h> | ||
46 | 48 | ||
47 | u16 _bfin_swrst; | 49 | u16 _bfin_swrst; |
48 | 50 | ||
@@ -66,21 +68,21 @@ char __initdata command_line[COMMAND_LINE_SIZE]; | |||
66 | 68 | ||
67 | void __init bf53x_cache_init(void) | 69 | void __init bf53x_cache_init(void) |
68 | { | 70 | { |
69 | #if defined(CONFIG_BLKFIN_DCACHE) || defined(CONFIG_BLKFIN_CACHE) | 71 | #if defined(CONFIG_BFIN_DCACHE) || defined(CONFIG_BFIN_ICACHE) |
70 | generate_cpl_tables(); | 72 | generate_cpl_tables(); |
71 | #endif | 73 | #endif |
72 | 74 | ||
73 | #ifdef CONFIG_BLKFIN_CACHE | 75 | #ifdef CONFIG_BFIN_ICACHE |
74 | bfin_icache_init(); | 76 | bfin_icache_init(); |
75 | printk(KERN_INFO "Instruction Cache Enabled\n"); | 77 | printk(KERN_INFO "Instruction Cache Enabled\n"); |
76 | #endif | 78 | #endif |
77 | 79 | ||
78 | #ifdef CONFIG_BLKFIN_DCACHE | 80 | #ifdef CONFIG_BFIN_DCACHE |
79 | bfin_dcache_init(); | 81 | bfin_dcache_init(); |
80 | printk(KERN_INFO "Data Cache Enabled" | 82 | printk(KERN_INFO "Data Cache Enabled" |
81 | # if defined CONFIG_BLKFIN_WB | 83 | # if defined CONFIG_BFIN_WB |
82 | " (write-back)" | 84 | " (write-back)" |
83 | # elif defined CONFIG_BLKFIN_WT | 85 | # elif defined CONFIG_BFIN_WT |
84 | " (write-through)" | 86 | " (write-through)" |
85 | # endif | 87 | # endif |
86 | "\n"); | 88 | "\n"); |
@@ -156,8 +158,10 @@ static __init void parse_cmdline_early(char *cmdline_p) | |||
156 | 1; | 158 | 1; |
157 | } | 159 | } |
158 | } | 160 | } |
161 | } else if (!memcmp(to, "earlyprintk=", 12)) { | ||
162 | to += 12; | ||
163 | setup_early_printk(to); | ||
159 | } | 164 | } |
160 | |||
161 | } | 165 | } |
162 | c = *(to++); | 166 | c = *(to++); |
163 | if (!c) | 167 | if (!c) |
@@ -176,22 +180,36 @@ void __init setup_arch(char **cmdline_p) | |||
176 | #ifdef CONFIG_DUMMY_CONSOLE | 180 | #ifdef CONFIG_DUMMY_CONSOLE |
177 | conswitchp = &dummy_con; | 181 | conswitchp = &dummy_con; |
178 | #endif | 182 | #endif |
183 | |||
184 | #if defined(CONFIG_CMDLINE_BOOL) | ||
185 | strncpy(&command_line[0], CONFIG_CMDLINE, sizeof(command_line)); | ||
186 | command_line[sizeof(command_line) - 1] = 0; | ||
187 | #endif | ||
188 | |||
189 | /* Keep a copy of command line */ | ||
190 | *cmdline_p = &command_line[0]; | ||
191 | memcpy(boot_command_line, command_line, COMMAND_LINE_SIZE); | ||
192 | boot_command_line[COMMAND_LINE_SIZE - 1] = '\0'; | ||
193 | |||
194 | /* setup memory defaults from the user config */ | ||
195 | physical_mem_end = 0; | ||
196 | _ramend = CONFIG_MEM_SIZE * 1024 * 1024; | ||
197 | |||
198 | parse_cmdline_early(&command_line[0]); | ||
199 | |||
179 | cclk = get_cclk(); | 200 | cclk = get_cclk(); |
180 | sclk = get_sclk(); | 201 | sclk = get_sclk(); |
181 | 202 | ||
182 | #if !defined(CONFIG_BFIN_KERNEL_CLOCK) && defined(ANOMALY_05000273) | 203 | #if !defined(CONFIG_BFIN_KERNEL_CLOCK) |
183 | if (cclk == sclk) | 204 | if (ANOMALY_05000273 && cclk == sclk) |
184 | panic("ANOMALY 05000273, SCLK can not be same as CCLK"); | 205 | panic("ANOMALY 05000273, SCLK can not be same as CCLK"); |
185 | #endif | 206 | #endif |
186 | 207 | ||
187 | #if defined(ANOMALY_05000266) | 208 | #ifdef BF561_FAMILY |
188 | bfin_read_IMDMA_D0_IRQ_STATUS(); | 209 | if (ANOMALY_05000266) { |
189 | bfin_read_IMDMA_D1_IRQ_STATUS(); | 210 | bfin_read_IMDMA_D0_IRQ_STATUS(); |
190 | #endif | 211 | bfin_read_IMDMA_D1_IRQ_STATUS(); |
191 | 212 | } | |
192 | #ifdef DEBUG_SERIAL_EARLY_INIT | ||
193 | bfin_console_init(); /* early console registration */ | ||
194 | /* this give a chance to get printk() working before crash. */ | ||
195 | #endif | 213 | #endif |
196 | 214 | ||
197 | printk(KERN_INFO "Hardware Trace "); | 215 | printk(KERN_INFO "Hardware Trace "); |
@@ -212,22 +230,6 @@ void __init setup_arch(char **cmdline_p) | |||
212 | flash_probe(); | 230 | flash_probe(); |
213 | #endif | 231 | #endif |
214 | 232 | ||
215 | #if defined(CONFIG_CMDLINE_BOOL) | ||
216 | strncpy(&command_line[0], CONFIG_CMDLINE, sizeof(command_line)); | ||
217 | command_line[sizeof(command_line) - 1] = 0; | ||
218 | #endif | ||
219 | |||
220 | /* Keep a copy of command line */ | ||
221 | *cmdline_p = &command_line[0]; | ||
222 | memcpy(boot_command_line, command_line, COMMAND_LINE_SIZE); | ||
223 | boot_command_line[COMMAND_LINE_SIZE - 1] = '\0'; | ||
224 | |||
225 | /* setup memory defaults from the user config */ | ||
226 | physical_mem_end = 0; | ||
227 | _ramend = CONFIG_MEM_SIZE * 1024 * 1024; | ||
228 | |||
229 | parse_cmdline_early(&command_line[0]); | ||
230 | |||
231 | if (physical_mem_end == 0) | 233 | if (physical_mem_end == 0) |
232 | physical_mem_end = _ramend; | 234 | physical_mem_end = _ramend; |
233 | 235 | ||
@@ -260,7 +262,7 @@ void __init setup_arch(char **cmdline_p) | |||
260 | && ((unsigned long *)mtd_phys)[1] == ROMSB_WORD1) | 262 | && ((unsigned long *)mtd_phys)[1] == ROMSB_WORD1) |
261 | mtd_size = | 263 | mtd_size = |
262 | PAGE_ALIGN(be32_to_cpu(((unsigned long *)mtd_phys)[2])); | 264 | PAGE_ALIGN(be32_to_cpu(((unsigned long *)mtd_phys)[2])); |
263 | # if (defined(CONFIG_BLKFIN_CACHE) && defined(ANOMALY_05000263)) | 265 | # if (defined(CONFIG_BFIN_ICACHE) && ANOMALY_05000263) |
264 | /* Due to a Hardware Anomaly we need to limit the size of usable | 266 | /* Due to a Hardware Anomaly we need to limit the size of usable |
265 | * instruction memory to max 60MB, 56 if HUNT_FOR_ZERO is on | 267 | * instruction memory to max 60MB, 56 if HUNT_FOR_ZERO is on |
266 | * 05000263 - Hardware loop corrupted when taking an ICPLB exception | 268 | * 05000263 - Hardware loop corrupted when taking an ICPLB exception |
@@ -289,7 +291,7 @@ void __init setup_arch(char **cmdline_p) | |||
289 | _ebss = memory_mtd_start; /* define _ebss for compatible */ | 291 | _ebss = memory_mtd_start; /* define _ebss for compatible */ |
290 | #endif /* CONFIG_MTD_UCLINUX */ | 292 | #endif /* CONFIG_MTD_UCLINUX */ |
291 | 293 | ||
292 | #if (defined(CONFIG_BLKFIN_CACHE) && defined(ANOMALY_05000263)) | 294 | #if (defined(CONFIG_BFIN_ICACHE) && ANOMALY_05000263) |
293 | /* Due to a Hardware Anomaly we need to limit the size of usable | 295 | /* Due to a Hardware Anomaly we need to limit the size of usable |
294 | * instruction memory to max 60MB, 56 if HUNT_FOR_ZERO is on | 296 | * instruction memory to max 60MB, 56 if HUNT_FOR_ZERO is on |
295 | * 05000263 - Hardware loop corrupted when taking an ICPLB exception | 297 | * 05000263 - Hardware loop corrupted when taking an ICPLB exception |
@@ -334,13 +336,11 @@ void __init setup_arch(char **cmdline_p) | |||
334 | CPU, bfin_revid()); | 336 | CPU, bfin_revid()); |
335 | printk(KERN_INFO "Blackfin Linux support by http://blackfin.uclinux.org/\n"); | 337 | printk(KERN_INFO "Blackfin Linux support by http://blackfin.uclinux.org/\n"); |
336 | 338 | ||
337 | printk(KERN_INFO "Processor Speed: %lu MHz core clock and %lu Mhz System Clock\n", | 339 | printk(KERN_INFO "Processor Speed: %lu MHz core clock and %lu MHz System Clock\n", |
338 | cclk / 1000000, sclk / 1000000); | 340 | cclk / 1000000, sclk / 1000000); |
339 | 341 | ||
340 | #if defined(ANOMALY_05000273) | 342 | if (ANOMALY_05000273 && (cclk >> 1) <= sclk) |
341 | if ((cclk >> 1) <= sclk) | ||
342 | printk("\n\n\nANOMALY_05000273: CCLK must be >= 2*SCLK !!!\n\n\n"); | 343 | printk("\n\n\nANOMALY_05000273: CCLK must be >= 2*SCLK !!!\n\n\n"); |
343 | #endif | ||
344 | 344 | ||
345 | printk(KERN_INFO "Board Memory: %ldMB\n", physical_mem_end >> 20); | 345 | printk(KERN_INFO "Board Memory: %ldMB\n", physical_mem_end >> 20); |
346 | printk(KERN_INFO "Kernel Managed Memory: %ldMB\n", _ramend >> 20); | 346 | printk(KERN_INFO "Kernel Managed Memory: %ldMB\n", _ramend >> 20); |
@@ -535,9 +535,9 @@ static int show_cpuinfo(struct seq_file *m, void *v) | |||
535 | seq_printf(m, "I-CACHE:\tOFF\n"); | 535 | seq_printf(m, "I-CACHE:\tOFF\n"); |
536 | if ((bfin_read_DMEM_CONTROL()) & (ENDCPLB | DMC_ENABLE)) | 536 | if ((bfin_read_DMEM_CONTROL()) & (ENDCPLB | DMC_ENABLE)) |
537 | seq_printf(m, "D-CACHE:\tON" | 537 | seq_printf(m, "D-CACHE:\tON" |
538 | #if defined CONFIG_BLKFIN_WB | 538 | #if defined CONFIG_BFIN_WB |
539 | " (write-back)" | 539 | " (write-back)" |
540 | #elif defined CONFIG_BLKFIN_WT | 540 | #elif defined CONFIG_BFIN_WT |
541 | " (write-through)" | 541 | " (write-through)" |
542 | #endif | 542 | #endif |
543 | "\n"); | 543 | "\n"); |
@@ -566,15 +566,15 @@ static int show_cpuinfo(struct seq_file *m, void *v) | |||
566 | } | 566 | } |
567 | 567 | ||
568 | 568 | ||
569 | seq_printf(m, "I-CACHE Size:\t%dKB\n", BLKFIN_ICACHESIZE / 1024); | 569 | seq_printf(m, "I-CACHE Size:\t%dKB\n", BFIN_ICACHESIZE / 1024); |
570 | seq_printf(m, "D-CACHE Size:\t%dKB\n", dcache_size); | 570 | seq_printf(m, "D-CACHE Size:\t%dKB\n", dcache_size); |
571 | seq_printf(m, "I-CACHE Setup:\t%d Sub-banks/%d Ways, %d Lines/Way\n", | 571 | seq_printf(m, "I-CACHE Setup:\t%d Sub-banks/%d Ways, %d Lines/Way\n", |
572 | BLKFIN_ISUBBANKS, BLKFIN_IWAYS, BLKFIN_ILINES); | 572 | BFIN_ISUBBANKS, BFIN_IWAYS, BFIN_ILINES); |
573 | seq_printf(m, | 573 | seq_printf(m, |
574 | "D-CACHE Setup:\t%d Super-banks/%d Sub-banks/%d Ways, %d Lines/Way\n", | 574 | "D-CACHE Setup:\t%d Super-banks/%d Sub-banks/%d Ways, %d Lines/Way\n", |
575 | dsup_banks, BLKFIN_DSUBBANKS, BLKFIN_DWAYS, | 575 | dsup_banks, BFIN_DSUBBANKS, BFIN_DWAYS, |
576 | BLKFIN_DLINES); | 576 | BFIN_DLINES); |
577 | #ifdef CONFIG_BLKFIN_CACHE_LOCK | 577 | #ifdef CONFIG_BFIN_ICACHE_LOCK |
578 | switch (read_iloc()) { | 578 | switch (read_iloc()) { |
579 | case WAY0_L: | 579 | case WAY0_L: |
580 | seq_printf(m, "Way0 Locked-Down\n"); | 580 | seq_printf(m, "Way0 Locked-Down\n"); |