+--- 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 */
+ };