--- /dev/null
+--- a/drivers/mtd/devices/m25p80.c
++++ b/drivers/mtd/devices/m25p80.c
+@@ -968,6 +968,10 @@ static int __devinit m25p_probe(struct s
+ part_probes, &parts, 0);
+ }
+
++ if (nr_parts <= 0 && data && data->part_probes)
++ nr_parts = parse_mtd_partitions(&flash->mtd,
++ data->part_probes, &parts, 0);
++
+ if (nr_parts <= 0 && data && data->parts) {
+ parts = data->parts;
+ nr_parts = data->nr_parts;
+--- a/include/linux/spi/flash.h
++++ b/include/linux/spi/flash.h
+@@ -24,6 +24,7 @@ struct flash_platform_data {
+ unsigned int nr_parts;
+
+ char *type;
++ const char **part_probes;
+
+ /* we'll likely add more ... use JEDEC IDs, etc */
+ };
--- a/drivers/mtd/devices/m25p80.c
+++ b/drivers/mtd/devices/m25p80.c
-@@ -968,6 +968,16 @@ static int __devinit m25p_probe(struct s
- part_probes, &parts, 0);
- }
+@@ -972,6 +972,16 @@ static int __devinit m25p_probe(struct s
+ nr_parts = parse_mtd_partitions(&flash->mtd,
+ data->part_probes, &parts, 0);
+#ifdef CONFIG_MTD_MYLOADER_PARTS
+ if (nr_parts <= 0) {
--- a/drivers/mtd/devices/m25p80.c
+++ b/drivers/mtd/devices/m25p80.c
-@@ -978,6 +978,15 @@ static int __devinit m25p_probe(struct s
+@@ -982,6 +982,15 @@ static int __devinit m25p_probe(struct s
}
#endif
--- a/drivers/mtd/devices/m25p80.c
+++ b/drivers/mtd/devices/m25p80.c
-@@ -987,6 +987,16 @@ static int __devinit m25p_probe(struct s
+@@ -991,6 +991,16 @@ static int __devinit m25p_probe(struct s
part_probes, &parts, 0);
}
#endif