string: factorize skip_spaces and export it to be generally available
[safe/jmp/linux-2.6] / drivers / mtd / ofpart.c
index f86e069..62d6a78 100644 (file)
@@ -20,7 +20,6 @@
 #include <linux/mtd/partitions.h>
 
 int __devinit of_mtd_parse_partitions(struct device *dev,
-                                      struct mtd_info *mtd,
                                       struct device_node *node,
                                       struct mtd_partition **pparts)
 {
@@ -48,13 +47,11 @@ int __devinit of_mtd_parse_partitions(struct device *dev,
                int len;
 
                reg = of_get_property(pp, "reg", &len);
-               if (!reg || (len != 2 * sizeof(u32))) {
-                       of_node_put(pp);
-                       dev_err(dev, "Invalid 'reg' on %s\n", node->full_name);
-                       kfree(*pparts);
-                       *pparts = NULL;
-                       return -EINVAL;
+               if (!reg) {
+                       nr_parts--;
+                       continue;
                }
+
                (*pparts)[i].offset = reg[0];
                (*pparts)[i].size = reg[1];
 
@@ -69,6 +66,16 @@ int __devinit of_mtd_parse_partitions(struct device *dev,
                i++;
        }
 
+       if (!i) {
+               of_node_put(pp);
+               dev_err(dev, "No valid partition found on %s\n", node->full_name);
+               kfree(*pparts);
+               *pparts = NULL;
+               return -EINVAL;
+       }
+
        return nr_parts;
 }
 EXPORT_SYMBOL(of_mtd_parse_partitions);
+
+MODULE_LICENSE("GPL");