vserver 1.9.5.x5
[linux-2.6.git] / arch / mips / mips-boards / malta / malta_setup.c
index 72a16bf..3377e66 100644 (file)
 #include <linux/pci.h>
 #include <linux/tty.h>
 
+#ifdef CONFIG_MTD
+#include <linux/mtd/partitions.h>
+#include <linux/mtd/physmap.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/map.h>
+#endif
+
 #include <asm/cpu.h>
 #include <asm/bootinfo.h>
 #include <asm/irq.h>
@@ -53,6 +60,30 @@ struct resource standard_io_resources[] = {
        { "dma2", 0xc0, 0xdf, IORESOURCE_BUSY },
 };
 
+#ifdef CONFIG_MTD
+static struct mtd_partition malta_mtd_partitions[] = {
+       {
+               .name =         "YAMON",
+               .offset =       0x0,
+               .size =         0x100000,
+               .mask_flags =   MTD_WRITEABLE
+       },
+       {
+               .name =         "User FS",
+               .offset =       0x100000,
+               .size =         0x2e0000
+       },
+       {
+               .name =         "Board Config",
+               .offset =       0x3e0000,
+               .size =         0x020000,
+               .mask_flags =   MTD_WRITEABLE
+       }
+};
+
+#define number_partitions      (sizeof(malta_mtd_partitions)/sizeof(struct mtd_partition))
+#endif
+
 const char *get_system_type(void)
 {
        return "MIPS Malta";
@@ -132,13 +163,13 @@ static int __init malta_setup(void)
                        }
                }
                else
-                       panic ("Hardware DMA cache coherency not supported\n");
+                       panic("Hardware DMA cache coherency not supported");
 
 #endif
        }
 #ifdef CONFIG_DMA_COHERENT
        else {
-               panic ("Hardware DMA cache coherency not supported\n");
+               panic("Hardware DMA cache coherency not supported");
        }
 #endif
 
@@ -179,6 +210,15 @@ static int __init malta_setup(void)
        };
 #endif
 #endif
+
+#ifdef CONFIG_MTD
+       /*
+        * Support for MTD on Malta. Use the generic physmap driver
+        */
+       physmap_configure(0x1e000000, 0x400000, 4, NULL);
+       physmap_set_partitions(malta_mtd_partitions, number_partitions);
+#endif
+
        mips_reboot_setup();
 
        board_time_init = mips_time_init;