|
@@ -168,7 +168,6 @@ void __cpuinit bfin_setup_cpudata(unsigned int cpu)
|
|
|
struct blackfin_cpudata *cpudata = &per_cpu(cpu_data, cpu);
|
|
|
|
|
|
cpudata->idle = current;
|
|
|
- cpudata->loops_per_jiffy = loops_per_jiffy;
|
|
|
cpudata->imemctl = bfin_read_IMEM_CONTROL();
|
|
|
cpudata->dmemctl = bfin_read_DMEM_CONTROL();
|
|
|
}
|
|
@@ -568,17 +567,23 @@ static __init void memory_setup(void)
|
|
|
# endif /* ANOMALY_05000263 */
|
|
|
# endif /* CONFIG_ROMFS_FS */
|
|
|
|
|
|
- memory_end -= mtd_size;
|
|
|
-
|
|
|
- if (mtd_size == 0) {
|
|
|
- console_init();
|
|
|
- panic("Don't boot kernel without rootfs attached.");
|
|
|
+ /* Since the default MTD_UCLINUX has no magic number, we just blindly
|
|
|
+ * read 8 past the end of the kernel's image, and look at it.
|
|
|
+ * When no image is attached, mtd_size is set to a random number
|
|
|
+ * Do some basic sanity checks before operating on things
|
|
|
+ */
|
|
|
+ if (mtd_size == 0 || memory_end <= mtd_size) {
|
|
|
+ pr_emerg("Could not find valid ram mtd attached.\n");
|
|
|
+ } else {
|
|
|
+ memory_end -= mtd_size;
|
|
|
+
|
|
|
+ /* Relocate MTD image to the top of memory after the uncached memory area */
|
|
|
+ uclinux_ram_map.phys = memory_mtd_start = memory_end;
|
|
|
+ uclinux_ram_map.size = mtd_size;
|
|
|
+ pr_info("Found mtd parition at 0x%p, (len=0x%lx), moving to 0x%p\n",
|
|
|
+ _end, mtd_size, (void *)memory_mtd_start);
|
|
|
+ dma_memcpy((void *)uclinux_ram_map.phys, _end, uclinux_ram_map.size);
|
|
|
}
|
|
|
-
|
|
|
- /* Relocate MTD image to the top of memory after the uncached memory area */
|
|
|
- uclinux_ram_map.phys = memory_mtd_start = memory_end;
|
|
|
- uclinux_ram_map.size = mtd_size;
|
|
|
- dma_memcpy((void *)uclinux_ram_map.phys, _end, uclinux_ram_map.size);
|
|
|
#endif /* CONFIG_MTD_UCLINUX */
|
|
|
|
|
|
#if (defined(CONFIG_BFIN_EXTMEM_ICACHEABLE) && ANOMALY_05000263)
|
|
@@ -868,13 +873,6 @@ void __init setup_arch(char **cmdline_p)
|
|
|
else
|
|
|
printk(KERN_CONT "and Disabled\n");
|
|
|
|
|
|
-#if defined(CONFIG_CHR_DEV_FLASH) || defined(CONFIG_BLK_DEV_FLASH)
|
|
|
- /* we need to initialize the Flashrom device here since we might
|
|
|
- * do things with flash early on in the boot
|
|
|
- */
|
|
|
- flash_probe();
|
|
|
-#endif
|
|
|
-
|
|
|
printk(KERN_INFO "Boot Mode: %i\n", bfin_read_SYSCR() & 0xF);
|
|
|
|
|
|
/* Newer parts mirror SWRST bits in SYSCR */
|
|
@@ -938,10 +936,6 @@ void __init setup_arch(char **cmdline_p)
|
|
|
CPU, bfin_revid());
|
|
|
}
|
|
|
|
|
|
- /* We can't run on BF548-0.1 due to ANOMALY 05000448 */
|
|
|
- if (bfin_cpuid() == 0x27de && bfin_revid() == 1)
|
|
|
- panic("You can't run on this processor due to 05000448");
|
|
|
-
|
|
|
printk(KERN_INFO "Blackfin Linux support by http://blackfin.uclinux.org/\n");
|
|
|
|
|
|
printk(KERN_INFO "Processor Speed: %lu MHz core clock and %lu MHz System Clock\n",
|
|
@@ -1164,9 +1158,9 @@ static int show_cpuinfo(struct seq_file *m, void *v)
|
|
|
sclk/1000000, sclk%1000000);
|
|
|
seq_printf(m, "bogomips\t: %lu.%02lu\n"
|
|
|
"Calibration\t: %lu loops\n",
|
|
|
- (cpudata->loops_per_jiffy * HZ) / 500000,
|
|
|
- ((cpudata->loops_per_jiffy * HZ) / 5000) % 100,
|
|
|
- (cpudata->loops_per_jiffy * HZ));
|
|
|
+ (loops_per_jiffy * HZ) / 500000,
|
|
|
+ ((loops_per_jiffy * HZ) / 5000) % 100,
|
|
|
+ (loops_per_jiffy * HZ));
|
|
|
|
|
|
/* Check Cache configutation */
|
|
|
switch (cpudata->dmemctl & (1 << DMC0_P | 1 << DMC1_P)) {
|