--- a/drivers/mtd/devices/m25p80.c +++ b/drivers/mtd/devices/m25p80.c @@ -192,6 +192,7 @@ static ssize_t m25p80_read(struct spi_no */ static int m25p_probe(struct spi_device *spi) { + struct mtd_part_parser_data ppdata = {0,}; struct flash_platform_data *data; struct m25p *flash; struct spi_nor *nor; @@ -244,8 +245,11 @@ static int m25p_probe(struct spi_device if (ret) return ret; - return mtd_device_register(&nor->mtd, data ? data->parts : NULL, - data ? data->nr_parts : 0); + return mtd_device_parse_register(&nor->mtd, + data ? data->part_probes : NULL, + &ppdata, + data ? data->parts : NULL, + data ? data->nr_parts : 0); } --- 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 */ };