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