backward compatible code, if ssb is not enabled
[openwrt-10.03/.git] / target / linux / brcm47xx-2.6 / files / drivers / mtd / maps / bcm47xx-flash.c
index 93cda8b328e00897ffab9c7ff86d82c49670cb29..bc8d887377c93820213c5fcfad7e8fd338d6acea 100644 (file)
@@ -49,7 +49,9 @@
 #include <linux/squashfs_fs.h>
 #include <linux/jffs2.h>
 #include <linux/crc32.h>
+#ifdef CONFIG_SSB
 #include <linux/ssb/ssb.h>
+#endif
 #include <asm/io.h>
 
 
@@ -74,29 +76,11 @@ struct trx_header {
 #define WINDOW_SIZE 0x400000
 #define BUSWIDTH 2
 
+#ifdef CONFIG_SSB
 extern struct ssb_bus ssb;
+#endif
 static struct mtd_info *bcm947xx_mtd;
 
-static void bcm947xx_map_copy_from(struct map_info *map, void *to, unsigned long from, ssize_t len)
-{
-#define MIPS_MEMCPY_ALIGN 4
-       map_word ret;
-       ssize_t transfer;
-       ssize_t done = 0;
-       if ((len >= MIPS_MEMCPY_ALIGN) && (!(from & (MIPS_MEMCPY_ALIGN - 1))) && (!(((unsigned int)to & (MIPS_MEMCPY_ALIGN - 1))))) {
-               done = len & ~(MIPS_MEMCPY_ALIGN - 1);
-               memcpy_fromio(to, map->virt + from, done);
-       }
-       while (done < len) {
-               ret = map->read(map, from + done);
-               transfer = len - done;
-               if (transfer > map->bankwidth)
-                       transfer = map->bankwidth;
-               memcpy((void *)((unsigned long)to + done), &ret.x[0], transfer);
-               done += transfer;
-       }
-}
-
 static struct map_info bcm947xx_map = {
        name: "Physically mapped flash",
        size: WINDOW_SIZE,
@@ -405,13 +389,17 @@ init_mtd_partitions(struct mtd_info *mtd, size_t size)
 
 int __init init_bcm947xx_map(void)
 {
+#ifdef CONFIG_SSB
        struct ssb_mipscore *mcore = &ssb.mipscore;
+#endif
        size_t size;
        int ret = 0;
 #ifdef CONFIG_MTD_PARTITIONS
        struct mtd_partition *parts;
        int i;
 #endif
+
+#ifdef CONFIG_SSB
        u32 window = mcore->flash_window;
        u32 window_size = mcore->flash_window_size;
 
@@ -419,6 +407,10 @@ int __init init_bcm947xx_map(void)
        bcm947xx_map.phys = window;
        bcm947xx_map.size = window_size;
        bcm947xx_map.virt = ioremap_nocache(window, window_size);
+#else
+       printk("flash init: 0x%08x 0x%08x\n", WINDOW_ADDR, WINDOW_SIZE);
+       bcm947xx_map.virt = ioremap_nocache(WINDOW_ADDR, WINDOW_SIZE);
+#endif
 
        if (!bcm947xx_map.virt) {
                printk("Failed to ioremap\n");
@@ -426,8 +418,6 @@ int __init init_bcm947xx_map(void)
        }
        simple_map_init(&bcm947xx_map);
        
-       bcm947xx_map.copy_from = bcm947xx_map_copy_from;
-       
        if (!(bcm947xx_mtd = do_map_probe("cfi_probe", &bcm947xx_map))) {
                printk("Failed to do_map_probe\n");
                iounmap((void *)bcm947xx_map.virt);