plat-ram driver
Hi list and Ben,
I was half way through implementing a mapping driver which allows initialization of a mtd device using a platform_device when I found the plat-ram.c driver. With some small changes one could use the driver for flash devices as well.
Would a patch like this be acceptible? Maybe we should rename the driver to something like plat-mtd. I did not do this to keep the patch small, but I would do the changes if there is a chance to get this upstream.
BTW there is a goto exit_free missing when add_mtd_device fails, the attached patch fixes this.
Sascha Hauer
include/linux/mtd/plat-ram.h +2 -1
@@ -22,7 +22,8 @@struct platdata_mtd_ram {char *mapname; -char **probes; +char **mtd_probes; +char **part_probes;struct mtd_partition *partitions;int nr_partitions;int bankwidth;
drivers/mtd/maps/plat-ram.c +12 -5
@@ -134,6 +134,7 @@struct platdata_mtd_ram *pdata;struct platram_info *info;struct resource *res; +char **type;int err =0 ;dev_dbg (dev,"probe entered\n" );
@@ -202,9 +203,14 @@dev_dbg (dev,"initialised map, probing for mtd\n" ); -/* probe for the right mtd map driver */ +/* probe for the right map driver */ +if (pdata->mtd_probes) { + type = pdata->mtd_probes; +for (; !info->mtd && *type; type++) + info->mtd =do_map_probe (*type, &info->map); + }else +do_map_probe ("map_ram" , &info->map); - info->mtd =do_map_probe ("map_ram" , &info->map);if (info->mtd ==NULL ) {dev_err (dev,"failed to probe for map_ram\n" ); err = -ENOMEM ;
@@ -219,11 +225,11 @@* to add this device whole */ #ifdef CONFIG_MTD_PARTITIONS -if (pdata->nr_partitions >0 ) { + {const char **probes = {NULL }; -if (pdata->probes) - probes = (const char **)pdata->probes; +if (pdata->part_probes) + probes = (const char **)pdata->part_probes; err =parse_mtd_partitions (info->mtd, probes, &info->partitions,0 );
@@ -237,6 +243,7 @@if (add_mtd_device (info->mtd)) {dev_err (dev,"add_mtd_device() failed\n" ); err = -ENOMEM ; + goto exit_free; }dev_info (dev,"registered mtd device\n" );