fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / drivers / mtd / maps / redwood.c
index 4ece1c8..4d858b3 100644 (file)
@@ -1,20 +1,18 @@
 /*
- * $Id: redwood.c,v 1.6 2003/05/21 12:45:19 dwmw2 Exp $
+ * $Id: redwood.c,v 1.11 2005/11/07 11:14:28 gleixner Exp $
  *
  * drivers/mtd/maps/redwood.c
  *
  * FLASH map for the IBM Redwood 4/5/6 boards.
  *
+ * Author: MontaVista Software, Inc. <source@mvista.com>
  *
- * Author: Armin Kuster <akuster@mvista.com>
- *
- * 2001-2002 (c) MontaVista, Software, Inc. This file is licensed under
+ * 2001-2003 (c) MontaVista, Software, Inc. This file is licensed under
  * the terms of the GNU General Public License version 2. This program
  * is licensed "as is" without any warranty of any kind, whether express
  * or implied.
  */
 
-#include <linux/config.h>
 #include <linux/module.h>
 #include <linux/types.h>
 #include <linux/kernel.h>
@@ -80,7 +78,7 @@ static struct mtd_partition redwood_flash_partitions[] = {
 
 #define RW_PART0_OF    0
 #define RW_PART0_SZ    0x400000        /* 4 MiB data */
-#define RW_PART1_OF    RW_PART0_OF + RW_PART0_SZ 
+#define RW_PART1_OF    RW_PART0_OF + RW_PART0_SZ
 #define RW_PART1_SZ    0x10000         /* 64K VPD */
 #define RW_PART2_OF    RW_PART1_OF + RW_PART1_SZ
 #define RW_PART2_SZ    0x400000 - (0x10000 + 0x20000)
@@ -89,7 +87,7 @@ static struct mtd_partition redwood_flash_partitions[] = {
 
 static struct mtd_partition redwood_flash_partitions[] = {
        {
-               .name = "Redwood kernel",
+               .name = "Redwood filesystem",
                .offset = RW_PART0_OF,
                .size = RW_PART0_SZ
        },
@@ -100,7 +98,7 @@ static struct mtd_partition redwood_flash_partitions[] = {
                .mask_flags = MTD_WRITEABLE     /* force read-only */
        },
        {
-               .name = "Redwood filesystem",
+               .name = "Redwood kernel",
                .offset = RW_PART2_OF,
                .size = RW_PART2_SZ
        },
@@ -117,23 +115,23 @@ static struct mtd_partition redwood_flash_partitions[] = {
 struct map_info redwood_flash_map = {
        .name = "IBM Redwood",
        .size = WINDOW_SIZE,
-       .buswidth = 2,
+       .bankwidth = 2,
        .phys = WINDOW_ADDR,
 };
 
 
-#define NUM_REDWOOD_FLASH_PARTITIONS \
-       (sizeof(redwood_flash_partitions)/sizeof(redwood_flash_partitions[0]))
+#define NUM_REDWOOD_FLASH_PARTITIONS ARRAY_SIZE(redwood_flash_partitions)
 
 static struct mtd_info *redwood_mtd;
 
 int __init init_redwood_flash(void)
 {
+       int err;
+
        printk(KERN_NOTICE "redwood: flash mapping: %x at %x\n",
                        WINDOW_SIZE, WINDOW_ADDR);
 
-       redwood_flash_map.virt =
-               (unsigned long)ioremap(WINDOW_ADDR, WINDOW_SIZE);
+       redwood_flash_map.virt = ioremap(WINDOW_ADDR, WINDOW_SIZE);
 
        if (!redwood_flash_map.virt) {
                printk("init_redwood_flash: failed to ioremap\n");
@@ -145,11 +143,18 @@ int __init init_redwood_flash(void)
 
        if (redwood_mtd) {
                redwood_mtd->owner = THIS_MODULE;
-               return add_mtd_partitions(redwood_mtd,
+               err = add_mtd_partitions(redwood_mtd,
                                redwood_flash_partitions,
                                NUM_REDWOOD_FLASH_PARTITIONS);
+               if (err) {
+                       printk("init_redwood_flash: add_mtd_partitions failed\n");
+                       iounmap(redwood_flash_map.virt);
+               }
+               return err;
+
        }
 
+       iounmap(redwood_flash_map.virt);
        return -ENXIO;
 }
 
@@ -167,5 +172,5 @@ module_init(init_redwood_flash);
 module_exit(cleanup_redwood_flash);
 
 MODULE_LICENSE("GPL");
-MODULE_AUTHOR("Armin Kuster <akuster@mvista.com>");
+MODULE_AUTHOR("MontaVista Software <source@mvista.com>");
 MODULE_DESCRIPTION("MTD map driver for the IBM Redwood reference boards");