public inbox for linux-mtd@lists.infradead.org
 help / color / mirror / Atom feed
* [PATCH 00/44] Cleanup of parse/register scenario
@ 2011-06-07 13:35 Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 01/44] mtd: add new API for handling MTD registration Dmitry Eremin-Solenikov
                   ` (44 more replies)
  0 siblings, 45 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:35 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Lots of mtd drivers have more or less the same common logic:
parse partitions, then register them. Currently this ends up
with lots of code duplication, each copy having it's own features
and bugs. In this patch serie I create a special function
(mtd_device_parse_register) which handles all issues with acquiring
partition information, registering mtd device(s) and returning correct
error code.

The following changes since commit 85bd7e882840f4cb4d213768d252c754f22440ac:

  mtd: pxa3xx_nand: Fix blank page ECC mismatch (2011-06-07 15:40:29 +0300)

are available in the git repository at:
  git://git.infradead.org/users/dbaryshkov/mtd-cleanup.git mtd-parse-1st

Dmitry Eremin-Solenikov (44):
      mtd: add new API for handling MTD registration
      mtd: lart.c: use mtd_device_parse_register
      mtd: mtd_dataflash.c: use mtd_device_parse_register
      mtd: sst25l.c: use mtd_device_parse_register
      mtd: bfin-async-flash.c: use mtd_device_parse_register
      mtd: dc21285.c: use mtd_device_parse_register
      mtd: gpio-addr-flash.c: use mtd_device_parse_register
      mtd: h720x-flash.c: use mtd_device_parse_register
      mtd: impa7.c: use mtd_device_parse_register
      mtd: intel_vr_nor.c: use mtd_device_parse_register
      mtd: ixp2000.c: use mtd_device_parse_register
      mtd: ixp4xx.c: use mtd_device_parse_register
      mtd: lantiq-flash.c: use mtd_device_parse_register
      mtd: latch-addr-flash.c: use mtd_device_parse_register
      mtd: physmap.c: use mtd_device_parse_register
      mtd: plat-ram.c: use mtd_device_parse_register
      mtd: pxa2xx-flash.c: use mtd_device_parse_register
      mtd: rbtx4939-flash.c: use mtd_device_parse_register
      mtd: sa1100-flash.c: use mtd_device_parse_register
      mtd: solutionengine.c: use mtd_device_parse_register
      mtd: wr_sbc82xx_flash.c: use mtd_device_parse_register
      mtd: atmel_nand.c: use mtd_device_parse_register
      mtd: bcm_umi_nand.c: use mtd_device_parse_register
      mtd: cafe_nand.c: use mtd_device_parse_register
      mtd: cmx270_nand.c: use mtd_device_parse_register
      mtd: cs553x_nand.c: use mtd_device_parse_register
      mtd: davinci_nand.c: use mtd_device_parse_register
      mtd: edb7312.c: use mtd_device_parse_register
      mtd: fsmc_nand.c: use mtd_device_parse_register
      mtd: h1910.c: use mtd_device_parse_register
      mtd: jz4740_nand.c: use mtd_device_parse_register
      mtd: mxc_nand.c: use mtd_device_parse_register
      mtd: omap2.c: use mtd_device_parse_register
      mtd: orion_nand.c: use mtd_device_parse_register
      mtd: plat_nand.c: use mtd_device_parse_register
      mtd: ppchameleonevb.c: use mtd_device_parse_register
      mtd: pxa3xx_nand.c: use mtd_device_parse_register
      mtd: s3c2410.c: use mtd_device_parse_register
      mtd: sharpsl.c: use mtd_device_parse_register
      mtd: tmio_nand.c: use mtd_device_parse_register
      mtd: txx9ndfmc.c: use mtd_device_parse_register
      mtd: onenand/generic.c: use mtd_device_parse_register
      mtd: onenand/omap2.c: use mtd_device_parse_register
      mtd: onenand/samsung.c: use mtd_device_parse_register

 drivers/mtd/devices/lart.c          |   12 ++----
 drivers/mtd/devices/mtd_dataflash.c |   21 ++---------
 drivers/mtd/devices/sst25l.c        |   32 ++---------------
 drivers/mtd/maps/bfin-async-flash.c |   16 +-------
 drivers/mtd/maps/dc21285.c          |    9 +----
 drivers/mtd/maps/gpio-addr-flash.c  |   16 +-------
 drivers/mtd/maps/h720x-flash.c      |   21 +----------
 drivers/mtd/maps/impa7.c            |   25 ++-----------
 drivers/mtd/maps/intel_vr_nor.c     |    6 +---
 drivers/mtd/maps/ixp2000.c          |   11 +-----
 drivers/mtd/maps/ixp4xx.c           |   29 ++-------------
 drivers/mtd/maps/lantiq-flash.c     |   14 +------
 drivers/mtd/maps/latch-addr-flash.c |   21 +----------
 drivers/mtd/maps/physmap.c          |   23 +-----------
 drivers/mtd/maps/plat-ram.c         |   23 +-----------
 drivers/mtd/maps/pxa2xx-flash.c     |   20 +----------
 drivers/mtd/maps/rbtx4939-flash.c   |   18 +--------
 drivers/mtd/maps/sa1100-flash.c     |   30 ++--------------
 drivers/mtd/maps/solutionengine.c   |   30 ++++------------
 drivers/mtd/maps/wr_sbc82xx_flash.c |   30 ++++++----------
 drivers/mtd/mtdcore.c               |   30 ++++++++++++++++
 drivers/mtd/nand/atmel_nand.c       |   19 +---------
 drivers/mtd/nand/bcm_umi_nand.c     |   19 +---------
 drivers/mtd/nand/cafe_nand.c        |   11 +-----
 drivers/mtd/nand/cmx270_nand.c      |   20 +---------
 drivers/mtd/nand/cs553x_nand.c      |    7 +---
 drivers/mtd/nand/davinci_nand.c     |   25 +------------
 drivers/mtd/nand/edb7312.c          |   17 +--------
 drivers/mtd/nand/fsmc_nand.c        |   66 +++++------------------------------
 drivers/mtd/nand/h1910.c            |   15 +-------
 drivers/mtd/nand/jz4740_nand.c      |   11 ++----
 drivers/mtd/nand/mxc_nand.c         |   15 ++------
 drivers/mtd/nand/omap2.c            |   10 +----
 drivers/mtd/nand/orion_nand.c       |   12 +-----
 drivers/mtd/nand/plat_nand.c        |   22 ++----------
 drivers/mtd/nand/ppchameleonevb.c   |   42 +++++-----------------
 drivers/mtd/nand/pxa3xx_nand.c      |   11 +-----
 drivers/mtd/nand/s3c2410.c          |   18 ++-------
 drivers/mtd/nand/sharpsl.c          |   11 +-----
 drivers/mtd/nand/tmio_nand.c        |   12 ++-----
 drivers/mtd/nand/txx9ndfmc.c        |    7 +---
 drivers/mtd/onenand/generic.c       |   11 ++----
 drivers/mtd/onenand/omap2.c         |   13 ++-----
 drivers/mtd/onenand/samsung.c       |   11 ++----
 include/linux/mtd/mtd.h             |    5 +++
 45 files changed, 163 insertions(+), 684 deletions(-)

^ permalink raw reply	[flat|nested] 70+ messages in thread

* [PATCH 01/44] mtd: add new API for handling MTD registration
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:44   ` Jamie Iles
  2011-06-07 13:36 ` [PATCH 02/44] mtd: lart.c: use mtd_device_parse_register Dmitry Eremin-Solenikov
                   ` (43 subsequent siblings)
  44 siblings, 1 reply; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Lots (nearly all) mtd drivers contain nearly the similar code that
calls parse_mtd_partitions, provides some platform-default values, if
parsing fails, and registers  mtd device.

This is an aim to provide single implementation of this scenario:
mtd_device_parse_register() which will handle all this parsing and
defaults.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/mtdcore.c   |   30 ++++++++++++++++++++++++++++++
 include/linux/mtd/mtd.h |    5 +++++
 2 files changed, 35 insertions(+), 0 deletions(-)

diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c
index c510aff..ac871ad 100644
--- a/drivers/mtd/mtdcore.c
+++ b/drivers/mtd/mtdcore.c
@@ -451,6 +451,36 @@ int mtd_device_register(struct mtd_info *master,
 }
 EXPORT_SYMBOL_GPL(mtd_device_register);
 
+int mtd_device_parse_register(struct mtd_info *mtd,
+			      const char **part_probe_types,
+			      unsigned long origin,
+			      const struct mtd_partition *defparts,
+			      int defnr_parts)
+{
+	int err;
+	struct mtd_partition *parts;
+
+	err = parse_mtd_partitions(mtd, part_probe_types, &parts, origin);
+	if (err <= 0 && defnr_parts) {
+		unsigned long size = sizeof(*parts) * defnr_parts;
+		err = defnr_parts;
+		parts = kzalloc(size, GFP_KERNEL);
+		memcpy(parts, defparts, size);
+	}
+
+	if (err > 0) {
+		err = add_mtd_partitions(mtd, parts, err);
+		kfree(parts);
+	} else {
+		err = add_mtd_device(mtd);
+		if (err == 1)
+			err = -ENODEV;
+	}
+
+	return err;
+}
+EXPORT_SYMBOL_GPL(mtd_device_parse_register);
+
 /**
  * mtd_device_unregister - unregister an existing MTD device.
  *
diff --git a/include/linux/mtd/mtd.h b/include/linux/mtd/mtd.h
index 2541fb8..d28a241 100644
--- a/include/linux/mtd/mtd.h
+++ b/include/linux/mtd/mtd.h
@@ -327,6 +327,11 @@ struct mtd_partition;
 extern int mtd_device_register(struct mtd_info *master,
 			       const struct mtd_partition *parts,
 			       int nr_parts);
+extern int mtd_device_parse_register(struct mtd_info *mtd,
+			      const char **part_probe_types,
+			      unsigned long origin,
+			      const struct mtd_partition *defparts,
+			      int defnr_parts);
 extern int mtd_device_unregister(struct mtd_info *master);
 extern struct mtd_info *get_mtd_device(struct mtd_info *mtd, int num);
 extern int __get_mtd_device(struct mtd_info *mtd);
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 02/44] mtd: lart.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 01/44] mtd: add new API for handling MTD registration Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-08  8:59   ` Artem Bityutskiy
  2011-06-07 13:36 ` [PATCH 03/44] mtd: mtd_dataflash.c: " Dmitry Eremin-Solenikov
                   ` (42 subsequent siblings)
  44 siblings, 1 reply; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/devices/lart.c |   12 ++++--------
 1 files changed, 4 insertions(+), 8 deletions(-)

diff --git a/drivers/mtd/devices/lart.c b/drivers/mtd/devices/lart.c
index 772a0ff..48b513f 100644
--- a/drivers/mtd/devices/lart.c
+++ b/drivers/mtd/devices/lart.c
@@ -619,6 +619,10 @@ static struct mtd_partition lart_partitions[] = {
 		.size	= INITRD_LEN,		/* MTDPART_SIZ_FULL */
 	}
 };
+#define NUM_PARTITIONS ARRAY_SIZE(lart_partitions)
+#else
+#define lart_partitions NULL
+#define NUM_PARTITIONS 0
 #endif
 
 static int __init lart_flash_init (void)
@@ -683,23 +687,15 @@ static int __init lart_flash_init (void)
 #endif
 #endif
 
-#ifndef HAVE_PARTITIONS
-   result = mtd_device_register(&mtd, NULL, 0);
-#else
    result = mtd_device_register(&mtd, lart_partitions,
                                 ARRAY_SIZE(lart_partitions));
-#endif
 
    return (result);
 }
 
 static void __exit lart_flash_exit (void)
 {
-#ifndef HAVE_PARTITIONS
    mtd_device_unregister(&mtd);
-#else
-   mtd_device_unregister(&mtd);
-#endif
 }
 
 module_init (lart_flash_init);
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 03/44] mtd: mtd_dataflash.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 01/44] mtd: add new API for handling MTD registration Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 02/44] mtd: lart.c: use mtd_device_parse_register Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 04/44] mtd: sst25l.c: " Dmitry Eremin-Solenikov
                   ` (41 subsequent siblings)
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/devices/mtd_dataflash.c |   21 +++------------------
 1 files changed, 3 insertions(+), 18 deletions(-)

diff --git a/drivers/mtd/devices/mtd_dataflash.c b/drivers/mtd/devices/mtd_dataflash.c
index 4d4a9cd..8f6b02c 100644
--- a/drivers/mtd/devices/mtd_dataflash.c
+++ b/drivers/mtd/devices/mtd_dataflash.c
@@ -637,8 +637,6 @@ add_dataflash_otp(struct spi_device *spi, char *name,
 	struct flash_platform_data	*pdata = spi->dev.platform_data;
 	char				*otp_tag = "";
 	int				err = 0;
-	struct mtd_partition		*parts;
-	int				nr_parts = 0;
 
 	priv = kzalloc(sizeof *priv, GFP_KERNEL);
 	if (!priv)
@@ -677,23 +675,10 @@ add_dataflash_otp(struct spi_device *spi, char *name,
 			pagesize, otp_tag);
 	dev_set_drvdata(&spi->dev, priv);
 
-	nr_parts = parse_mtd_partitions(device, NULL, &parts, 0);
+	err = mtd_device_parse_register(device, NULL, 0,
+			pdata ? pdata->parts : NULL,
+			pdata ? pdata->nr_parts : 0);
 
-	if (nr_parts <= 0 && pdata && pdata->parts) {
-		parts = pdata->parts;
-		nr_parts = pdata->nr_parts;
-	}
-
-	if (nr_parts > 0) {
-		priv->partitioned = 1;
-		err = mtd_device_register(device, parts, nr_parts);
-		goto out;
-	}
-
-	if (mtd_device_register(device, NULL, 0) == 1)
-		err = -ENODEV;
-
-out:
 	if (!err)
 		return 0;
 
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 04/44] mtd: sst25l.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (2 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 03/44] mtd: mtd_dataflash.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-08  9:00   ` Artem Bityutskiy
  2011-06-07 13:36 ` [PATCH 05/44] mtd: bfin-async-flash.c: " Dmitry Eremin-Solenikov
                   ` (40 subsequent siblings)
  44 siblings, 1 reply; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/devices/sst25l.c |   32 ++++----------------------------
 1 files changed, 4 insertions(+), 28 deletions(-)

diff --git a/drivers/mtd/devices/sst25l.c b/drivers/mtd/devices/sst25l.c
index cd095af..faa9d3b 100644
--- a/drivers/mtd/devices/sst25l.c
+++ b/drivers/mtd/devices/sst25l.c
@@ -53,7 +53,6 @@ struct sst25l_flash {
 	struct mutex		lock;
 	struct mtd_info		mtd;
 
-	int 			partitioned;
 };
 
 struct flash_info {
@@ -381,8 +380,6 @@ static int __devinit sst25l_probe(struct spi_device *spi)
 	struct sst25l_flash *flash;
 	struct flash_platform_data *data;
 	int ret, i;
-	struct mtd_partition *parts = NULL;
-	int nr_parts = 0;
 
 	flash_info = sst25l_match_device(spi);
 	if (!flash_info)
@@ -423,31 +420,10 @@ static int __devinit sst25l_probe(struct spi_device *spi)
 	      flash->mtd.numeraseregions);
 
 
-	nr_parts = parse_mtd_partitions(&flash->mtd, NULL, &parts, 0);
-
-	if (nr_parts <= 0 && data && data->parts) {
-		parts = data->parts;
-		nr_parts = data->nr_parts;
-	}
-
-	if (nr_parts > 0) {
-		for (i = 0; i < nr_parts; i++) {
-			DEBUG(MTD_DEBUG_LEVEL2, "partitions[%d] = "
-			      "{.name = %s, .offset = 0x%llx, "
-			      ".size = 0x%llx (%lldKiB) }\n",
-			      i, parts[i].name,
-			      (long long)parts[i].offset,
-			      (long long)parts[i].size,
-			      (long long)(parts[i].size >> 10));
-		}
-
-		flash->partitioned = 1;
-		return mtd_device_register(&flash->mtd, parts,
-					   nr_parts);
-	}
-
-	ret = mtd_device_register(&flash->mtd, NULL, 0);
-	if (ret == 1) {
+	ret = mtd_device_parse_register(&flash->mtd, NULL, 0,
+			data ? data->parts : NULL,
+			data ? data->nr_parts : 0);
+	if (ret) {
 		kfree(flash);
 		dev_set_drvdata(&spi->dev, NULL);
 		return -ENODEV;
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 05/44] mtd: bfin-async-flash.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (3 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 04/44] mtd: sst25l.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-08  9:01   ` Artem Bityutskiy
  2011-06-07 13:36 ` [PATCH 06/44] mtd: dc21285.c: " Dmitry Eremin-Solenikov
                   ` (39 subsequent siblings)
  44 siblings, 1 reply; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/maps/bfin-async-flash.c |   16 ++--------------
 1 files changed, 2 insertions(+), 14 deletions(-)

diff --git a/drivers/mtd/maps/bfin-async-flash.c b/drivers/mtd/maps/bfin-async-flash.c
index d4297a9..246890e 100644
--- a/drivers/mtd/maps/bfin-async-flash.c
+++ b/drivers/mtd/maps/bfin-async-flash.c
@@ -41,7 +41,6 @@ struct async_state {
 	uint32_t flash_ambctl0, flash_ambctl1;
 	uint32_t save_ambctl0, save_ambctl1;
 	unsigned long irq_flags;
-	struct mtd_partition *parts;
 };
 
 static void switch_to_flash(struct async_state *state)
@@ -165,18 +164,8 @@ static int __devinit bfin_flash_probe(struct platform_device *pdev)
 		return -ENXIO;
 	}
 
-	ret = parse_mtd_partitions(state->mtd, part_probe_types, &pdata->parts, 0);
-	if (ret > 0) {
-		pr_devinit(KERN_NOTICE DRIVER_NAME ": Using commandline partition definition\n");
-		mtd_device_register(state->mtd, pdata->parts, ret);
-		state->parts = pdata->parts;
-	} else if (pdata->nr_parts) {
-		pr_devinit(KERN_NOTICE DRIVER_NAME ": Using board partition definition\n");
-		mtd_device_register(state->mtd, pdata->parts, pdata->nr_parts);
-	} else {
-		pr_devinit(KERN_NOTICE DRIVER_NAME ": no partition info available, registering whole flash at once\n");
-		mtd_device_register(state->mtd, NULL, 0);
-	}
+	mtd_device_parse_register(state->mtd, part_probe_types, 0,
+			pdata->parts, pdata->nr_parts);
 
 	platform_set_drvdata(pdev, state);
 
@@ -188,7 +177,6 @@ static int __devexit bfin_flash_remove(struct platform_device *pdev)
 	struct async_state *state = platform_get_drvdata(pdev);
 	gpio_free(state->enet_flash_pin);
 	mtd_device_unregister(state->mtd);
-	kfree(state->parts);
 	map_destroy(state->mtd);
 	kfree(state);
 	return 0;
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 06/44] mtd: dc21285.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (4 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 05/44] mtd: bfin-async-flash.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 07/44] mtd: gpio-addr-flash.c: " Dmitry Eremin-Solenikov
                   ` (38 subsequent siblings)
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/maps/dc21285.c |    9 +--------
 1 files changed, 1 insertions(+), 8 deletions(-)

diff --git a/drivers/mtd/maps/dc21285.c b/drivers/mtd/maps/dc21285.c
index 7a9e198..f43b365 100644
--- a/drivers/mtd/maps/dc21285.c
+++ b/drivers/mtd/maps/dc21285.c
@@ -145,14 +145,10 @@ static struct map_info dc21285_map = {
 
 
 /* Partition stuff */
-static struct mtd_partition *dc21285_parts;
 static const char *probes[] = { "RedBoot", "cmdlinepart", NULL };
 
 static int __init init_dc21285(void)
 {
-
-	int nrparts;
-
 	/* Determine bankwidth */
 	switch (*CSR_SA110_CNTL & (3<<14)) {
 		case SA110_CNTL_ROMWIDTH_8:
@@ -200,8 +196,7 @@ static int __init init_dc21285(void)
 
 	dc21285_mtd->owner = THIS_MODULE;
 
-	nrparts = parse_mtd_partitions(dc21285_mtd, probes, &dc21285_parts, 0);
-	mtd_device_register(dc21285_mtd, dc21285_parts, nrparts);
+	mtd_device_parse_register(dc21285_mtd, probes, 0, NULL, 0);
 
 	if(machine_is_ebsa285()) {
 		/*
@@ -224,8 +219,6 @@ static int __init init_dc21285(void)
 static void __exit cleanup_dc21285(void)
 {
 	mtd_device_unregister(dc21285_mtd);
-	if (dc21285_parts)
-		kfree(dc21285_parts);
 	map_destroy(dc21285_mtd);
 	iounmap(dc21285_map.virt);
 }
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 07/44] mtd: gpio-addr-flash.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (5 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 06/44] mtd: dc21285.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 08/44] mtd: h720x-flash.c: " Dmitry Eremin-Solenikov
                   ` (37 subsequent siblings)
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/maps/gpio-addr-flash.c |   16 ++--------------
 1 files changed, 2 insertions(+), 14 deletions(-)

diff --git a/drivers/mtd/maps/gpio-addr-flash.c b/drivers/mtd/maps/gpio-addr-flash.c
index 7568c5f..1ec66f0 100644
--- a/drivers/mtd/maps/gpio-addr-flash.c
+++ b/drivers/mtd/maps/gpio-addr-flash.c
@@ -187,7 +187,6 @@ static const char *part_probe_types[] = { "cmdlinepart", "RedBoot", NULL };
  */
 static int __devinit gpio_flash_probe(struct platform_device *pdev)
 {
-	int nr_parts;
 	size_t i, arr_size;
 	struct physmap_flash_data *pdata;
 	struct resource *memory;
@@ -252,20 +251,9 @@ static int __devinit gpio_flash_probe(struct platform_device *pdev)
 		return -ENXIO;
 	}
 
-	nr_parts = parse_mtd_partitions(state->mtd, part_probe_types,
-					&pdata->parts, 0);
-	if (nr_parts > 0) {
-		pr_devinit(KERN_NOTICE PFX "Using commandline partition definition\n");
-		kfree(pdata->parts);
-	} else if (pdata->nr_parts) {
-		pr_devinit(KERN_NOTICE PFX "Using board partition definition\n");
-		nr_parts = pdata->nr_parts;
-	} else {
-		pr_devinit(KERN_NOTICE PFX "no partition info available, registering whole flash at once\n");
-		nr_parts = 0;
-	}
 
-	mtd_device_register(state->mtd, pdata->parts, nr_parts);
+	mtd_device_parse_register(state->mtd, part_probe_types, 0,
+			pdata->parts, pdata->nr_parts);
 
 	return 0;
 }
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 08/44] mtd: h720x-flash.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (6 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 07/44] mtd: gpio-addr-flash.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 09/44] mtd: impa7.c: " Dmitry Eremin-Solenikov
                   ` (36 subsequent siblings)
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/maps/h720x-flash.c |   21 ++-------------------
 1 files changed, 2 insertions(+), 19 deletions(-)

diff --git a/drivers/mtd/maps/h720x-flash.c b/drivers/mtd/maps/h720x-flash.c
index f331a2c..49c1418 100644
--- a/drivers/mtd/maps/h720x-flash.c
+++ b/drivers/mtd/maps/h720x-flash.c
@@ -58,16 +58,11 @@ static struct mtd_partition h720x_partitions[] = {
 
 #define NUM_PARTITIONS ARRAY_SIZE(h720x_partitions)
 
-static int                   nr_mtd_parts;
-static struct mtd_partition *mtd_parts;
 /*
  * Initialize FLASH support
  */
 static int __init h720x_mtd_init(void)
 {
-
-	char	*part_type = NULL;
-
 	h720x_map.virt = ioremap(h720x_map.phys, h720x_map.size);
 
 	if (!h720x_map.virt) {
@@ -90,16 +85,8 @@ static int __init h720x_mtd_init(void)
 	if (mymtd) {
 		mymtd->owner = THIS_MODULE;
 
-		nr_mtd_parts = parse_mtd_partitions(mymtd, NULL, &mtd_parts, 0);
-		if (nr_mtd_parts > 0)
-			part_type = "command line";
-		if (nr_mtd_parts <= 0) {
-			mtd_parts = h720x_partitions;
-			nr_mtd_parts = NUM_PARTITIONS;
-			part_type = "builtin";
-		}
-		printk(KERN_INFO "Using %s partition table\n", part_type);
-		mtd_device_register(mymtd, mtd_parts, nr_mtd_parts);
+		mtd_device_parse_register(mymtd, NULL, 0,
+				h720x_partitions, NUM_PARTITIONS);
 		return 0;
 	}
 
@@ -118,10 +105,6 @@ static void __exit h720x_mtd_cleanup(void)
 		map_destroy(mymtd);
 	}
 
-	/* Free partition info, if commandline partition was used */
-	if (mtd_parts && (mtd_parts != h720x_partitions))
-		kfree (mtd_parts);
-
 	if (h720x_map.virt) {
 		iounmap((void *)h720x_map.virt);
 		h720x_map.virt = 0;
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 09/44] mtd: impa7.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (7 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 08/44] mtd: h720x-flash.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 10/44] mtd: intel_vr_nor.c: " Dmitry Eremin-Solenikov
                   ` (35 subsequent siblings)
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/maps/impa7.c |   25 +++----------------------
 1 files changed, 3 insertions(+), 22 deletions(-)

diff --git a/drivers/mtd/maps/impa7.c b/drivers/mtd/maps/impa7.c
index 2d45a48..7b8b5d8 100644
--- a/drivers/mtd/maps/impa7.c
+++ b/drivers/mtd/maps/impa7.c
@@ -58,15 +58,10 @@ static struct mtd_partition static_partitions[] =
 	},
 };
 
-static int mtd_parts_nb[NUM_FLASHBANKS];
-static struct mtd_partition *mtd_parts[NUM_FLASHBANKS];
-
-
 static int __init init_impa7(void)
 {
 	static const char *rom_probe_types[] = PROBETYPES;
 	const char **type;
-	const char *part_type = 0;
 	int i;
 	static struct { u_long addr; u_long size; } pt[NUM_FLASHBANKS] = {
 	  { WINDOW_ADDR0, WINDOW_SIZE0 },
@@ -96,23 +91,9 @@ static int __init init_impa7(void)
 		if (impa7_mtd[i]) {
 			impa7_mtd[i]->owner = THIS_MODULE;
 			devicesfound++;
-			mtd_parts_nb[i] = parse_mtd_partitions(impa7_mtd[i],
-							       NULL,
-							       &mtd_parts[i],
-							       0);
-			if (mtd_parts_nb[i] > 0) {
-				part_type = "command line";
-			} else {
-				mtd_parts[i] = static_partitions;
-				mtd_parts_nb[i] = ARRAY_SIZE(static_partitions);
-				part_type = "static";
-			}
-
-			printk(KERN_NOTICE MSG_PREFIX
-			       "using %s partition definition\n",
-			       part_type);
-			mtd_device_register(impa7_mtd[i],
-					    mtd_parts[i], mtd_parts_nb[i]);
+			mtd_device_parse_register(impa7_mtd[i], NULL, 0,
+					static_partitions,
+					ARRAY_SIZE(static_partitions));
 		}
 		else
 			iounmap((void *)impa7_map[i].virt);
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 10/44] mtd: intel_vr_nor.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (8 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 09/44] mtd: impa7.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 11/44] mtd: ixp2000.c: " Dmitry Eremin-Solenikov
                   ` (34 subsequent siblings)
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/maps/intel_vr_nor.c |    6 +-----
 1 files changed, 1 insertions(+), 5 deletions(-)

diff --git a/drivers/mtd/maps/intel_vr_nor.c b/drivers/mtd/maps/intel_vr_nor.c
index fd612c7..08c2396 100644
--- a/drivers/mtd/maps/intel_vr_nor.c
+++ b/drivers/mtd/maps/intel_vr_nor.c
@@ -44,7 +44,6 @@ struct vr_nor_mtd {
 	void __iomem *csr_base;
 	struct map_info map;
 	struct mtd_info *info;
-	int nr_parts;
 	struct pci_dev *dev;
 };
 
@@ -71,12 +70,9 @@ static void __devexit vr_nor_destroy_partitions(struct vr_nor_mtd *p)
 
 static int __devinit vr_nor_init_partitions(struct vr_nor_mtd *p)
 {
-	struct mtd_partition *parts;
-
 	/* register the flash bank */
 	/* partition the flash bank */
-	p->nr_parts = parse_mtd_partitions(p->info, NULL, &parts, 0);
-	return mtd_device_register(p->info, parts, p->nr_parts);
+	return mtd_device_parse_register(p->info, NULL, 0, NULL, 0);
 }
 
 static void __devexit vr_nor_destroy_mtd_setup(struct vr_nor_mtd *p)
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 11/44] mtd: ixp2000.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (9 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 10/44] mtd: intel_vr_nor.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 12/44] mtd: ixp4xx.c: " Dmitry Eremin-Solenikov
                   ` (33 subsequent siblings)
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/maps/ixp2000.c |   11 +----------
 1 files changed, 1 insertions(+), 10 deletions(-)

diff --git a/drivers/mtd/maps/ixp2000.c b/drivers/mtd/maps/ixp2000.c
index c00b917..93bf83d 100644
--- a/drivers/mtd/maps/ixp2000.c
+++ b/drivers/mtd/maps/ixp2000.c
@@ -38,7 +38,6 @@
 struct ixp2000_flash_info {
 	struct		mtd_info *mtd;
 	struct		map_info map;
-	struct		mtd_partition *partitions;
 	struct		resource *res;
 };
 
@@ -125,8 +124,6 @@ static int ixp2000_flash_remove(struct platform_device *dev)
 	if (info->map.map_priv_1)
 		iounmap((void *) info->map.map_priv_1);
 
-	kfree(info->partitions);
-
 	if (info->res) {
 		release_resource(info->res);
 		kfree(info->res);
@@ -228,13 +225,7 @@ static int ixp2000_flash_probe(struct platform_device *dev)
 	}
 	info->mtd->owner = THIS_MODULE;
 
-	err = parse_mtd_partitions(info->mtd, probes, &info->partitions, 0);
-	if (err > 0) {
-		err = mtd_device_register(info->mtd, info->partitions, err);
-		if(err)
-			dev_err(&dev->dev, "Could not parse partitions\n");
-	}
-
+	err = mtd_device_parse_register(info->mtd, probes, 0, NULL, 0);
 	if (err)
 		goto Error;
 
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 12/44] mtd: ixp4xx.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (10 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 11/44] mtd: ixp2000.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 13/44] mtd: lantiq-flash.c: " Dmitry Eremin-Solenikov
                   ` (32 subsequent siblings)
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/maps/ixp4xx.c |   29 ++++-------------------------
 1 files changed, 4 insertions(+), 25 deletions(-)

diff --git a/drivers/mtd/maps/ixp4xx.c b/drivers/mtd/maps/ixp4xx.c
index 155b219..3040901 100644
--- a/drivers/mtd/maps/ixp4xx.c
+++ b/drivers/mtd/maps/ixp4xx.c
@@ -145,7 +145,6 @@ static void ixp4xx_write16(struct map_info *map, map_word d, unsigned long adr)
 struct ixp4xx_flash_info {
 	struct mtd_info *mtd;
 	struct map_info map;
-	struct mtd_partition *partitions;
 	struct resource *res;
 };
 
@@ -168,8 +167,6 @@ static int ixp4xx_flash_remove(struct platform_device *dev)
 	if (info->map.virt)
 		iounmap(info->map.virt);
 
-	kfree(info->partitions);
-
 	if (info->res) {
 		release_resource(info->res);
 		kfree(info->res);
@@ -185,8 +182,6 @@ static int ixp4xx_flash_probe(struct platform_device *dev)
 {
 	struct flash_platform_data *plat = dev->dev.platform_data;
 	struct ixp4xx_flash_info *info;
-	const char *part_type = NULL;
-	int nr_parts = 0;
 	int err = -1;
 
 	if (!plat)
@@ -252,28 +247,12 @@ static int ixp4xx_flash_probe(struct platform_device *dev)
 	/* Use the fast version */
 	info->map.write = ixp4xx_write16;
 
-	nr_parts = parse_mtd_partitions(info->mtd, probes, &info->partitions,
-					dev->resource->start);
-	if (nr_parts > 0) {
-		part_type = "dynamic";
-	} else {
-		info->partitions = plat->parts;
-		nr_parts = plat->nr_parts;
-		part_type = "static";
-	}
-	if (nr_parts == 0)
-		printk(KERN_NOTICE "IXP4xx flash: no partition info "
-			"available, registering whole flash\n");
-	else
-		printk(KERN_NOTICE "IXP4xx flash: using %s partition "
-			"definition\n", part_type);
-
-	err = mtd_device_register(info->mtd, info->partitions, nr_parts);
-	if (err)
+	err = mtd_device_parse_register(info->mtd, probes, dev->resource->start,
+			plat->parts, plat->nr_parts);
+	if (err) {
 		printk(KERN_ERR "Could not parse partitions\n");
-
-	if (err)
 		goto Error;
+	}
 
 	return 0;
 
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 13/44] mtd: lantiq-flash.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (11 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 12/44] mtd: ixp4xx.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 14/44] mtd: latch-addr-flash.c: " Dmitry Eremin-Solenikov
                   ` (31 subsequent siblings)
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/maps/lantiq-flash.c |   14 ++------------
 1 files changed, 2 insertions(+), 12 deletions(-)

diff --git a/drivers/mtd/maps/lantiq-flash.c b/drivers/mtd/maps/lantiq-flash.c
index 57ea3fe..f750784 100644
--- a/drivers/mtd/maps/lantiq-flash.c
+++ b/drivers/mtd/maps/lantiq-flash.c
@@ -112,9 +112,7 @@ ltq_mtd_probe(struct platform_device *pdev)
 {
 	struct physmap_flash_data *ltq_mtd_data = dev_get_platdata(&pdev->dev);
 	struct ltq_mtd *ltq_mtd;
-	struct mtd_partition *parts;
 	struct resource *res;
-	int nr_parts = 0;
 	struct cfi_private *cfi;
 	int err;
 
@@ -170,16 +168,8 @@ ltq_mtd_probe(struct platform_device *pdev)
 	cfi->addr_unlock1 ^= 1;
 	cfi->addr_unlock2 ^= 1;
 
-	nr_parts = parse_mtd_partitions(ltq_mtd->mtd, NULL, &parts, 0);
-	if (nr_parts > 0) {
-		dev_info(&pdev->dev,
-			"using %d partitions from cmdline", nr_parts);
-	} else {
-		nr_parts = ltq_mtd_data->nr_parts;
-		parts = ltq_mtd_data->parts;
-	}
-
-	err = add_mtd_partitions(ltq_mtd->mtd, parts, nr_parts);
+	err = mtd_device_parse_register(ltq_mtd->mtd, NULL, 0,
+			ltq_mtd_data->parts, ltq_mtd_data->nr_parts);
 	if (err) {
 		dev_err(&pdev->dev, "failed to add partitions\n");
 		goto err_destroy;
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 14/44] mtd: latch-addr-flash.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (12 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 13/44] mtd: lantiq-flash.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 15/44] mtd: physmap.c: " Dmitry Eremin-Solenikov
                   ` (30 subsequent siblings)
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/maps/latch-addr-flash.c |   21 ++-------------------
 1 files changed, 2 insertions(+), 19 deletions(-)

diff --git a/drivers/mtd/maps/latch-addr-flash.c b/drivers/mtd/maps/latch-addr-flash.c
index 09cf704..119baa7 100644
--- a/drivers/mtd/maps/latch-addr-flash.c
+++ b/drivers/mtd/maps/latch-addr-flash.c
@@ -33,9 +33,6 @@ struct latch_addr_flash_info {
 	/* cache; could be found out of res */
 	unsigned long		win_mask;
 
-	int			nr_parts;
-	struct mtd_partition	*parts;
-
 	spinlock_t		lock;
 };
 
@@ -110,8 +107,6 @@ static int latch_addr_flash_remove(struct platform_device *dev)
 	latch_addr_data = dev->dev.platform_data;
 
 	if (info->mtd != NULL) {
-		if (info->nr_parts)
-			kfree(info->parts);
 		mtd_device_unregister(info->mtd);
 		map_destroy(info->mtd);
 	}
@@ -204,20 +199,8 @@ static int __devinit latch_addr_flash_probe(struct platform_device *dev)
 	}
 	info->mtd->owner = THIS_MODULE;
 
-	err = parse_mtd_partitions(info->mtd, NULL, &info->parts, 0);
-	if (err > 0) {
-		mtd_device_register(info->mtd, info->parts, err);
-		return 0;
-	}
-	if (latch_addr_data->nr_parts) {
-		pr_notice("Using latch-addr-flash partition information\n");
-		mtd_device_register(info->mtd,
-				    latch_addr_data->parts,
-				    latch_addr_data->nr_parts);
-		return 0;
-	}
-
-	mtd_device_register(info->mtd, NULL, 0);
+	mtd_device_parse_register(info->mtd, NULL, 0,
+			latch_addr_data->parts, latch_addr_data->nr_parts);
 	return 0;
 
 iounmap:
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 15/44] mtd: physmap.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (13 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 14/44] mtd: latch-addr-flash.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 16/44] mtd: plat-ram.c: " Dmitry Eremin-Solenikov
                   ` (29 subsequent siblings)
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/maps/physmap.c |   23 ++---------------------
 1 files changed, 2 insertions(+), 21 deletions(-)

diff --git a/drivers/mtd/maps/physmap.c b/drivers/mtd/maps/physmap.c
index 2174d10..256f787 100644
--- a/drivers/mtd/maps/physmap.c
+++ b/drivers/mtd/maps/physmap.c
@@ -27,8 +27,6 @@ struct physmap_flash_info {
 	struct mtd_info		*mtd[MAX_RESOURCES];
 	struct mtd_info		*cmtd;
 	struct map_info		map[MAX_RESOURCES];
-	int			nr_parts;
-	struct mtd_partition	*parts;
 };
 
 static int physmap_flash_remove(struct platform_device *dev)
@@ -46,8 +44,6 @@ static int physmap_flash_remove(struct platform_device *dev)
 
 	if (info->cmtd) {
 		mtd_device_unregister(info->cmtd);
-		if (info->nr_parts)
-			kfree(info->parts);
 		if (info->cmtd != info->mtd[0])
 			mtd_concat_destroy(info->cmtd);
 	}
@@ -175,23 +171,8 @@ static int physmap_flash_probe(struct platform_device *dev)
 	if (err)
 		goto err_out;
 
-	err = parse_mtd_partitions(info->cmtd, part_probe_types,
-				   &info->parts, 0);
-	if (err > 0) {
-		mtd_device_register(info->cmtd, info->parts, err);
-		info->nr_parts = err;
-		return 0;
-	}
-
-	if (physmap_data->nr_parts) {
-		printk(KERN_NOTICE "Using physmap partition information\n");
-		mtd_device_register(info->cmtd, physmap_data->parts,
-				    physmap_data->nr_parts);
-		return 0;
-	}
-
-	mtd_device_register(info->cmtd, NULL, 0);
-
+	mtd_device_parse_register(info->cmtd, part_probe_types, 0,
+			physmap_data->parts, physmap_data->nr_parts);
 	return 0;
 
 err_out:
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 16/44] mtd: plat-ram.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (14 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 15/44] mtd: physmap.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 17/44] mtd: pxa2xx-flash.c: " Dmitry Eremin-Solenikov
                   ` (28 subsequent siblings)
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/maps/plat-ram.c |   23 ++---------------------
 1 files changed, 2 insertions(+), 21 deletions(-)

diff --git a/drivers/mtd/maps/plat-ram.c b/drivers/mtd/maps/plat-ram.c
index 9ca1ecc..94f5534 100644
--- a/drivers/mtd/maps/plat-ram.c
+++ b/drivers/mtd/maps/plat-ram.c
@@ -44,8 +44,6 @@ struct platram_info {
 	struct device		*dev;
 	struct mtd_info		*mtd;
 	struct map_info		 map;
-	struct mtd_partition	*partitions;
-	bool			free_partitions;
 	struct resource		*area;
 	struct platdata_mtd_ram	*pdata;
 };
@@ -95,10 +93,6 @@ static int platram_remove(struct platform_device *pdev)
 
 	if (info->mtd) {
 		mtd_device_unregister(info->mtd);
-		if (info->partitions) {
-			if (info->free_partitions)
-				kfree(info->partitions);
-		}
 		map_destroy(info->mtd);
 	}
 
@@ -228,21 +222,8 @@ static int platram_probe(struct platform_device *pdev)
 	/* check to see if there are any available partitions, or wether
 	 * to add this device whole */
 
-	if (!pdata->nr_partitions) {
-		/* try to probe using the supplied probe type */
-		if (pdata->probes) {
-			err = parse_mtd_partitions(info->mtd, pdata->probes,
-					   &info->partitions, 0);
-			info->free_partitions = 1;
-			if (err > 0)
-				err = mtd_device_register(info->mtd,
-					info->partitions, err);
-		}
-	}
-	/* use the static mapping */
-	else
-		err = mtd_device_register(info->mtd, pdata->partitions,
-					  pdata->nr_partitions);
+	err = mtd_device_parse_register(info->mtd, pdata->probes, 0,
+			pdata->partitions, pdata->nr_partitions);
 	if (!err)
 		dev_info(&pdev->dev, "registered mtd device\n");
 
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 17/44] mtd: pxa2xx-flash.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (15 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 16/44] mtd: plat-ram.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 18/44] mtd: rbtx4939-flash.c: " Dmitry Eremin-Solenikov
                   ` (27 subsequent siblings)
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/maps/pxa2xx-flash.c |   20 +-------------------
 1 files changed, 1 insertions(+), 19 deletions(-)

diff --git a/drivers/mtd/maps/pxa2xx-flash.c b/drivers/mtd/maps/pxa2xx-flash.c
index f59d62f..8fb8198 100644
--- a/drivers/mtd/maps/pxa2xx-flash.c
+++ b/drivers/mtd/maps/pxa2xx-flash.c
@@ -41,8 +41,6 @@ static void pxa2xx_map_inval_cache(struct map_info *map, unsigned long from,
 }
 
 struct pxa2xx_flash_info {
-	struct mtd_partition	*parts;
-	int			nr_parts;
 	struct mtd_info		*mtd;
 	struct map_info		map;
 };
@@ -55,9 +53,7 @@ static int __devinit pxa2xx_flash_probe(struct platform_device *pdev)
 {
 	struct flash_platform_data *flash = pdev->dev.platform_data;
 	struct pxa2xx_flash_info *info;
-	struct mtd_partition *parts;
 	struct resource *res;
-	int ret = 0;
 
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	if (!res)
@@ -71,8 +67,6 @@ static int __devinit pxa2xx_flash_probe(struct platform_device *pdev)
 	info->map.bankwidth = flash->width;
 	info->map.phys = res->start;
 	info->map.size = res->end - res->start + 1;
-	info->parts = flash->parts;
-	info->nr_parts = flash->nr_parts;
 
 	info->map.virt = ioremap(info->map.phys, info->map.size);
 	if (!info->map.virt) {
@@ -104,18 +98,7 @@ static int __devinit pxa2xx_flash_probe(struct platform_device *pdev)
 	}
 	info->mtd->owner = THIS_MODULE;
 
-	ret = parse_mtd_partitions(info->mtd, probes, &parts, 0);
-
-	if (ret > 0) {
-		info->nr_parts = ret;
-		info->parts = parts;
-	}
-
-	if (!info->nr_parts)
-		printk("Registering %s as whole device\n",
-		       info->map.name);
-
-	mtd_device_register(info->mtd, info->parts, info->nr_parts);
+	mtd_device_parse_register(info->mtd, probes, 0, NULL, 0);
 
 	platform_set_drvdata(pdev, info);
 	return 0;
@@ -133,7 +116,6 @@ static int __devexit pxa2xx_flash_remove(struct platform_device *dev)
 	iounmap(info->map.virt);
 	if (info->map.cached)
 		iounmap(info->map.cached);
-	kfree(info->parts);
 	kfree(info);
 	return 0;
 }
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 18/44] mtd: rbtx4939-flash.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (16 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 17/44] mtd: pxa2xx-flash.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-08 13:50   ` Atsushi Nemoto
  2011-06-07 13:36 ` [PATCH 19/44] mtd: sa1100-flash.c: " Dmitry Eremin-Solenikov
                   ` (26 subsequent siblings)
  44 siblings, 1 reply; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/maps/rbtx4939-flash.c |   18 ++----------------
 1 files changed, 2 insertions(+), 16 deletions(-)

diff --git a/drivers/mtd/maps/rbtx4939-flash.c b/drivers/mtd/maps/rbtx4939-flash.c
index 5d15b6b..95f816c 100644
--- a/drivers/mtd/maps/rbtx4939-flash.c
+++ b/drivers/mtd/maps/rbtx4939-flash.c
@@ -25,8 +25,6 @@
 struct rbtx4939_flash_info {
 	struct mtd_info *mtd;
 	struct map_info map;
-	int nr_parts;
-	struct mtd_partition *parts;
 };
 
 static int rbtx4939_flash_remove(struct platform_device *dev)
@@ -41,8 +39,6 @@ static int rbtx4939_flash_remove(struct platform_device *dev)
 	if (info->mtd) {
 		struct rbtx4939_flash_data *pdata = dev->dev.platform_data;
 
-		if (info->nr_parts)
-			kfree(info->parts);
 		mtd_device_unregister(info->mtd);
 		map_destroy(info->mtd);
 	}
@@ -106,18 +102,8 @@ static int rbtx4939_flash_probe(struct platform_device *dev)
 	info->mtd->owner = THIS_MODULE;
 	if (err)
 		goto err_out;
-	err = parse_mtd_partitions(info->mtd, NULL, &info->parts, 0);
-	if (err > 0) {
-		mtd_device_register(info->mtd, info->parts, err);
-		info->nr_parts = err;
-		return 0;
-	}
-
-	if (pdata->nr_parts) {
-		pr_notice("Using rbtx4939 partition information\n");
-		mtd_device_register(info->mtd, pdata->parts, pdata->nr_parts);
-		return 0;
-	}
+	err = mtd_device_parse_register(info->mtd, NULL, 0,
+			pdata->parts, pdata->nr_parts);
 
 	mtd_device_register(info->mtd, NULL, 0);
 	return 0;
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 19/44] mtd: sa1100-flash.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (17 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 18/44] mtd: rbtx4939-flash.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 20/44] mtd: solutionengine.c: " Dmitry Eremin-Solenikov
                   ` (25 subsequent siblings)
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/maps/sa1100-flash.c |   30 +++---------------------------
 1 files changed, 3 insertions(+), 27 deletions(-)

diff --git a/drivers/mtd/maps/sa1100-flash.c b/drivers/mtd/maps/sa1100-flash.c
index a9b5e0e..fa9c0a9 100644
--- a/drivers/mtd/maps/sa1100-flash.c
+++ b/drivers/mtd/maps/sa1100-flash.c
@@ -131,10 +131,8 @@ struct sa_subdev_info {
 };
 
 struct sa_info {
-	struct mtd_partition	*parts;
 	struct mtd_info		*mtd;
 	int			num_subdev;
-	unsigned int		nr_parts;
 	struct sa_subdev_info	subdev[0];
 };
 
@@ -231,8 +229,6 @@ static void sa1100_destroy(struct sa_info *info, struct flash_platform_data *pla
 			mtd_concat_destroy(info->mtd);
 	}
 
-	kfree(info->parts);
-
 	for (i = info->num_subdev - 1; i >= 0; i--)
 		sa1100_destroy_subdev(&info->subdev[i]);
 	kfree(info);
@@ -341,10 +337,8 @@ static const char *part_probes[] = { "cmdlinepart", "RedBoot", NULL };
 static int __devinit sa1100_mtd_probe(struct platform_device *pdev)
 {
 	struct flash_platform_data *plat = pdev->dev.platform_data;
-	struct mtd_partition *parts;
-	const char *part_type = NULL;
 	struct sa_info *info;
-	int err, nr_parts = 0;
+	int err;
 
 	if (!plat)
 		return -ENODEV;
@@ -358,26 +352,8 @@ static int __devinit sa1100_mtd_probe(struct platform_device *pdev)
 	/*
 	 * Partition selection stuff.
 	 */
-	nr_parts = parse_mtd_partitions(info->mtd, part_probes, &parts, 0);
-	if (nr_parts > 0) {
-		info->parts = parts;
-		part_type = "dynamic";
-	} else {
-		parts = plat->parts;
-		nr_parts = plat->nr_parts;
-		part_type = "static";
-	}
-
-	if (nr_parts == 0)
-		printk(KERN_NOTICE "SA1100 flash: no partition info "
-			"available, registering whole flash\n");
-	else
-		printk(KERN_NOTICE "SA1100 flash: using %s partition "
-			"definition\n", part_type);
-
-	mtd_device_register(info->mtd, parts, nr_parts);
-
-	info->nr_parts = nr_parts;
+	mtd_device_parse_register(info->mtd, part_probes, 0,
+			plat->parts, plat->nr_parts);
 
 	platform_set_drvdata(pdev, info);
 	err = 0;
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 20/44] mtd: solutionengine.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (18 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 19/44] mtd: sa1100-flash.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 21/44] mtd: wr_sbc82xx_flash.c: " Dmitry Eremin-Solenikov
                   ` (24 subsequent siblings)
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/maps/solutionengine.c |   30 +++++++-----------------------
 1 files changed, 7 insertions(+), 23 deletions(-)

diff --git a/drivers/mtd/maps/solutionengine.c b/drivers/mtd/maps/solutionengine.c
index cbf6bad..496c407 100644
--- a/drivers/mtd/maps/solutionengine.c
+++ b/drivers/mtd/maps/solutionengine.c
@@ -19,8 +19,6 @@
 static struct mtd_info *flash_mtd;
 static struct mtd_info *eprom_mtd;
 
-static struct mtd_partition *parsed_parts;
-
 struct map_info soleng_eprom_map = {
 	.name = "Solution Engine EPROM",
 	.size = 0x400000,
@@ -51,12 +49,14 @@ static struct mtd_partition superh_se_partitions[] = {
 		.size = MTDPART_SIZ_FULL,
 	}
 };
+#define NUM_PARTITIONS ARRAY_SIZE(superh_se_partitions)
+#else
+#define superh_se_partitions NULL
+#define NUM_PARTITIONS 0
 #endif /* CONFIG_MTD_SUPERH_RESERVE */
 
 static int __init init_soleng_maps(void)
 {
-	int nr_parts = 0;
-
 	/* First probe at offset 0 */
 	soleng_flash_map.phys = 0;
 	soleng_flash_map.virt = (void __iomem *)P2SEGADDR(0);
@@ -92,21 +92,8 @@ static int __init init_soleng_maps(void)
 		mtd_device_register(eprom_mtd, NULL, 0);
 	}
 
-	nr_parts = parse_mtd_partitions(flash_mtd, probes, &parsed_parts, 0);
-
-#ifdef CONFIG_MTD_SUPERH_RESERVE
-	if (nr_parts <= 0) {
-		printk(KERN_NOTICE "Using configured partition at 0x%08x.\n",
-		       CONFIG_MTD_SUPERH_RESERVE);
-		parsed_parts = superh_se_partitions;
-		nr_parts = sizeof(superh_se_partitions)/sizeof(*parsed_parts);
-	}
-#endif /* CONFIG_MTD_SUPERH_RESERVE */
-
-	if (nr_parts > 0)
-		mtd_device_register(flash_mtd, parsed_parts, nr_parts);
-	else
-		mtd_device_register(flash_mtd, NULL, 0);
+	mtd_device_parse_register(flash_mtd, probes, 0,
+			superh_se_partitions, NUM_PARTITIONS);
 
 	return 0;
 }
@@ -118,10 +105,7 @@ static void __exit cleanup_soleng_maps(void)
 		map_destroy(eprom_mtd);
 	}
 
-	if (parsed_parts)
-		mtd_device_unregister(flash_mtd);
-	else
-		mtd_device_unregister(flash_mtd);
+	mtd_device_unregister(flash_mtd);
 	map_destroy(flash_mtd);
 }
 
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 21/44] mtd: wr_sbc82xx_flash.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (19 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 20/44] mtd: solutionengine.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 22/44] mtd: atmel_nand.c: " Dmitry Eremin-Solenikov
                   ` (23 subsequent siblings)
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/maps/wr_sbc82xx_flash.c |   30 +++++++++++-------------------
 1 files changed, 11 insertions(+), 19 deletions(-)

diff --git a/drivers/mtd/maps/wr_sbc82xx_flash.c b/drivers/mtd/maps/wr_sbc82xx_flash.c
index 901ce96..aaec902 100644
--- a/drivers/mtd/maps/wr_sbc82xx_flash.c
+++ b/drivers/mtd/maps/wr_sbc82xx_flash.c
@@ -20,7 +20,6 @@
 #include <asm/immap_cpm2.h>
 
 static struct mtd_info *sbcmtd[3];
-static struct mtd_partition *sbcmtd_parts[3];
 
 struct map_info sbc82xx_flash_map[3] = {
 	{.name = "Boot flash"},
@@ -101,6 +100,7 @@ static int __init init_sbc82xx_flash(void)
 	for (i=0; i<3; i++) {
 		int8_t flashcs[3] = { 0, 6, 1 };
 		int nr_parts;
+		struct mtd_partition *defparts;
 
 		printk(KERN_NOTICE "PowerQUICC II %s (%ld MiB on CS%d",
 		       sbc82xx_flash_map[i].name,
@@ -129,24 +129,20 @@ static int __init init_sbc82xx_flash(void)
 
 		sbcmtd[i]->owner = THIS_MODULE;
 
-		nr_parts = parse_mtd_partitions(sbcmtd[i], part_probes,
-						&sbcmtd_parts[i], 0);
-		if (nr_parts > 0) {
-			mtd_device_register(sbcmtd[i], sbcmtd_parts[i],
-					    nr_parts);
-			continue;
-		}
-
 		/* No partitioning detected. Use default */
 		if (i == 2) {
-			mtd_device_register(sbcmtd[i], NULL, 0);
+			defparts = NULL;
+			nr_parts = 0;
 		} else if (i == bigflash) {
-			mtd_device_register(sbcmtd[i], bigflash_parts,
-					    ARRAY_SIZE(bigflash_parts));
+			defparts = bigflash_parts;
+			nr_parts = ARRAY_SIZE(bigflash_parts);
 		} else {
-			mtd_device_register(sbcmtd[i], smallflash_parts,
-					    ARRAY_SIZE(smallflash_parts));
+			defparts = smallflash_parts;
+			nr_parts = ARRAY_SIZE(smallflash_parts);
 		}
+
+		mtd_device_parse_register(sbcmtd[i], part_probes, 0,
+				defparts, nr_parts);
 	}
 	return 0;
 }
@@ -159,12 +155,8 @@ static void __exit cleanup_sbc82xx_flash(void)
 		if (!sbcmtd[i])
 			continue;
 
-		if (i<2 || sbcmtd_parts[i])
-			mtd_device_unregister(sbcmtd[i]);
-		else
-			mtd_device_unregister(sbcmtd[i]);
+		mtd_device_unregister(sbcmtd[i]);
 
-		kfree(sbcmtd_parts[i]);
 		map_destroy(sbcmtd[i]);
 
 		iounmap((void *)sbc82xx_flash_map[i].virt);
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 22/44] mtd: atmel_nand.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (20 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 21/44] mtd: wr_sbc82xx_flash.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 23/44] mtd: bcm_umi_nand.c: " Dmitry Eremin-Solenikov
                   ` (22 subsequent siblings)
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/nand/atmel_nand.c |   19 ++-----------------
 1 files changed, 2 insertions(+), 17 deletions(-)

diff --git a/drivers/mtd/nand/atmel_nand.c b/drivers/mtd/nand/atmel_nand.c
index a19a112..6702208 100644
--- a/drivers/mtd/nand/atmel_nand.c
+++ b/drivers/mtd/nand/atmel_nand.c
@@ -491,8 +491,6 @@ static int __init atmel_nand_probe(struct platform_device *pdev)
 	struct resource *regs;
 	struct resource *mem;
 	int res;
-	struct mtd_partition *partitions = NULL;
-	int num_partitions = 0;
 
 	mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	if (!mem) {
@@ -651,24 +649,11 @@ static int __init atmel_nand_probe(struct platform_device *pdev)
 	}
 
 	mtd->name = "atmel_nand";
-	num_partitions = parse_mtd_partitions(mtd, NULL, &partitions, 0);
-	if (num_partitions <= 0 && host->board->parts) {
-		partitions = host->board->parts;
-		num_partitions = host->board->num_parts;
-	}
-
-	if ((!partitions) || (num_partitions == 0)) {
-		printk(KERN_ERR "atmel_nand: No partitions defined, or unsupported device.\n");
-		res = -ENXIO;
-		goto err_no_partitions;
-	}
-
-	res = mtd_device_register(mtd, partitions, num_partitions);
+	res = mtd_device_parse_register(mtd, NULL, 0,
+			host->board->parts, host->board->num_parts);
 	if (!res)
 		return res;
 
-err_no_partitions:
-	nand_release(mtd);
 err_scan_tail:
 err_scan_ident:
 err_no_card:
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 23/44] mtd: bcm_umi_nand.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (21 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 22/44] mtd: atmel_nand.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 24/44] mtd: cafe_nand.c: " Dmitry Eremin-Solenikov
                   ` (21 subsequent siblings)
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/nand/bcm_umi_nand.c |   19 ++-----------------
 1 files changed, 2 insertions(+), 17 deletions(-)

diff --git a/drivers/mtd/nand/bcm_umi_nand.c b/drivers/mtd/nand/bcm_umi_nand.c
index e0230c5..d98bc48 100644
--- a/drivers/mtd/nand/bcm_umi_nand.c
+++ b/drivers/mtd/nand/bcm_umi_nand.c
@@ -489,23 +489,8 @@ static int __devinit bcm_umi_nand_probe(struct platform_device *pdev)
 	}
 
 	/* Register the partitions */
-	{
-		int nr_partitions;
-		struct mtd_partition *partition_info;
-
-		board_mtd->name = "bcm_umi-nand";
-		nr_partitions = parse_mtd_partitions(board_mtd, NULL,
-						     &partition_info, 0);
-
-		if (nr_partitions <= 0) {
-			printk(KERN_ERR "BCM UMI NAND: Too few partitions - %d\n",
-			       nr_partitions);
-			iounmap(bcm_umi_io_base);
-			kfree(board_mtd);
-			return -EIO;
-		}
-		mtd_device_register(board_mtd, partition_info, nr_partitions);
-	}
+	board_mtd->name = "bcm_umi-nand";
+	mtd_device_parse_register(board_mtd, NULL, 0, NULL, 0);
 
 	/* Return happy */
 	return 0;
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 24/44] mtd: cafe_nand.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (22 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 23/44] mtd: bcm_umi_nand.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 25/44] mtd: cmx270_nand.c: " Dmitry Eremin-Solenikov
                   ` (20 subsequent siblings)
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/nand/cafe_nand.c |   11 ++---------
 1 files changed, 2 insertions(+), 9 deletions(-)

diff --git a/drivers/mtd/nand/cafe_nand.c b/drivers/mtd/nand/cafe_nand.c
index 88ac4b5..db3bfac 100644
--- a/drivers/mtd/nand/cafe_nand.c
+++ b/drivers/mtd/nand/cafe_nand.c
@@ -57,7 +57,6 @@
 
 struct cafe_priv {
 	struct nand_chip nand;
-	struct mtd_partition *parts;
 	struct pci_dev *pdev;
 	void __iomem *mmio;
 	struct rs_control *rs;
@@ -630,8 +629,6 @@ static int __devinit cafe_nand_probe(struct pci_dev *pdev,
 	struct cafe_priv *cafe;
 	uint32_t ctrl;
 	int err = 0;
-	struct mtd_partition *parts;
-	int nr_parts;
 
 	/* Very old versions shared the same PCI ident for all three
 	   functions on the chip. Verify the class too... */
@@ -804,12 +801,8 @@ static int __devinit cafe_nand_probe(struct pci_dev *pdev,
 	mtd_device_register(mtd, NULL, 0);
 
 	mtd->name = "cafe_nand";
-	nr_parts = parse_mtd_partitions(mtd, part_probes, &parts, 0);
-	if (nr_parts > 0) {
-		cafe->parts = parts;
-		dev_info(&cafe->pdev->dev, "%d partitions found\n", nr_parts);
-		mtd_device_register(mtd, parts, nr_parts);
-	}
+	mtd_device_parse_register(mtd, part_probes, 0, NULL, 0);
+
 	goto out;
 
  out_irq:
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 25/44] mtd: cmx270_nand.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (23 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 24/44] mtd: cafe_nand.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 26/44] mtd: cs553x_nand.c: " Dmitry Eremin-Solenikov
                   ` (19 subsequent siblings)
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/nand/cmx270_nand.c |   20 ++------------------
 1 files changed, 2 insertions(+), 18 deletions(-)

diff --git a/drivers/mtd/nand/cmx270_nand.c b/drivers/mtd/nand/cmx270_nand.c
index f8f5b7c..8305692 100644
--- a/drivers/mtd/nand/cmx270_nand.c
+++ b/drivers/mtd/nand/cmx270_nand.c
@@ -149,9 +149,6 @@ static int cmx270_device_ready(struct mtd_info *mtd)
 static int __init cmx270_init(void)
 {
 	struct nand_chip *this;
-	const char *part_type;
-	struct mtd_partition *mtd_parts;
-	int mtd_parts_nb = 0;
 	int ret;
 
 	if (!(machine_is_armcore() && cpu_is_pxa27x()))
@@ -220,22 +217,9 @@ static int __init cmx270_init(void)
 		goto err_scan;
 	}
 
-	mtd_parts_nb = parse_mtd_partitions(cmx270_nand_mtd, NULL,
-					    &mtd_parts, 0);
-	if (mtd_parts_nb > 0)
-		part_type = "command line";
-	else
-		mtd_parts_nb = 0;
-
-	if (!mtd_parts_nb) {
-		mtd_parts = partition_info;
-		mtd_parts_nb = NUM_PARTITIONS;
-		part_type = "static";
-	}
-
 	/* Register the partitions */
-	pr_notice("Using %s partition definition\n", part_type);
-	ret = mtd_device_register(cmx270_nand_mtd, mtd_parts, mtd_parts_nb);
+	ret = mtd_device_parse_register(cmx270_nand_mtd, NULL, 0,
+			partition_info, NUM_PARTITIONS);
 	if (ret)
 		goto err_scan;
 
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 26/44] mtd: cs553x_nand.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (24 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 25/44] mtd: cmx270_nand.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-08  9:19   ` Artem Bityutskiy
  2011-06-07 13:36 ` [PATCH 27/44] mtd: davinci_nand.c: " Dmitry Eremin-Solenikov
                   ` (18 subsequent siblings)
  44 siblings, 1 reply; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/nand/cs553x_nand.c |    7 ++-----
 1 files changed, 2 insertions(+), 5 deletions(-)

diff --git a/drivers/mtd/nand/cs553x_nand.c b/drivers/mtd/nand/cs553x_nand.c
index b2bdf72..4aac849 100644
--- a/drivers/mtd/nand/cs553x_nand.c
+++ b/drivers/mtd/nand/cs553x_nand.c
@@ -283,8 +283,6 @@ static int __init cs553x_init(void)
 	int err = -ENXIO;
 	int i;
 	uint64_t val;
-	int mtd_parts_nb = 0;
-	struct mtd_partition *mtd_parts = NULL;
 
 	/* If the CPU isn't a Geode GX or LX, abort */
 	if (!is_geode())
@@ -316,9 +314,8 @@ static int __init cs553x_init(void)
 		if (cs553x_mtd[i]) {
 
 			/* If any devices registered, return success. Else the last error. */
-			mtd_parts_nb = parse_mtd_partitions(cs553x_mtd[i], NULL, &mtd_parts, 0);
-			mtd_device_register(cs553x_mtd[i], mtd_parts,
-					    mtd_parts_nb);
+			mtd_device_parse_register(cs553x_mtd[i], NULL, 0,
+					NULL, 0);
 			err = 0;
 		}
 	}
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 27/44] mtd: davinci_nand.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (25 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 26/44] mtd: cs553x_nand.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 28/44] mtd: edb7312.c: " Dmitry Eremin-Solenikov
                   ` (17 subsequent siblings)
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/nand/davinci_nand.c |   25 ++-----------------------
 1 files changed, 2 insertions(+), 23 deletions(-)

diff --git a/drivers/mtd/nand/davinci_nand.c b/drivers/mtd/nand/davinci_nand.c
index 0c582ed..6492213 100644
--- a/drivers/mtd/nand/davinci_nand.c
+++ b/drivers/mtd/nand/davinci_nand.c
@@ -57,7 +57,6 @@ struct davinci_nand_info {
 
 	struct device		*dev;
 	struct clk		*clk;
-	bool			partitioned;
 
 	bool			is_readmode;
 
@@ -530,8 +529,6 @@ static int __init nand_davinci_probe(struct platform_device *pdev)
 	int				ret;
 	uint32_t			val;
 	nand_ecc_modes_t		ecc_mode;
-	struct mtd_partition		*mtd_parts = NULL;
-	int				mtd_parts_nb = 0;
 
 	/* insist on board-specific configuration */
 	if (!pdata)
@@ -753,26 +750,8 @@ syndrome_done:
 	if (ret < 0)
 		goto err_scan;
 
-	mtd_parts_nb = parse_mtd_partitions(&info->mtd, NULL, &mtd_parts, 0);
-
-	if (mtd_parts_nb <= 0) {
-		mtd_parts = pdata->parts;
-		mtd_parts_nb = pdata->nr_parts;
-	}
-
-	/* Register any partitions */
-	if (mtd_parts_nb > 0) {
-		ret = mtd_device_register(&info->mtd, mtd_parts,
-					  mtd_parts_nb);
-		if (ret == 0)
-			info->partitioned = true;
-	}
-
-	/* If there's no partition info, just package the whole chip
-	 * as a single MTD device.
-	 */
-	if (!info->partitioned)
-		ret = mtd_device_register(&info->mtd, NULL, 0) ? -ENODEV : 0;
+	ret = mtd_device_parse_register(&info->mtd, NULL, 0,
+			pdata->parts, pdata->nr_parts);
 
 	if (ret < 0)
 		goto err_scan;
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 28/44] mtd: edb7312.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (26 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 27/44] mtd: davinci_nand.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-08  9:20   ` Artem Bityutskiy
  2011-06-07 13:36 ` [PATCH 29/44] mtd: fsmc_nand.c: " Dmitry Eremin-Solenikov
                   ` (16 subsequent siblings)
  44 siblings, 1 reply; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/nand/edb7312.c |   17 ++---------------
 1 files changed, 2 insertions(+), 15 deletions(-)

diff --git a/drivers/mtd/nand/edb7312.c b/drivers/mtd/nand/edb7312.c
index 2f9374b..0b1bb91 100644
--- a/drivers/mtd/nand/edb7312.c
+++ b/drivers/mtd/nand/edb7312.c
@@ -104,9 +104,6 @@ static int ep7312_device_ready(struct mtd_info *mtd)
 static int __init ep7312_init(void)
 {
 	struct nand_chip *this;
-	const char *part_type = 0;
-	int mtd_parts_nb = 0;
-	struct mtd_partition *mtd_parts = 0;
 	void __iomem *ep7312_fio_base;
 
 	/* Allocate memory for MTD device structure and private data */
@@ -156,20 +153,10 @@ static int __init ep7312_init(void)
 		return -ENXIO;
 	}
 	ep7312_mtd->name = "edb7312-nand";
-	mtd_parts_nb = parse_mtd_partitions(ep7312_mtd, NULL, &mtd_parts, 0);
-	if (mtd_parts_nb > 0)
-		part_type = "command line";
-	else
-		mtd_parts_nb = 0;
-	if (mtd_parts_nb == 0) {
-		mtd_parts = partition_info;
-		mtd_parts_nb = NUM_PARTITIONS;
-		part_type = "static";
-	}
 
 	/* Register the partitions */
-	printk(KERN_NOTICE "Using %s partition definition\n", part_type);
-	mtd_device_register(ep7312_mtd, mtd_parts, mtd_parts_nb);
+	mtd_device_register(ep7312_mtd, NULL, 0,
+			partition_info, NUM_PARTITIONS);
 
 	/* Return happy */
 	return 0;
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 29/44] mtd: fsmc_nand.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (27 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 28/44] mtd: edb7312.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 30/44] mtd: h1910.c: " Dmitry Eremin-Solenikov
                   ` (15 subsequent siblings)
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/nand/fsmc_nand.c |   66 ++++++------------------------------------
 1 files changed, 9 insertions(+), 57 deletions(-)

diff --git a/drivers/mtd/nand/fsmc_nand.c b/drivers/mtd/nand/fsmc_nand.c
index a39c224..8cc8065 100644
--- a/drivers/mtd/nand/fsmc_nand.c
+++ b/drivers/mtd/nand/fsmc_nand.c
@@ -146,7 +146,7 @@ static struct mtd_partition partition_info_16KB_blk[] = {
 	{
 		.name = "Root File System",
 		.offset = 0x460000,
-		.size = 0,
+		.size = MTDPART_SIZ_FULL,
 	},
 };
 
@@ -173,7 +173,7 @@ static struct mtd_partition partition_info_128KB_blk[] = {
 	{
 		.name = "Root File System",
 		.offset = 0x800000,
-		.size = 0,
+		.size = MTDPART_SIZ_FULL,
 	},
 };
 
@@ -184,8 +184,6 @@ static struct mtd_partition partition_info_128KB_blk[] = {
  * @pid:		Part ID on the AMBA PrimeCell format
  * @mtd:		MTD info for a NAND flash.
  * @nand:		Chip related info for a NAND flash.
- * @partitions:		Partition info for a NAND Flash.
- * @nr_partitions:	Total number of partition of a NAND flash.
  *
  * @ecc_place:		ECC placing locations in oobfree type format.
  * @bank:		Bank number for probed device.
@@ -200,8 +198,6 @@ struct fsmc_nand_data {
 	u32			pid;
 	struct mtd_info		mtd;
 	struct nand_chip	nand;
-	struct mtd_partition	*partitions;
-	unsigned int		nr_partitions;
 
 	struct fsmc_eccplace	*ecc_place;
 	unsigned int		bank;
@@ -717,57 +713,13 @@ static int __init fsmc_nand_probe(struct platform_device *pdev)
 	 * Check for partition info passed
 	 */
 	host->mtd.name = "nand";
-	host->nr_partitions = parse_mtd_partitions(&host->mtd, NULL,
-			&host->partitions, 0);
-	if (host->nr_partitions <= 0) {
-		/*
-		 * Check if partition info passed via command line
-		 */
-		if (pdata->partitions) {
-			host->partitions = pdata->partitions;
-			host->nr_partitions = pdata->nr_partitions;
-		} else {
-			struct mtd_partition *partition;
-			int i;
-
-			/* Select the default partitions info */
-			switch (host->mtd.size) {
-			case 0x01000000:
-			case 0x02000000:
-			case 0x04000000:
-				host->partitions = partition_info_16KB_blk;
-				host->nr_partitions =
-					sizeof(partition_info_16KB_blk) /
-					sizeof(struct mtd_partition);
-				break;
-			case 0x08000000:
-			case 0x10000000:
-			case 0x20000000:
-			case 0x40000000:
-				host->partitions = partition_info_128KB_blk;
-				host->nr_partitions =
-					sizeof(partition_info_128KB_blk) /
-					sizeof(struct mtd_partition);
-				break;
-			default:
-				ret = -ENXIO;
-				pr_err("Unsupported NAND size\n");
-				goto err_probe;
-			}
-
-			partition = host->partitions;
-			for (i = 0; i < host->nr_partitions; i++, partition++) {
-				if (partition->size == 0) {
-					partition->size = host->mtd.size -
-						partition->offset;
-					break;
-				}
-			}
-		}
-	}
-
-	ret = mtd_device_register(&host->mtd, host->partitions,
-				  host->nr_partitions);
+	ret = mtd_device_parse_register(&host->mtd, NULL, 0,
+			host->mtd.size <= 0x04000000 ?
+				partition_info_16KB_blk :
+				partition_info_128KB_blk,
+			host->mtd.size <= 0x04000000 ?
+				ARRAY_SIZE(partition_info_16KB_blk) :
+				ARRAY_SIZE(partition_info_128KB_blk),
 	if (ret)
 		goto err_probe;
 
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 30/44] mtd: h1910.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (28 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 29/44] mtd: fsmc_nand.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 31/44] mtd: jz4740_nand.c: " Dmitry Eremin-Solenikov
                   ` (14 subsequent siblings)
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/nand/h1910.c |   15 ++-------------
 1 files changed, 2 insertions(+), 13 deletions(-)

diff --git a/drivers/mtd/nand/h1910.c b/drivers/mtd/nand/h1910.c
index 42f9177..5dc6f0d 100644
--- a/drivers/mtd/nand/h1910.c
+++ b/drivers/mtd/nand/h1910.c
@@ -81,9 +81,6 @@ static int h1910_device_ready(struct mtd_info *mtd)
 static int __init h1910_init(void)
 {
 	struct nand_chip *this;
-	const char *part_type = 0;
-	int mtd_parts_nb = 0;
-	struct mtd_partition *mtd_parts = 0;
 	void __iomem *nandaddr;
 
 	if (!machine_is_h1900())
@@ -136,18 +133,10 @@ static int __init h1910_init(void)
 		iounmap((void *)nandaddr);
 		return -ENXIO;
 	}
-	mtd_parts_nb = parse_mtd_partitions(h1910_nand_mtd, NULL, &mtd_parts, 0);
-	if (mtd_parts_nb > 0)
-		part_type = "command line";
-	else {
-		mtd_parts = partition_info;
-		mtd_parts_nb = NUM_PARTITIONS;
-		part_type = "static";
-	}
 
 	/* Register the partitions */
-	printk(KERN_NOTICE "Using %s partition definition\n", part_type);
-	mtd_device_register(h1910_nand_mtd, mtd_parts, mtd_parts_nb);
+	mtd_device_parse_register(h1910_nand_mtd, NULL, 0,
+			partition_info, NUM_PARTITIONS);
 
 	/* Return happy */
 	return 0;
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 31/44] mtd: jz4740_nand.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (29 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 30/44] mtd: h1910.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 32/44] mtd: mxc_nand.c: " Dmitry Eremin-Solenikov
                   ` (13 subsequent siblings)
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/nand/jz4740_nand.c |   11 +++--------
 1 files changed, 3 insertions(+), 8 deletions(-)

diff --git a/drivers/mtd/nand/jz4740_nand.c b/drivers/mtd/nand/jz4740_nand.c
index 920719c..e266407 100644
--- a/drivers/mtd/nand/jz4740_nand.c
+++ b/drivers/mtd/nand/jz4740_nand.c
@@ -295,8 +295,6 @@ static int __devinit jz_nand_probe(struct platform_device *pdev)
 	struct nand_chip *chip;
 	struct mtd_info *mtd;
 	struct jz_nand_platform_data *pdata = pdev->dev.platform_data;
-	struct mtd_partition *partition_info;
-	int num_partitions = 0;
 
 	nand = kzalloc(sizeof(*nand), GFP_KERNEL);
 	if (!nand) {
@@ -369,12 +367,9 @@ static int __devinit jz_nand_probe(struct platform_device *pdev)
 		goto err_gpio_free;
 	}
 
-	num_partitions = parse_mtd_partitions(mtd, NULL, &partition_info, 0);
-	if (num_partitions <= 0 && pdata) {
-		num_partitions = pdata->num_partitions;
-		partition_info = pdata->partitions;
-	}
-	ret = mtd_device_register(mtd, partition_info, num_partitions);
+	ret = mtd_device_parse_register(mtd, NULL, 0,
+			pdata ? pdata->partitions : NULL,
+			pdata ? pdata->num_partitions : 0);
 
 	if (ret) {
 		dev_err(&pdev->dev, "Failed to add mtd device\n");
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 32/44] mtd: mxc_nand.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (30 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 31/44] mtd: jz4740_nand.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 33/44] mtd: omap2.c: " Dmitry Eremin-Solenikov
                   ` (12 subsequent siblings)
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/nand/mxc_nand.c |   15 +++------------
 1 files changed, 3 insertions(+), 12 deletions(-)

diff --git a/drivers/mtd/nand/mxc_nand.c b/drivers/mtd/nand/mxc_nand.c
index ca42c8f..4c2bb4a 100644
--- a/drivers/mtd/nand/mxc_nand.c
+++ b/drivers/mtd/nand/mxc_nand.c
@@ -143,7 +143,6 @@
 struct mxc_nand_host {
 	struct mtd_info		mtd;
 	struct nand_chip	nand;
-	struct mtd_partition	*parts;
 	struct device		*dev;
 
 	void			*spare0;
@@ -1044,7 +1043,7 @@ static int __init mxcnd_probe(struct platform_device *pdev)
 	struct mxc_nand_platform_data *pdata = pdev->dev.platform_data;
 	struct mxc_nand_host *host;
 	struct resource *res;
-	int err = 0, __maybe_unused nr_parts = 0;
+	int err = 0;
 	struct nand_ecclayout *oob_smallpage, *oob_largepage;
 
 	/* Allocate memory for MTD device structure and private data */
@@ -1231,16 +1230,8 @@ static int __init mxcnd_probe(struct platform_device *pdev)
 	}
 
 	/* Register the partitions */
-	nr_parts =
-	    parse_mtd_partitions(mtd, part_probes, &host->parts, 0);
-	if (nr_parts > 0)
-		mtd_device_register(mtd, host->parts, nr_parts);
-	else if (pdata->parts)
-		mtd_device_register(mtd, pdata->parts, pdata->nr_parts);
-	else {
-		pr_info("Registering %s as whole device\n", mtd->name);
-		mtd_device_register(mtd, NULL, 0);
-	}
+	mtd_device_parse_register(mtd, part_probes, 0,
+			pdata->parts, pdata->nr_parts);
 
 	platform_set_drvdata(pdev, host);
 
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 33/44] mtd: omap2.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (31 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 32/44] mtd: mxc_nand.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 34/44] mtd: orion_nand.c: " Dmitry Eremin-Solenikov
                   ` (11 subsequent siblings)
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/nand/omap2.c |   10 ++--------
 1 files changed, 2 insertions(+), 8 deletions(-)

diff --git a/drivers/mtd/nand/omap2.c b/drivers/mtd/nand/omap2.c
index 8783c08..c5e33fd 100644
--- a/drivers/mtd/nand/omap2.c
+++ b/drivers/mtd/nand/omap2.c
@@ -112,7 +112,6 @@ struct omap_nand_info {
 	struct nand_hw_control		controller;
 	struct omap_nand_platform_data	*pdata;
 	struct mtd_info			mtd;
-	struct mtd_partition		*parts;
 	struct nand_chip		nand;
 	struct platform_device		*pdev;
 
@@ -1101,13 +1100,8 @@ static int __devinit omap_nand_probe(struct platform_device *pdev)
 		goto out_release_mem_region;
 	}
 
-	err = parse_mtd_partitions(&info->mtd, NULL, &info->parts, 0);
-	if (err > 0)
-		mtd_device_register(&info->mtd, info->parts, err);
-	else if (pdata->parts)
-		mtd_device_register(&info->mtd, pdata->parts, pdata->nr_parts);
-	else
-		mtd_device_register(&info->mtd, NULL, 0);
+	mtd_device_parse_register(&info->mtd, NULL, 0,
+			pdata->parts, pdata->nr_parts);
 
 	platform_set_drvdata(pdev, &info->mtd);
 
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 34/44] mtd: orion_nand.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (32 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 33/44] mtd: omap2.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 35/44] mtd: plat_nand.c: " Dmitry Eremin-Solenikov
                   ` (10 subsequent siblings)
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/nand/orion_nand.c |   12 ++----------
 1 files changed, 2 insertions(+), 10 deletions(-)

diff --git a/drivers/mtd/nand/orion_nand.c b/drivers/mtd/nand/orion_nand.c
index 5c55981..29f505a 100644
--- a/drivers/mtd/nand/orion_nand.c
+++ b/drivers/mtd/nand/orion_nand.c
@@ -79,8 +79,6 @@ static int __init orion_nand_probe(struct platform_device *pdev)
 	struct resource *res;
 	void __iomem *io_base;
 	int ret = 0;
-	struct mtd_partition *partitions = NULL;
-	int num_part = 0;
 
 	nc = kzalloc(sizeof(struct nand_chip) + sizeof(struct mtd_info), GFP_KERNEL);
 	if (!nc) {
@@ -131,14 +129,8 @@ static int __init orion_nand_probe(struct platform_device *pdev)
 	}
 
 	mtd->name = "orion_nand";
-	num_part = parse_mtd_partitions(mtd, NULL, &partitions, 0);
-	/* If cmdline partitions have been passed, let them be used */
-	if (num_part <= 0) {
-		num_part = board->nr_parts;
-		partitions = board->parts;
-	}
-
-	ret = mtd_device_register(mtd, partitions, num_part);
+	ret = mtd_device_parse_register(mtd, NULL, 0,
+			board->parts, board->nr_parts);
 	if (ret) {
 		nand_release(mtd);
 		goto no_dev;
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 35/44] mtd: plat_nand.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (33 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 34/44] mtd: orion_nand.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 36/44] mtd: ppchameleonevb.c: " Dmitry Eremin-Solenikov
                   ` (9 subsequent siblings)
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/nand/plat_nand.c |   22 +++-------------------
 1 files changed, 3 insertions(+), 19 deletions(-)

diff --git a/drivers/mtd/nand/plat_nand.c b/drivers/mtd/nand/plat_nand.c
index 1339fa8..e62468b 100644
--- a/drivers/mtd/nand/plat_nand.c
+++ b/drivers/mtd/nand/plat_nand.c
@@ -21,8 +21,6 @@ struct plat_nand_data {
 	struct nand_chip	chip;
 	struct mtd_info		mtd;
 	void __iomem		*io_base;
-	int			nr_parts;
-	struct mtd_partition	*parts;
 };
 
 /*
@@ -99,21 +97,9 @@ static int __devinit plat_nand_probe(struct platform_device *pdev)
 		goto out;
 	}
 
-	if (pdata->chip.part_probe_types) {
-		err = parse_mtd_partitions(&data->mtd,
-					pdata->chip.part_probe_types,
-					&data->parts, 0);
-		if (err > 0) {
-			mtd_device_register(&data->mtd, data->parts, err);
-			return 0;
-		}
-	}
-	if (pdata->chip.partitions) {
-		data->parts = pdata->chip.partitions;
-		err = mtd_device_register(&data->mtd, data->parts,
-			pdata->chip.nr_partitions);
-	} else
-		err = mtd_device_register(&data->mtd, NULL, 0);
+	err = mtd_device_parse_register(&data->mtd,
+			pdata->chip.part_probe_types, 0,
+			pdata->chip.partitions, pdata->chip.nr_partitions);
 
 	if (!err)
 		return err;
@@ -143,8 +129,6 @@ static int __devexit plat_nand_remove(struct platform_device *pdev)
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 
 	nand_release(&data->mtd);
-	if (data->parts && data->parts != pdata->chip.partitions)
-		kfree(data->parts);
 	if (pdata->ctrl.remove)
 		pdata->ctrl.remove(pdev);
 	iounmap(data->io_base);
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 36/44] mtd: ppchameleonevb.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (34 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 35/44] mtd: plat_nand.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 37/44] mtd: pxa3xx_nand.c: " Dmitry Eremin-Solenikov
                   ` (8 subsequent siblings)
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/nand/ppchameleonevb.c |   42 ++++++++----------------------------
 1 files changed, 10 insertions(+), 32 deletions(-)

diff --git a/drivers/mtd/nand/ppchameleonevb.c b/drivers/mtd/nand/ppchameleonevb.c
index 9376633..7e52af5 100644
--- a/drivers/mtd/nand/ppchameleonevb.c
+++ b/drivers/mtd/nand/ppchameleonevb.c
@@ -191,9 +191,6 @@ static int ppchameleonevb_device_ready(struct mtd_info *minfo)
 static int __init ppchameleonevb_init(void)
 {
 	struct nand_chip *this;
-	const char *part_type = 0;
-	int mtd_parts_nb = 0;
-	struct mtd_partition *mtd_parts = 0;
 	void __iomem *ppchameleon_fio_base;
 	void __iomem *ppchameleonevb_fio_base;
 
@@ -276,24 +273,13 @@ static int __init ppchameleonevb_init(void)
 #endif
 
 	ppchameleon_mtd->name = "ppchameleon-nand";
-	mtd_parts_nb = parse_mtd_partitions(ppchameleon_mtd, NULL, &mtd_parts, 0);
-	if (mtd_parts_nb > 0)
-		part_type = "command line";
-	else
-		mtd_parts_nb = 0;
-
-	if (mtd_parts_nb == 0) {
-		if (ppchameleon_mtd->size == NAND_SMALL_SIZE)
-			mtd_parts = partition_info_me;
-		else
-			mtd_parts = partition_info_hi;
-		mtd_parts_nb = NUM_PARTITIONS;
-		part_type = "static";
-	}
 
 	/* Register the partitions */
-	printk(KERN_NOTICE "Using %s partition definition\n", part_type);
-	mtd_device_register(ppchameleon_mtd, mtd_parts, mtd_parts_nb);
+	mtd_device_parse_register(ppchameleon_mtd, NULL, 0,
+			ppchameleon_mtd->size == NAND_SMALL_SIZE ?
+				partition_info_me :
+				partition_info_hi,
+			NUM_PARTITIONS);
 
  nand_evb_init:
 	/****************************
@@ -377,21 +363,13 @@ static int __init ppchameleonevb_init(void)
 	}
 
 	ppchameleonevb_mtd->name = NAND_EVB_MTD_NAME;
-	mtd_parts_nb = parse_mtd_partitions(ppchameleonevb_mtd, NULL, &mtd_parts, 0);
-	if (mtd_parts_nb > 0)
-		part_type = "command line";
-	else
-		mtd_parts_nb = 0;
-
-	if (mtd_parts_nb == 0) {
-		mtd_parts = partition_info_evb;
-		mtd_parts_nb = NUM_PARTITIONS;
-		part_type = "static";
-	}
 
 	/* Register the partitions */
-	printk(KERN_NOTICE "Using %s partition definition\n", part_type);
-	mtd_device_register(ppchameleonevb_mtd, mtd_parts, mtd_parts_nb);
+	mtd_device_parse_register(ppchameleonevb_mtd, NULL, 0,
+			ppchameleon_mtd->size == NAND_SMALL_SIZE ?
+				partition_info_me :
+				partition_info_hi,
+			NUM_PARTITIONS);
 
 	/* Return happy */
 	return 0;
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 37/44] mtd: pxa3xx_nand.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (35 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 36/44] mtd: ppchameleonevb.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 38/44] mtd: s3c2410.c: " Dmitry Eremin-Solenikov
                   ` (7 subsequent siblings)
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/nand/pxa3xx_nand.c |   11 ++---------
 1 files changed, 2 insertions(+), 9 deletions(-)

diff --git a/drivers/mtd/nand/pxa3xx_nand.c b/drivers/mtd/nand/pxa3xx_nand.c
index 5c3af2f..b7db1b2 100644
--- a/drivers/mtd/nand/pxa3xx_nand.c
+++ b/drivers/mtd/nand/pxa3xx_nand.c
@@ -1133,8 +1133,6 @@ static int pxa3xx_nand_probe(struct platform_device *pdev)
 {
 	struct pxa3xx_nand_platform_data *pdata;
 	struct pxa3xx_nand_info *info;
-	struct mtd_partition *parts;
-	int nr_parts;
 
 	pdata = pdev->dev.platform_data;
 	if (!pdata) {
@@ -1152,13 +1150,8 @@ static int pxa3xx_nand_probe(struct platform_device *pdev)
 		return -ENODEV;
 	}
 
-
-	nr_parts = parse_mtd_partitions(info->mtd, NULL, &parts, 0);
-
-	if (nr_parts)
-		return mtd_device_register(info->mtd, parts, nr_parts);
-
-	return mtd_device_register(info->mtd, pdata->parts, pdata->nr_parts);
+	return mtd_device_parse_register(info->mtd, NULL, 0,
+			pdata->parts, pdata->nr_parts);
 }
 
 #ifdef CONFIG_PM
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 38/44] mtd: s3c2410.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (36 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 37/44] mtd: pxa3xx_nand.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 39/44] mtd: sharpsl.c: " Dmitry Eremin-Solenikov
                   ` (6 subsequent siblings)
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/nand/s3c2410.c |   18 ++++--------------
 1 files changed, 4 insertions(+), 14 deletions(-)

diff --git a/drivers/mtd/nand/s3c2410.c b/drivers/mtd/nand/s3c2410.c
index 17954ba..b0f8e77 100644
--- a/drivers/mtd/nand/s3c2410.c
+++ b/drivers/mtd/nand/s3c2410.c
@@ -748,21 +748,11 @@ static int s3c2410_nand_add_partition(struct s3c2410_nand_info *info,
 				      struct s3c2410_nand_mtd *mtd,
 				      struct s3c2410_nand_set *set)
 {
-	struct mtd_partition *part_info;
-	int nr_part = 0;
+	if (set)
+		mtd->mtd.name = set->name;
 
-	if (set == NULL)
-		return mtd_device_register(&mtd->mtd, NULL, 0);
-
-	mtd->mtd.name = set->name;
-	nr_part = parse_mtd_partitions(&mtd->mtd, NULL, &part_info, 0);
-
-	if (nr_part <= 0 && set->nr_partitions > 0) {
-		nr_part = set->nr_partitions;
-		part_info = set->partitions;
-	}
-
-	return mtd_device_register(&mtd->mtd, part_info, nr_part);
+	return mtd_device_parse_register(&mtd->mtd, NULL, 0,
+			set->partitions, set->nr_partitions);
 }
 
 /**
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 39/44] mtd: sharpsl.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (37 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 38/44] mtd: s3c2410.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 40/44] mtd: tmio_nand.c: " Dmitry Eremin-Solenikov
                   ` (5 subsequent siblings)
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/nand/sharpsl.c |   11 ++---------
 1 files changed, 2 insertions(+), 9 deletions(-)

diff --git a/drivers/mtd/nand/sharpsl.c b/drivers/mtd/nand/sharpsl.c
index b3377f8..619d2a5 100644
--- a/drivers/mtd/nand/sharpsl.c
+++ b/drivers/mtd/nand/sharpsl.c
@@ -109,8 +109,6 @@ static int sharpsl_nand_calculate_ecc(struct mtd_info *mtd, const u_char * dat,
 static int __devinit sharpsl_nand_probe(struct platform_device *pdev)
 {
 	struct nand_chip *this;
-	struct mtd_partition *sharpsl_partition_info;
-	int nr_partitions;
 	struct resource *r;
 	int err = 0;
 	struct sharpsl_nand *sharpsl;
@@ -182,14 +180,9 @@ static int __devinit sharpsl_nand_probe(struct platform_device *pdev)
 
 	/* Register the partitions */
 	sharpsl->mtd.name = "sharpsl-nand";
-	nr_partitions = parse_mtd_partitions(&sharpsl->mtd, NULL, &sharpsl_partition_info, 0);
-	if (nr_partitions <= 0) {
-		nr_partitions = data->nr_partitions;
-		sharpsl_partition_info = data->partitions;
-	}
 
-	err = mtd_device_register(&sharpsl->mtd, sharpsl_partition_info,
-				  nr_partitions);
+	err = mtd_device_parse_register(&sharpsl->mtd, NULL, 0,
+			data->partitions, data->nr_partitions);
 	if (err)
 		goto err_add;
 
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 40/44] mtd: tmio_nand.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (38 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 39/44] mtd: sharpsl.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 41/44] mtd: txx9ndfmc.c: " Dmitry Eremin-Solenikov
                   ` (4 subsequent siblings)
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/nand/tmio_nand.c |   12 +++---------
 1 files changed, 3 insertions(+), 9 deletions(-)

diff --git a/drivers/mtd/nand/tmio_nand.c b/drivers/mtd/nand/tmio_nand.c
index b6ffad6..d476857 100644
--- a/drivers/mtd/nand/tmio_nand.c
+++ b/drivers/mtd/nand/tmio_nand.c
@@ -378,8 +378,6 @@ static int tmio_probe(struct platform_device *dev)
 	struct tmio_nand *tmio;
 	struct mtd_info *mtd;
 	struct nand_chip *nand_chip;
-	struct mtd_partition *parts;
-	int nbparts = 0;
 	int retval;
 
 	if (data == NULL)
@@ -458,13 +456,9 @@ static int tmio_probe(struct platform_device *dev)
 		goto err_scan;
 	}
 	/* Register the partitions */
-	nbparts = parse_mtd_partitions(mtd, NULL, &parts, 0);
-	if (nbparts <= 0 && data) {
-		parts = data->partition;
-		nbparts = data->num_partitions;
-	}
-
-	retval = mtd_device_register(mtd, parts, nbparts);
+	retval = mtd_device_register(mtd, NULL, 0,
+			data ? data->partition : NULL,
+			data ? data->num_partitions : 0);
 	if (!retval)
 		return retval;
 
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 41/44] mtd: txx9ndfmc.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (39 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 40/44] mtd: tmio_nand.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 42/44] mtd: onenand/generic.c: " Dmitry Eremin-Solenikov
                   ` (3 subsequent siblings)
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/nand/txx9ndfmc.c |    7 +------
 1 files changed, 1 insertions(+), 6 deletions(-)

diff --git a/drivers/mtd/nand/txx9ndfmc.c b/drivers/mtd/nand/txx9ndfmc.c
index 91b05b9..ace46fd 100644
--- a/drivers/mtd/nand/txx9ndfmc.c
+++ b/drivers/mtd/nand/txx9ndfmc.c
@@ -74,7 +74,6 @@ struct txx9ndfmc_drvdata {
 	unsigned char hold;	/* in gbusclock */
 	unsigned char spw;	/* in gbusclock */
 	struct nand_hw_control hw_control;
-	struct mtd_partition *parts[MAX_TXX9NDFMC_DEV];
 };
 
 static struct platform_device *mtd_to_platdev(struct mtd_info *mtd)
@@ -332,7 +331,6 @@ static int __init txx9ndfmc_probe(struct platform_device *dev)
 		struct txx9ndfmc_priv *txx9_priv;
 		struct nand_chip *chip;
 		struct mtd_info *mtd;
-		int nr_parts;
 
 		if (!(plat->ch_mask & (1 << i)))
 			continue;
@@ -392,9 +390,7 @@ static int __init txx9ndfmc_probe(struct platform_device *dev)
 		}
 		mtd->name = txx9_priv->mtdname;
 
-		nr_parts = parse_mtd_partitions(mtd, NULL,
-						&drvdata->parts[i], 0);
-		mtd_device_register(mtd, drvdata->parts[i], nr_parts);
+		mtd_device_parse_register(mtd, NULL, 0, NULL, 0);
 		drvdata->mtds[i] = mtd;
 	}
 
@@ -420,7 +416,6 @@ static int __exit txx9ndfmc_remove(struct platform_device *dev)
 		txx9_priv = chip->priv;
 
 		nand_release(mtd);
-		kfree(drvdata->parts[i]);
 		kfree(txx9_priv->mtdname);
 		kfree(txx9_priv);
 	}
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 42/44] mtd: onenand/generic.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (40 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 41/44] mtd: txx9ndfmc.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 43/44] mtd: onenand/omap2.c: " Dmitry Eremin-Solenikov
                   ` (2 subsequent siblings)
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/onenand/generic.c |   11 +++--------
 1 files changed, 3 insertions(+), 8 deletions(-)

diff --git a/drivers/mtd/onenand/generic.c b/drivers/mtd/onenand/generic.c
index bca1c49..8152a31 100644
--- a/drivers/mtd/onenand/generic.c
+++ b/drivers/mtd/onenand/generic.c
@@ -32,7 +32,6 @@
 
 struct onenand_info {
 	struct mtd_info		mtd;
-	struct mtd_partition	*parts;
 	struct onenand_chip	onenand;
 };
 
@@ -71,13 +70,9 @@ static int __devinit generic_onenand_probe(struct platform_device *pdev)
 		goto out_iounmap;
 	}
 
-	err = parse_mtd_partitions(&info->mtd, NULL, &info->parts, 0);
-	if (err > 0)
-		mtd_device_register(&info->mtd, info->parts, err);
-	else if (err <= 0 && pdata && pdata->parts)
-		mtd_device_register(&info->mtd, pdata->parts, pdata->nr_parts);
-	else
-		err = mtd_device_register(&info->mtd, NULL, 0);
+	err = mtd_device_parse_register(&info->mtd, NULL, 0,
+			pdata ? pdata->parts : NULL,
+			pdata ? pdata->nr_parts : 0);
 
 	platform_set_drvdata(pdev, info);
 
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 43/44] mtd: onenand/omap2.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (41 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 42/44] mtd: onenand/generic.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-07 13:36 ` [PATCH 44/44] mtd: onenand/samsung.c: " Dmitry Eremin-Solenikov
  2011-06-08  9:26 ` [PATCH 00/44] Cleanup of parse/register scenario Artem Bityutskiy
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/onenand/omap2.c |   13 +++----------
 1 files changed, 3 insertions(+), 10 deletions(-)

diff --git a/drivers/mtd/onenand/omap2.c b/drivers/mtd/onenand/omap2.c
index 5ca2053..eb9cbd9 100644
--- a/drivers/mtd/onenand/omap2.c
+++ b/drivers/mtd/onenand/omap2.c
@@ -57,7 +57,6 @@ struct omap2_onenand {
 	unsigned long phys_base;
 	int gpio_irq;
 	struct mtd_info mtd;
-	struct mtd_partition *parts;
 	struct onenand_chip onenand;
 	struct completion irq_done;
 	struct completion dma_done;
@@ -752,13 +751,9 @@ static int __devinit omap2_onenand_probe(struct platform_device *pdev)
 	if ((r = onenand_scan(&c->mtd, 1)) < 0)
 		goto err_release_regulator;
 
-	r = parse_mtd_partitions(&c->mtd, NULL, &c->parts, 0);
-	if (r > 0)
-		r = mtd_device_register(&c->mtd, c->parts, r);
-	else if (pdata->parts != NULL)
-		r = mtd_device_register(&c->mtd, pdata->parts, pdata->nr_parts);
-	else
-		r = mtd_device_register(&c->mtd, NULL, 0);
+	r = mtd_device_parse_register(&info->mtd, NULL, 0,
+			pdata ? pdata->parts : NULL,
+			pdata ? pdata->nr_parts : 0);
 	if (r)
 		goto err_release_onenand;
 
@@ -785,7 +780,6 @@ err_release_mem_region:
 err_free_cs:
 	gpmc_cs_free(c->gpmc_cs);
 err_kfree:
-	kfree(c->parts);
 	kfree(c);
 
 	return r;
@@ -808,7 +802,6 @@ static int __devexit omap2_onenand_remove(struct platform_device *pdev)
 	iounmap(c->onenand.base);
 	release_mem_region(c->phys_base, ONENAND_IO_SIZE);
 	gpmc_cs_free(c->gpmc_cs);
-	kfree(c->parts);
 	kfree(c);
 
 	return 0;
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* [PATCH 44/44] mtd: onenand/samsung.c: use mtd_device_parse_register
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (42 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 43/44] mtd: onenand/omap2.c: " Dmitry Eremin-Solenikov
@ 2011-06-07 13:36 ` Dmitry Eremin-Solenikov
  2011-06-08  9:26 ` [PATCH 00/44] Cleanup of parse/register scenario Artem Bityutskiy
  44 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 13:36 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse, dedekind1

Replace custom invocations of parse_mtd_partitions and mtd_device_register
with common mtd_device_parse_register call. This would bring: standard
handling of all errors, fallback to default partitions, etc.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/onenand/samsung.c |   11 +++--------
 1 files changed, 3 insertions(+), 8 deletions(-)

diff --git a/drivers/mtd/onenand/samsung.c b/drivers/mtd/onenand/samsung.c
index 78a08ea..597dffc 100644
--- a/drivers/mtd/onenand/samsung.c
+++ b/drivers/mtd/onenand/samsung.c
@@ -147,7 +147,6 @@ struct s3c_onenand {
 	struct resource *dma_res;
 	unsigned long	phys_base;
 	struct completion	complete;
-	struct mtd_partition *parts;
 };
 
 #define CMD_MAP_00(dev, addr)		(dev->cmd_map(MAP_00, ((addr) << 1)))
@@ -1015,13 +1014,9 @@ static int s3c_onenand_probe(struct platform_device *pdev)
 	if (s3c_read_reg(MEM_CFG_OFFSET) & ONENAND_SYS_CFG1_SYNC_READ)
 		dev_info(&onenand->pdev->dev, "OneNAND Sync. Burst Read enabled\n");
 
-	err = parse_mtd_partitions(mtd, NULL, &onenand->parts, 0);
-	if (err > 0)
-		mtd_device_register(mtd, onenand->parts, err);
-	else if (err <= 0 && pdata && pdata->parts)
-		mtd_device_register(mtd, pdata->parts, pdata->nr_parts);
-	else
-		err = mtd_device_register(mtd, NULL, 0);
+	err = mtd_device_parse_register(&info->mtd, NULL, 0,
+			pdata ? pdata->parts : NULL,
+			pdata ? pdata->nr_parts : 0);
 
 	platform_set_drvdata(pdev, mtd);
 
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* Re: [PATCH 01/44] mtd: add new API for handling MTD registration
  2011-06-07 13:36 ` [PATCH 01/44] mtd: add new API for handling MTD registration Dmitry Eremin-Solenikov
@ 2011-06-07 13:44   ` Jamie Iles
  2011-06-07 14:33     ` Dmitry Eremin-Solenikov
  2011-06-07 15:48     ` Dmitry Eremin-Solenikov
  0 siblings, 2 replies; 70+ messages in thread
From: Jamie Iles @ 2011-06-07 13:44 UTC (permalink / raw)
  To: Dmitry Eremin-Solenikov; +Cc: David Woodhouse, linux-mtd, dedekind1

Hi Dmitry,

This sounds like a good idea.  Nitpick inline.

Jamie

On Tue, Jun 07, 2011 at 05:36:00PM +0400, Dmitry Eremin-Solenikov wrote:
> Lots (nearly all) mtd drivers contain nearly the similar code that
> calls parse_mtd_partitions, provides some platform-default values, if
> parsing fails, and registers  mtd device.
> 
> This is an aim to provide single implementation of this scenario:
> mtd_device_parse_register() which will handle all this parsing and
> defaults.
> 
> Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
> ---
>  drivers/mtd/mtdcore.c   |   30 ++++++++++++++++++++++++++++++
>  include/linux/mtd/mtd.h |    5 +++++
>  2 files changed, 35 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c
> index c510aff..ac871ad 100644
> --- a/drivers/mtd/mtdcore.c
> +++ b/drivers/mtd/mtdcore.c
> @@ -451,6 +451,36 @@ int mtd_device_register(struct mtd_info *master,
>  }
>  EXPORT_SYMBOL_GPL(mtd_device_register);
>  
> +int mtd_device_parse_register(struct mtd_info *mtd,
> +			      const char **part_probe_types,
> +			      unsigned long origin,
> +			      const struct mtd_partition *defparts,
> +			      int defnr_parts)
> +{
> +	int err;
> +	struct mtd_partition *parts;
> +
> +	err = parse_mtd_partitions(mtd, part_probe_types, &parts, origin);
> +	if (err <= 0 && defnr_parts) {
> +		unsigned long size = sizeof(*parts) * defnr_parts;
> +		err = defnr_parts;
> +		parts = kzalloc(size, GFP_KERNEL);
> +		memcpy(parts, defparts, size);

Shouldn't this check the return of kzalloc()?  How about using kmemdup() 
instead of kzalloc() + memcpy()?  Also some kernel-doc to describe the 
search order would be nice.

Jamie

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 01/44] mtd: add new API for handling MTD registration
  2011-06-07 13:44   ` Jamie Iles
@ 2011-06-07 14:33     ` Dmitry Eremin-Solenikov
  2011-06-08  8:37       ` Artem Bityutskiy
  2011-06-07 15:48     ` Dmitry Eremin-Solenikov
  1 sibling, 1 reply; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 14:33 UTC (permalink / raw)
  To: Jamie Iles; +Cc: David Woodhouse, linux-mtd, dedekind1

On 07.06.2011 17:44, Jamie Iles wrote:
> Hi Dmitry,
>
> This sounds like a good idea.  Nitpick inline.
>
> Jamie
>
> On Tue, Jun 07, 2011 at 05:36:00PM +0400, Dmitry Eremin-Solenikov wrote:
>> Lots (nearly all) mtd drivers contain nearly the similar code that
>> calls parse_mtd_partitions, provides some platform-default values, if
>> parsing fails, and registers  mtd device.
>>
>> This is an aim to provide single implementation of this scenario:
>> mtd_device_parse_register() which will handle all this parsing and
>> defaults.
>>
>> Signed-off-by: Dmitry Eremin-Solenikov<dbaryshkov@gmail.com>
>> ---
>>   drivers/mtd/mtdcore.c   |   30 ++++++++++++++++++++++++++++++
>>   include/linux/mtd/mtd.h |    5 +++++
>>   2 files changed, 35 insertions(+), 0 deletions(-)
>>
>> diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c
>> index c510aff..ac871ad 100644
>> --- a/drivers/mtd/mtdcore.c
>> +++ b/drivers/mtd/mtdcore.c
>> @@ -451,6 +451,36 @@ int mtd_device_register(struct mtd_info *master,
>>   }
>>   EXPORT_SYMBOL_GPL(mtd_device_register);
>>
>> +int mtd_device_parse_register(struct mtd_info *mtd,
>> +			      const char **part_probe_types,
>> +			      unsigned long origin,
>> +			      const struct mtd_partition *defparts,
>> +			      int defnr_parts)
>> +{
>> +	int err;
>> +	struct mtd_partition *parts;
>> +
>> +	err = parse_mtd_partitions(mtd, part_probe_types,&parts, origin);
>> +	if (err<= 0&&  defnr_parts) {
>> +		unsigned long size = sizeof(*parts) * defnr_parts;
>> +		err = defnr_parts;
>> +		parts = kzalloc(size, GFP_KERNEL);
>> +		memcpy(parts, defparts, size);
>
> Shouldn't this check the return of kzalloc()?  How about using kmemdup()
> instead of kzalloc() + memcpy()?

Good catch! Thank you.

>  Also some kernel-doc to describe the search order would be nice.

Search order is mainly detailed either by defaults specified in 
mtdpart.c or by probe types which user specifies.

-- 
With best wishes
Dmitry

^ permalink raw reply	[flat|nested] 70+ messages in thread

* [PATCH 01/44] mtd: add new API for handling MTD registration
  2011-06-07 13:44   ` Jamie Iles
  2011-06-07 14:33     ` Dmitry Eremin-Solenikov
@ 2011-06-07 15:48     ` Dmitry Eremin-Solenikov
  2011-06-08  8:55       ` Artem Bityutskiy
  2011-06-08 10:19       ` Jamie Iles
  1 sibling, 2 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-07 15:48 UTC (permalink / raw)
  To: linux-mtd; +Cc: Jamie Iles, David Woodhouse, dedekind1

Lots (nearly all) mtd drivers contain nearly the similar code that
calls parse_mtd_partitions, provides some platform-default values, if
parsing fails, and registers  mtd device.

This is an aim to provide single implementation of this scenario:
mtd_device_parse_register() which will handle all this parsing and
defaults.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
 drivers/mtd/mtdcore.c   |   47 +++++++++++++++++++++++++++++++++++++++++++++++
 include/linux/mtd/mtd.h |    5 +++++
 2 files changed, 52 insertions(+), 0 deletions(-)

diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c
index c510aff..d538e0a 100644
--- a/drivers/mtd/mtdcore.c
+++ b/drivers/mtd/mtdcore.c
@@ -452,6 +452,53 @@ int mtd_device_register(struct mtd_info *master,
 EXPORT_SYMBOL_GPL(mtd_device_register);
 
 /**
+ * mtd_device_parse_register - register an MTD device.
+ *
+ * @mtd: the MTD device to register
+ * @part_probe_types: the list of MTD partition probes to try
+ * @origin: start address of MTD device. =0 unless you are sure you need this.
+ * @defparts: default partition information to register. Only valid if
+ *		defnr_parts > 0
+ * @defnr_parts: the number of partitions in defparts.  If zero then the full
+ *		MTD device is registered if no partition info is found
+ *
+ * Extract partition info and register MTD device (partitions or a whole device)
+ * It calls parse_mtd_partitions(), checks the result. If there were no
+ * partitions found, it uses default info specified (via defparts/defnr_parts)
+ * and then registers either partitions, or (if no partitions were
+ * found/specified) the whow MTD.
+ */
+int mtd_device_parse_register(struct mtd_info *mtd,
+			      const char **part_probe_types,
+			      unsigned long origin,
+			      const struct mtd_partition *defparts,
+			      int defnr_parts)
+{
+	int err;
+	struct mtd_partition *parts;
+
+	err = parse_mtd_partitions(mtd, part_probe_types, &parts, origin);
+	if (err <= 0 && defnr_parts) {
+		parts = kmemdup(defparts, sizeof(*parts) * defnr_parts,
+				GFP_KERNEL);
+		if (!parts)
+			err = -ENOMEM;
+	}
+
+	if (err > 0) {
+		err = add_mtd_partitions(mtd, parts, err);
+		kfree(parts);
+	} else if (err == 0) {
+		err = add_mtd_device(mtd);
+		if (err == 1)
+			err = -ENODEV;
+	}
+
+	return err;
+}
+EXPORT_SYMBOL_GPL(mtd_device_parse_register);
+
+/**
  * mtd_device_unregister - unregister an existing MTD device.
  *
  * @master: the MTD device to unregister.  This will unregister both the master
diff --git a/include/linux/mtd/mtd.h b/include/linux/mtd/mtd.h
index 2541fb8..d28a241 100644
--- a/include/linux/mtd/mtd.h
+++ b/include/linux/mtd/mtd.h
@@ -327,6 +327,11 @@ struct mtd_partition;
 extern int mtd_device_register(struct mtd_info *master,
 			       const struct mtd_partition *parts,
 			       int nr_parts);
+extern int mtd_device_parse_register(struct mtd_info *mtd,
+			      const char **part_probe_types,
+			      unsigned long origin,
+			      const struct mtd_partition *defparts,
+			      int defnr_parts);
 extern int mtd_device_unregister(struct mtd_info *master);
 extern struct mtd_info *get_mtd_device(struct mtd_info *mtd, int num);
 extern int __get_mtd_device(struct mtd_info *mtd);
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* Re: [PATCH 01/44] mtd: add new API for handling MTD registration
  2011-06-07 14:33     ` Dmitry Eremin-Solenikov
@ 2011-06-08  8:37       ` Artem Bityutskiy
  2011-06-08  8:57         ` Dmitry Eremin-Solenikov
  0 siblings, 1 reply; 70+ messages in thread
From: Artem Bityutskiy @ 2011-06-08  8:37 UTC (permalink / raw)
  To: Dmitry Eremin-Solenikov; +Cc: Jamie Iles, linux-mtd, David Woodhouse

On Tue, 2011-06-07 at 18:33 +0400, Dmitry Eremin-Solenikov wrote:
> >  Also some kernel-doc to describe the search order would be nice.
> 
> Search order is mainly detailed either by defaults specified in 
> mtdpart.c or by probe types which user specifies.

I look at the functions and they are difficult to understand. We need to
start with good kerneldoc comment for 'parse_mtd_partitions()'. The
default behavior has to be well-documented. I'd like to apply this
patch, how does it look to you?


>From 1606f9966d891cb79bdfb935baf87038a7029198 Mon Sep 17 00:00:00 2001
From: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Date: Wed, 8 Jun 2011 11:42:27 +0300
Subject: [PATCH] mtd: document parse_mtd_partitions

Add a kerneldoc comment for the 'parse_mtd_partitions()' function - its
behavior has changed recently so it is good idea to have it documented.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
---
 drivers/mtd/mtdpart.c |   22 ++++++++++++++++++++++
 1 files changed, 22 insertions(+), 0 deletions(-)

diff --git a/drivers/mtd/mtdpart.c b/drivers/mtd/mtdpart.c
index b7372050..2b71ccb 100644
--- a/drivers/mtd/mtdpart.c
+++ b/drivers/mtd/mtdpart.c
@@ -725,8 +725,30 @@ int deregister_mtd_parser(struct mtd_part_parser *p)
 }
 EXPORT_SYMBOL_GPL(deregister_mtd_parser);
 
+/*
+ * Do not forget to update 'parse_mtd_partitions()' kerneldoc comment if you
+ * are changing this array!
+ */
 static const char *default_mtd_part_types[] = {"cmdlinepart", NULL};
 
+/**
+ * parse_mtd_partitions - parse MTD partitions
+ * @master: the master partition (describes whole MTD device)
+ * @types: names of partition parsers to try or %NULL
+ * @pparts: array of partitions found is returned here
+ * @origin: MTD device start address (use %0 if unsure)
+ *
+ * This function tries to find partition on MTD device @master. It uses MTD
+ * partition parsers, specified in @types. However, if @types is %NULL, then
+ * the default list of parsers is used. The default list contains only the
+ * "cmdlinepart" parser ATM.
+ *
+ * This function may return:
+ * o a negative error code in case of failure
+ * o zero if no partitions were found
+ * o a positive number of found partitions, in which case on exit @pparts will
+ *   point to an array containing this number of &struct mtd_info objects.
+ */
 int parse_mtd_partitions(struct mtd_info *master, const char **types,
 			 struct mtd_partition **pparts, unsigned long origin)
 {
-- 
1.7.2.3


-- 
Best Regards,
Artem Bityutskiy (Артём Битюцкий)

^ permalink raw reply related	[flat|nested] 70+ messages in thread

* Re: [PATCH 01/44] mtd: add new API for handling MTD registration
  2011-06-07 15:48     ` Dmitry Eremin-Solenikov
@ 2011-06-08  8:55       ` Artem Bityutskiy
  2011-06-08 10:19       ` Jamie Iles
  1 sibling, 0 replies; 70+ messages in thread
From: Artem Bityutskiy @ 2011-06-08  8:55 UTC (permalink / raw)
  To: Dmitry Eremin-Solenikov; +Cc: David Woodhouse, linux-mtd, Jamie Iles

I agree we need a good comment, but I find this one difficult to follow.

On Tue, 2011-06-07 at 19:48 +0400, Dmitry Eremin-Solenikov wrote:
>  /**
> + * mtd_device_parse_register - register an MTD device.

Not just register, it also contains parsing functionality.

> + *
> + * @mtd: the MTD device to register
> + * @part_probe_types: the list of MTD partition probes to try

Please, name it 'types' to be consistent with 'parse_mtd_partitions()'.
Also, you do not say that this can be %NULL. With my patch, you can
refer the reader like "see 'parse_mtd_partitions()' for more
information'.

> + * @origin: start address of MTD device. =0 unless you are sure you need this.

Try to avoid using dots. Also, constants should be prefixed with %,
i.e., use %0.

> + * @defparts: default partition information to register. Only valid if
> + *		defnr_parts > 0

Ditto about a dot, prefix variables with @, i.e., in this case:
@defnr_parts > %0.

Also about naming: why "default"? What is default there? This is more
like "alternative, or fall-back" - you first try to detect partition
specified in @part_probe_types, if if you fail - you use "alternative"
partitions.

Please, rename it.

> + * @defnr_parts: the number of partitions in defparts.  If zero then the full
> + *		MTD device is registered if no partition info is found

Ditto.

> + *
> + * Extract partition info and register MTD device (partitions or a whole device)
> + * It calls parse_mtd_partitions(), checks the result. If there were no
> + * partitions found, it uses default info specified (via defparts/defnr_parts)
> + * and then registers either partitions, or (if no partitions were
> + * found/specified) the whow MTD.
> + */

Sorry, I find this unreadable.

I suggest something like this.

This function aggregates MTD partitions parsing (done by
'parse_mtd_partitions()') and MTD device and partitions registering. It
basically follows the most common pattern found in many MTD drivers:

o It first tries to probe partitions on MTD device @mtd using parsers
  specified in @types (if @types is %NULL, then the default list of
  parsers is used, see 'parse_mtd_partitions()' for more information).
o If this succeeds, this function registers the found partitions, as
  well as the whole MTD device @mtd.
o If no partitions were found this function just registers the MTD
  device @mtd and exits.

Returns zero in case of success and a negative error code in case of
failure.

Would you please amend the patch and re-send?

-- 
Best Regards,
Artem Bityutskiy (Артём Битюцкий)

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 01/44] mtd: add new API for handling MTD registration
  2011-06-08  8:57         ` Dmitry Eremin-Solenikov
@ 2011-06-08  8:57           ` Artem Bityutskiy
  0 siblings, 0 replies; 70+ messages in thread
From: Artem Bityutskiy @ 2011-06-08  8:57 UTC (permalink / raw)
  To: Dmitry Eremin-Solenikov; +Cc: Jamie Iles, linux-mtd, David Woodhouse

On Wed, 2011-06-08 at 12:57 +0400, Dmitry Eremin-Solenikov wrote:
> On 6/8/11, Artem Bityutskiy <dedekind1@gmail.com> wrote:
> > On Tue, 2011-06-07 at 18:33 +0400, Dmitry Eremin-Solenikov wrote:
> >> >  Also some kernel-doc to describe the search order would be nice.
> >>
> >> Search order is mainly detailed either by defaults specified in
> >> mtdpart.c or by probe types which user specifies.
> >
> > I look at the functions and they are difficult to understand. We need to
> > start with good kerneldoc comment for 'parse_mtd_partitions()'. The
> > default behavior has to be well-documented. I'd like to apply this
> > patch, how does it look to you?
> 
> Looks good.

OK, pushed to l2-mtd-2.6.git.

-- 
Best Regards,
Artem Bityutskiy (Артём Битюцкий)

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 01/44] mtd: add new API for handling MTD registration
  2011-06-08  8:37       ` Artem Bityutskiy
@ 2011-06-08  8:57         ` Dmitry Eremin-Solenikov
  2011-06-08  8:57           ` Artem Bityutskiy
  0 siblings, 1 reply; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-08  8:57 UTC (permalink / raw)
  To: dedekind1; +Cc: Jamie Iles, linux-mtd, David Woodhouse

On 6/8/11, Artem Bityutskiy <dedekind1@gmail.com> wrote:
> On Tue, 2011-06-07 at 18:33 +0400, Dmitry Eremin-Solenikov wrote:
>> >  Also some kernel-doc to describe the search order would be nice.
>>
>> Search order is mainly detailed either by defaults specified in
>> mtdpart.c or by probe types which user specifies.
>
> I look at the functions and they are difficult to understand. We need to
> start with good kerneldoc comment for 'parse_mtd_partitions()'. The
> default behavior has to be well-documented. I'd like to apply this
> patch, how does it look to you?

Looks good.


> From 1606f9966d891cb79bdfb935baf87038a7029198 Mon Sep 17 00:00:00 2001
> From: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
> Date: Wed, 8 Jun 2011 11:42:27 +0300
> Subject: [PATCH] mtd: document parse_mtd_partitions
>
> Add a kerneldoc comment for the 'parse_mtd_partitions()' function - its
> behavior has changed recently so it is good idea to have it documented.
>
> Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
> ---
>  drivers/mtd/mtdpart.c |   22 ++++++++++++++++++++++
>  1 files changed, 22 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/mtd/mtdpart.c b/drivers/mtd/mtdpart.c
> index b7372050..2b71ccb 100644
> --- a/drivers/mtd/mtdpart.c
> +++ b/drivers/mtd/mtdpart.c
> @@ -725,8 +725,30 @@ int deregister_mtd_parser(struct mtd_part_parser *p)
>  }
>  EXPORT_SYMBOL_GPL(deregister_mtd_parser);
>
> +/*
> + * Do not forget to update 'parse_mtd_partitions()' kerneldoc comment if
> you
> + * are changing this array!
> + */
>  static const char *default_mtd_part_types[] = {"cmdlinepart", NULL};
>
> +/**
> + * parse_mtd_partitions - parse MTD partitions
> + * @master: the master partition (describes whole MTD device)
> + * @types: names of partition parsers to try or %NULL
> + * @pparts: array of partitions found is returned here
> + * @origin: MTD device start address (use %0 if unsure)
> + *
> + * This function tries to find partition on MTD device @master. It uses MTD
> + * partition parsers, specified in @types. However, if @types is %NULL,
> then
> + * the default list of parsers is used. The default list contains only the
> + * "cmdlinepart" parser ATM.
> + *
> + * This function may return:
> + * o a negative error code in case of failure
> + * o zero if no partitions were found
> + * o a positive number of found partitions, in which case on exit @pparts
> will
> + *   point to an array containing this number of &struct mtd_info objects.
> + */
>  int parse_mtd_partitions(struct mtd_info *master, const char **types,
>  			 struct mtd_partition **pparts, unsigned long origin)
>  {
> --
> 1.7.2.3
>
>
> --
> Best Regards,
> Artem Bityutskiy (Артём Битюцкий)
>
>


-- 
With best wishes
Dmitry

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 02/44] mtd: lart.c: use mtd_device_parse_register
  2011-06-07 13:36 ` [PATCH 02/44] mtd: lart.c: use mtd_device_parse_register Dmitry Eremin-Solenikov
@ 2011-06-08  8:59   ` Artem Bityutskiy
  0 siblings, 0 replies; 70+ messages in thread
From: Artem Bityutskiy @ 2011-06-08  8:59 UTC (permalink / raw)
  To: Dmitry Eremin-Solenikov; +Cc: David Woodhouse, linux-mtd

On Tue, 2011-06-07 at 17:36 +0400, Dmitry Eremin-Solenikov wrote:
> Replace custom invocations of parse_mtd_partitions and mtd_device_register
> with common mtd_device_parse_register call. This would bring: standard
> handling of all errors, fallback to default partitions, etc.
> 
> Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>

Sorry, but the code does not match the description: you do not use
'mtd_device_parse_register(); there.

> ---
>  drivers/mtd/devices/lart.c |   12 ++++--------
>  1 files changed, 4 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/mtd/devices/lart.c b/drivers/mtd/devices/lart.c
> index 772a0ff..48b513f 100644
> --- a/drivers/mtd/devices/lart.c
> +++ b/drivers/mtd/devices/lart.c
> @@ -619,6 +619,10 @@ static struct mtd_partition lart_partitions[] = {
>  		.size	= INITRD_LEN,		/* MTDPART_SIZ_FULL */
>  	}
>  };
> +#define NUM_PARTITIONS ARRAY_SIZE(lart_partitions)
> +#else
> +#define lart_partitions NULL
> +#define NUM_PARTITIONS 0
>  #endif
>  
>  static int __init lart_flash_init (void)
> @@ -683,23 +687,15 @@ static int __init lart_flash_init (void)
>  #endif
>  #endif
>  
> -#ifndef HAVE_PARTITIONS
> -   result = mtd_device_register(&mtd, NULL, 0);
> -#else
>     result = mtd_device_register(&mtd, lart_partitions,
>                                  ARRAY_SIZE(lart_partitions));
> -#endif
>  
>     return (result);
>  }
>  
>  static void __exit lart_flash_exit (void)
>  {
> -#ifndef HAVE_PARTITIONS
>     mtd_device_unregister(&mtd);
> -#else
> -   mtd_device_unregister(&mtd);
> -#endif
>  }
>  
>  module_init (lart_flash_init);


-- 
Best Regards,
Artem Bityutskiy (Артём Битюцкий)

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 04/44] mtd: sst25l.c: use mtd_device_parse_register
  2011-06-07 13:36 ` [PATCH 04/44] mtd: sst25l.c: " Dmitry Eremin-Solenikov
@ 2011-06-08  9:00   ` Artem Bityutskiy
  0 siblings, 0 replies; 70+ messages in thread
From: Artem Bityutskiy @ 2011-06-08  9:00 UTC (permalink / raw)
  To: Dmitry Eremin-Solenikov; +Cc: David Woodhouse, linux-mtd

On Tue, 2011-06-07 at 17:36 +0400, Dmitry Eremin-Solenikov wrote:
> Replace custom invocations of parse_mtd_partitions and mtd_device_register
> with common mtd_device_parse_register call. This would bring: standard
> handling of all errors, fallback to default partitions, etc.
> 
> Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
> ---
>  drivers/mtd/devices/sst25l.c |   32 ++++----------------------------
>  1 files changed, 4 insertions(+), 28 deletions(-)
> 
> diff --git a/drivers/mtd/devices/sst25l.c b/drivers/mtd/devices/sst25l.c
> index cd095af..faa9d3b 100644
> --- a/drivers/mtd/devices/sst25l.c
> +++ b/drivers/mtd/devices/sst25l.c
> @@ -53,7 +53,6 @@ struct sst25l_flash {
>  	struct mutex		lock;
>  	struct mtd_info		mtd;
>  
> -	int 			partitioned;
>  };

How about removing the unneeded newline as well? :-)


-- 
Best Regards,
Artem Bityutskiy (Артём Битюцкий)

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 05/44] mtd: bfin-async-flash.c: use mtd_device_parse_register
  2011-06-07 13:36 ` [PATCH 05/44] mtd: bfin-async-flash.c: " Dmitry Eremin-Solenikov
@ 2011-06-08  9:01   ` Artem Bityutskiy
  2011-06-08  9:02     ` Artem Bityutskiy
  0 siblings, 1 reply; 70+ messages in thread
From: Artem Bityutskiy @ 2011-06-08  9:01 UTC (permalink / raw)
  To: Dmitry Eremin-Solenikov; +Cc: David Woodhouse, linux-mtd

On Tue, 2011-06-07 at 17:36 +0400, Dmitry Eremin-Solenikov wrote:
> +       mtd_device_parse_register(state->mtd, part_probe_types, 0,
> +                       pdata->parts, pdata->nr_parts);

How about checking the return code? :-)

-- 
Best Regards,
Artem Bityutskiy (Артём Битюцкий)

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 05/44] mtd: bfin-async-flash.c: use mtd_device_parse_register
  2011-06-08  9:01   ` Artem Bityutskiy
@ 2011-06-08  9:02     ` Artem Bityutskiy
  2011-06-08 14:06       ` Dmitry Eremin-Solenikov
  0 siblings, 1 reply; 70+ messages in thread
From: Artem Bityutskiy @ 2011-06-08  9:02 UTC (permalink / raw)
  To: Dmitry Eremin-Solenikov; +Cc: David Woodhouse, linux-mtd

On Wed, 2011-06-08 at 12:01 +0300, Artem Bityutskiy wrote:
> On Tue, 2011-06-07 at 17:36 +0400, Dmitry Eremin-Solenikov wrote:
> > +       mtd_device_parse_register(state->mtd, part_probe_types, 0,
> > +                       pdata->parts, pdata->nr_parts);
> 
> How about checking the return code? :-)

Ok, you did not do it because the original function did not do it. Fair
enough, this is a separate thing.

-- 
Best Regards,
Artem Bityutskiy (Артём Битюцкий)

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 26/44] mtd: cs553x_nand.c: use mtd_device_parse_register
  2011-06-07 13:36 ` [PATCH 26/44] mtd: cs553x_nand.c: " Dmitry Eremin-Solenikov
@ 2011-06-08  9:19   ` Artem Bityutskiy
  2011-06-08 14:05     ` Dmitry Eremin-Solenikov
  0 siblings, 1 reply; 70+ messages in thread
From: Artem Bityutskiy @ 2011-06-08  9:19 UTC (permalink / raw)
  To: Dmitry Eremin-Solenikov; +Cc: David Woodhouse, linux-mtd

On Tue, 2011-06-07 at 17:36 +0400, Dmitry Eremin-Solenikov wrote:
> +                       mtd_device_parse_register(cs553x_mtd[i], NULL,
> 0,
> +                                       NULL, 0); 

You do not need 2 lines here.

-- 
Best Regards,
Artem Bityutskiy (Артём Битюцкий)

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 28/44] mtd: edb7312.c: use mtd_device_parse_register
  2011-06-07 13:36 ` [PATCH 28/44] mtd: edb7312.c: " Dmitry Eremin-Solenikov
@ 2011-06-08  9:20   ` Artem Bityutskiy
  2011-06-08 14:04     ` Dmitry Eremin-Solenikov
  0 siblings, 1 reply; 70+ messages in thread
From: Artem Bityutskiy @ 2011-06-08  9:20 UTC (permalink / raw)
  To: Dmitry Eremin-Solenikov; +Cc: David Woodhouse, linux-mtd

On Tue, 2011-06-07 at 17:36 +0400, Dmitry Eremin-Solenikov wrote:
> -	mtd_device_register(ep7312_mtd, mtd_parts, mtd_parts_nb);
> +	mtd_device_register(ep7312_mtd, NULL, 0,
> +			partition_info, NUM_PARTITIONS);

And probably here?

-- 
Best Regards,
Artem Bityutskiy (Артём Битюцкий)

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 00/44] Cleanup of parse/register scenario
  2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
                   ` (43 preceding siblings ...)
  2011-06-07 13:36 ` [PATCH 44/44] mtd: onenand/samsung.c: " Dmitry Eremin-Solenikov
@ 2011-06-08  9:26 ` Artem Bityutskiy
  44 siblings, 0 replies; 70+ messages in thread
From: Artem Bityutskiy @ 2011-06-08  9:26 UTC (permalink / raw)
  To: Dmitry Eremin-Solenikov; +Cc: David Woodhouse, linux-mtd

On Tue, 2011-06-07 at 17:35 +0400, Dmitry Eremin-Solenikov wrote:
> Lots of mtd drivers have more or less the same common logic:
> parse partitions, then register them. Currently this ends up
> with lots of code duplication, each copy having it's own features
> and bugs. In this patch serie I create a special function
> (mtd_device_parse_register) which handles all issues with acquiring
> partition information, registering mtd device(s) and returning correct
> error code.
> 
> The following changes since commit 85bd7e882840f4cb4d213768d252c754f22440ac:
> 
>   mtd: pxa3xx_nand: Fix blank page ECC mismatch (2011-06-07 15:40:29 +0300)
> 
> are available in the git repository at:
>   git://git.infradead.org/users/dbaryshkov/mtd-cleanup.git mtd-parse-1st

Dmitry, the patch-set is a great clean-up! Could you please address few
nit-picks I sent and also go through your patches and join the
unnecessary 2 lines in your 'mtd_device_parse_register()' invocations? I
think I can see several of them.

I mean,

mtd_device_parse_register(x, y, z,
			a, b)

should become

mtd_device_parse_register(x, y, z, a, b)

if this fits 80 characters.

Thanks!

-- 
Best Regards,
Artem Bityutskiy (Артём Битюцкий)

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 01/44] mtd: add new API for handling MTD registration
  2011-06-07 15:48     ` Dmitry Eremin-Solenikov
  2011-06-08  8:55       ` Artem Bityutskiy
@ 2011-06-08 10:19       ` Jamie Iles
  2011-06-08 12:22         ` Dmitry Eremin-Solenikov
  1 sibling, 1 reply; 70+ messages in thread
From: Jamie Iles @ 2011-06-08 10:19 UTC (permalink / raw)
  To: Dmitry Eremin-Solenikov; +Cc: David Woodhouse, linux-mtd, Jamie Iles, dedekind1

On Tue, Jun 07, 2011 at 07:48:58PM +0400, Dmitry Eremin-Solenikov wrote:
> Lots (nearly all) mtd drivers contain nearly the similar code that
> calls parse_mtd_partitions, provides some platform-default values, if
> parsing fails, and registers  mtd device.
> 
> This is an aim to provide single implementation of this scenario:
> mtd_device_parse_register() which will handle all this parsing and
> defaults.
> 
> Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
> ---
>  drivers/mtd/mtdcore.c   |   47 +++++++++++++++++++++++++++++++++++++++++++++++
>  include/linux/mtd/mtd.h |    5 +++++
>  2 files changed, 52 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c
> index c510aff..d538e0a 100644
> --- a/drivers/mtd/mtdcore.c
> +++ b/drivers/mtd/mtdcore.c
> @@ -452,6 +452,53 @@ int mtd_device_register(struct mtd_info *master,
>  EXPORT_SYMBOL_GPL(mtd_device_register);
>  
>  /**
> + * mtd_device_parse_register - register an MTD device.
> + *
> + * @mtd: the MTD device to register
> + * @part_probe_types: the list of MTD partition probes to try
> + * @origin: start address of MTD device. =0 unless you are sure you need this.
> + * @defparts: default partition information to register. Only valid if
> + *		defnr_parts > 0
> + * @defnr_parts: the number of partitions in defparts.  If zero then the full
> + *		MTD device is registered if no partition info is found
> + *
> + * Extract partition info and register MTD device (partitions or a whole device)
> + * It calls parse_mtd_partitions(), checks the result. If there were no
> + * partitions found, it uses default info specified (via defparts/defnr_parts)
> + * and then registers either partitions, or (if no partitions were
> + * found/specified) the whow MTD.

s/whow/whole ?

> + */
> +int mtd_device_parse_register(struct mtd_info *mtd,
> +			      const char **part_probe_types,
> +			      unsigned long origin,
> +			      const struct mtd_partition *defparts,
> +			      int defnr_parts)
> +{
> +	int err;
> +	struct mtd_partition *parts;
> +
> +	err = parse_mtd_partitions(mtd, part_probe_types, &parts, origin);
> +	if (err <= 0 && defnr_parts) {
> +		parts = kmemdup(defparts, sizeof(*parts) * defnr_parts,
> +				GFP_KERNEL);
> +		if (!parts)
> +			err = -ENOMEM;
> +	}

I see that some of your patches for drivers (e.g. plat_nand) remove the 
kfree() of the partitions but this doesn't appear to be handled anywhere 
else afaict.  I don't think this can be done in mtd_device_unregister() 
as it doesn't have the mtd_partition array so probably needs to remain 
in the driver.

Jamie

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 01/44] mtd: add new API for handling MTD registration
  2011-06-08 10:19       ` Jamie Iles
@ 2011-06-08 12:22         ` Dmitry Eremin-Solenikov
  0 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-08 12:22 UTC (permalink / raw)
  To: Jamie Iles; +Cc: David Woodhouse, linux-mtd, dedekind1

On 6/8/11, Jamie Iles <jamie@jamieiles.com> wrote:
> On Tue, Jun 07, 2011 at 07:48:58PM +0400, Dmitry Eremin-Solenikov wrote:
>> Lots (nearly all) mtd drivers contain nearly the similar code that
>> calls parse_mtd_partitions, provides some platform-default values, if
>> parsing fails, and registers  mtd device.
>>
>> This is an aim to provide single implementation of this scenario:
>> mtd_device_parse_register() which will handle all this parsing and
>> defaults.
>>
>> Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
>> ---
>>  drivers/mtd/mtdcore.c   |   47
>> +++++++++++++++++++++++++++++++++++++++++++++++
>>  include/linux/mtd/mtd.h |    5 +++++
>>  2 files changed, 52 insertions(+), 0 deletions(-)
>>
>> diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c
>> index c510aff..d538e0a 100644
>> --- a/drivers/mtd/mtdcore.c
>> +++ b/drivers/mtd/mtdcore.c
>> @@ -452,6 +452,53 @@ int mtd_device_register(struct mtd_info *master,
>>  EXPORT_SYMBOL_GPL(mtd_device_register);
>>
>>  /**
>> + * mtd_device_parse_register - register an MTD device.
>> + *
>> + * @mtd: the MTD device to register
>> + * @part_probe_types: the list of MTD partition probes to try
>> + * @origin: start address of MTD device. =0 unless you are sure you need
>> this.
>> + * @defparts: default partition information to register. Only valid if
>> + *		defnr_parts > 0
>> + * @defnr_parts: the number of partitions in defparts.  If zero then the
>> full
>> + *		MTD device is registered if no partition info is found
>> + *
>> + * Extract partition info and register MTD device (partitions or a whole
>> device)
>> + * It calls parse_mtd_partitions(), checks the result. If there were no
>> + * partitions found, it uses default info specified (via
>> defparts/defnr_parts)
>> + * and then registers either partitions, or (if no partitions were
>> + * found/specified) the whow MTD.
>
> s/whow/whole ?

Yup.

>> + */
>> +int mtd_device_parse_register(struct mtd_info *mtd,
>> +			      const char **part_probe_types,
>> +			      unsigned long origin,
>> +			      const struct mtd_partition *defparts,
>> +			      int defnr_parts)
>> +{
>> +	int err;
>> +	struct mtd_partition *parts;
>> +
>> +	err = parse_mtd_partitions(mtd, part_probe_types, &parts, origin);
>> +	if (err <= 0 && defnr_parts) {
>> +		parts = kmemdup(defparts, sizeof(*parts) * defnr_parts,
>> +				GFP_KERNEL);
>> +		if (!parts)
>> +			err = -ENOMEM;
>> +	}
>
> I see that some of your patches for drivers (e.g. plat_nand) remove the
> kfree() of the partitions but this doesn't appear to be handled anywhere
> else afaict.  I don't think this can be done in mtd_device_unregister()
> as it doesn't have the mtd_partition array so probably needs to remain
> in the driver.

It's handled by kfree right aftert add_mtd_partitions. No mtd partitions
information is exported out of mtd_device_parse_register(). In fact I'll have
to check if I can remove all <mtd/partitions.h> includes from drivers.

Anyway I'll post a V2 later after fixing issues identified by you and Artem.

-- 
With best wishes
Dmitry

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 18/44] mtd: rbtx4939-flash.c: use mtd_device_parse_register
  2011-06-07 13:36 ` [PATCH 18/44] mtd: rbtx4939-flash.c: " Dmitry Eremin-Solenikov
@ 2011-06-08 13:50   ` Atsushi Nemoto
  2011-06-08 14:07     ` Dmitry Eremin-Solenikov
  0 siblings, 1 reply; 70+ messages in thread
From: Atsushi Nemoto @ 2011-06-08 13:50 UTC (permalink / raw)
  To: dbaryshkov; +Cc: dwmw2, linux-mtd, dedekind1

On Tue,  7 Jun 2011 17:36:17 +0400, Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> wrote:
> @@ -106,18 +102,8 @@ static int rbtx4939_flash_probe(struct platform_device *dev)
>  	info->mtd->owner = THIS_MODULE;
>  	if (err)
>  		goto err_out;
> -	err = parse_mtd_partitions(info->mtd, NULL, &info->parts, 0);
> -	if (err > 0) {
> -		mtd_device_register(info->mtd, info->parts, err);
> -		info->nr_parts = err;
> -		return 0;
> -	}
> -
> -	if (pdata->nr_parts) {
> -		pr_notice("Using rbtx4939 partition information\n");
> -		mtd_device_register(info->mtd, pdata->parts, pdata->nr_parts);
> -		return 0;
> -	}
> +	err = mtd_device_parse_register(info->mtd, NULL, 0,
> +			pdata->parts, pdata->nr_parts);
>  
>  	mtd_device_register(info->mtd, NULL, 0);
>  	return 0;

The last mtd_device_register() call should be removed too?

---
Atsushi Nemoto

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 28/44] mtd: edb7312.c: use mtd_device_parse_register
  2011-06-08  9:20   ` Artem Bityutskiy
@ 2011-06-08 14:04     ` Dmitry Eremin-Solenikov
  0 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-08 14:04 UTC (permalink / raw)
  To: Artem Bityutskiy; +Cc: David Woodhouse, linux-mtd

On 6/8/11, Artem Bityutskiy <dedekind1@gmail.com> wrote:
> On Tue, 2011-06-07 at 17:36 +0400, Dmitry Eremin-Solenikov wrote:
>> -	mtd_device_register(ep7312_mtd, mtd_parts, mtd_parts_nb);
>> +	mtd_device_register(ep7312_mtd, NULL, 0,
>> +			partition_info, NUM_PARTITIONS);
>
> And probably here?

82 syms

-- 
With best wishes
Dmitry

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 26/44] mtd: cs553x_nand.c: use mtd_device_parse_register
  2011-06-08  9:19   ` Artem Bityutskiy
@ 2011-06-08 14:05     ` Dmitry Eremin-Solenikov
  0 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-08 14:05 UTC (permalink / raw)
  To: dedekind1; +Cc: David Woodhouse, linux-mtd

On 6/8/11, Artem Bityutskiy <dedekind1@gmail.com> wrote:
> On Tue, 2011-06-07 at 17:36 +0400, Dmitry Eremin-Solenikov wrote:
>> +                       mtd_device_parse_register(cs553x_mtd[i], NULL,
>> 0,
>> +                                       NULL, 0);
>
> You do not need 2 lines here.

84 syms.

-- 
With best wishes
Dmitry

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 05/44] mtd: bfin-async-flash.c: use mtd_device_parse_register
  2011-06-08  9:02     ` Artem Bityutskiy
@ 2011-06-08 14:06       ` Dmitry Eremin-Solenikov
  2011-06-08 14:12         ` Artem Bityutskiy
  0 siblings, 1 reply; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-08 14:06 UTC (permalink / raw)
  To: dedekind1; +Cc: David Woodhouse, linux-mtd

On 6/8/11, Artem Bityutskiy <dedekind1@gmail.com> wrote:
> On Wed, 2011-06-08 at 12:01 +0300, Artem Bityutskiy wrote:
>> On Tue, 2011-06-07 at 17:36 +0400, Dmitry Eremin-Solenikov wrote:
>> > +       mtd_device_parse_register(state->mtd, part_probe_types, 0,
>> > +                       pdata->parts, pdata->nr_parts);
>>
>> How about checking the return code? :-)
>
> Ok, you did not do it because the original function did not do it. Fair
> enough, this is a separate thing.

Nice idea. Making mtd_device_parse_register a __must_check function :)

-- 
With best wishes
Dmitry

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 18/44] mtd: rbtx4939-flash.c: use mtd_device_parse_register
  2011-06-08 13:50   ` Atsushi Nemoto
@ 2011-06-08 14:07     ` Dmitry Eremin-Solenikov
  0 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-08 14:07 UTC (permalink / raw)
  To: Atsushi Nemoto; +Cc: dwmw2, linux-mtd, dedekind1

On 6/8/11, Atsushi Nemoto <anemo@mba.ocn.ne.jp> wrote:
> On Tue,  7 Jun 2011 17:36:17 +0400, Dmitry Eremin-Solenikov
> <dbaryshkov@gmail.com> wrote:
>> @@ -106,18 +102,8 @@ static int rbtx4939_flash_probe(struct
>> platform_device *dev)
>>  	info->mtd->owner = THIS_MODULE;
>>  	if (err)
>>  		goto err_out;
>> -	err = parse_mtd_partitions(info->mtd, NULL, &info->parts, 0);
>> -	if (err > 0) {
>> -		mtd_device_register(info->mtd, info->parts, err);
>> -		info->nr_parts = err;
>> -		return 0;
>> -	}
>> -
>> -	if (pdata->nr_parts) {
>> -		pr_notice("Using rbtx4939 partition information\n");
>> -		mtd_device_register(info->mtd, pdata->parts, pdata->nr_parts);
>> -		return 0;
>> -	}
>> +	err = mtd_device_parse_register(info->mtd, NULL, 0,
>> +			pdata->parts, pdata->nr_parts);
>>
>>  	mtd_device_register(info->mtd, NULL, 0);
>>  	return 0;
>
> The last mtd_device_register() call should be removed too?

Good catch, thanks!

-- 
With best wishes
Dmitry

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 05/44] mtd: bfin-async-flash.c: use mtd_device_parse_register
  2011-06-08 14:06       ` Dmitry Eremin-Solenikov
@ 2011-06-08 14:12         ` Artem Bityutskiy
  2011-06-08 14:22           ` Dmitry Eremin-Solenikov
  0 siblings, 1 reply; 70+ messages in thread
From: Artem Bityutskiy @ 2011-06-08 14:12 UTC (permalink / raw)
  To: Dmitry Eremin-Solenikov; +Cc: David Woodhouse, linux-mtd

On Wed, 2011-06-08 at 18:06 +0400, Dmitry Eremin-Solenikov wrote:
> On 6/8/11, Artem Bityutskiy <dedekind1@gmail.com> wrote:
> > On Wed, 2011-06-08 at 12:01 +0300, Artem Bityutskiy wrote:
> >> On Tue, 2011-06-07 at 17:36 +0400, Dmitry Eremin-Solenikov wrote:
> >> > +       mtd_device_parse_register(state->mtd, part_probe_types, 0,
> >> > +                       pdata->parts, pdata->nr_parts);
> >>
> >> How about checking the return code? :-)
> >
> > Ok, you did not do it because the original function did not do it. Fair
> > enough, this is a separate thing.
> 
> Nice idea. Making mtd_device_parse_register a __must_check function :)

But please, do it as a separate patch.

-- 
Best Regards,
Artem Bityutskiy (Артём Битюцкий)

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 05/44] mtd: bfin-async-flash.c: use mtd_device_parse_register
  2011-06-08 14:12         ` Artem Bityutskiy
@ 2011-06-08 14:22           ` Dmitry Eremin-Solenikov
  2011-06-08 14:24             ` Artem Bityutskiy
  0 siblings, 1 reply; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-08 14:22 UTC (permalink / raw)
  To: dedekind1; +Cc: David Woodhouse, linux-mtd

On 6/8/11, Artem Bityutskiy <dedekind1@gmail.com> wrote:
> On Wed, 2011-06-08 at 18:06 +0400, Dmitry Eremin-Solenikov wrote:
>> On 6/8/11, Artem Bityutskiy <dedekind1@gmail.com> wrote:
>> > On Wed, 2011-06-08 at 12:01 +0300, Artem Bityutskiy wrote:
>> >> On Tue, 2011-06-07 at 17:36 +0400, Dmitry Eremin-Solenikov wrote:
>> >> > +       mtd_device_parse_register(state->mtd, part_probe_types, 0,
>> >> > +                       pdata->parts, pdata->nr_parts);
>> >>
>> >> How about checking the return code? :-)
>> >
>> > Ok, you did not do it because the original function did not do it. Fair
>> > enough, this is a separate thing.
>>
>> Nice idea. Making mtd_device_parse_register a __must_check function :)
>
> But please, do it as a separate patch.

Why not make it a __must_check from the beginning? And fixup problematic
drivers later.

-- 
With best wishes
Dmitry

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 05/44] mtd: bfin-async-flash.c: use mtd_device_parse_register
  2011-06-08 14:22           ` Dmitry Eremin-Solenikov
@ 2011-06-08 14:24             ` Artem Bityutskiy
  2011-06-08 14:31               ` Dmitry Eremin-Solenikov
  0 siblings, 1 reply; 70+ messages in thread
From: Artem Bityutskiy @ 2011-06-08 14:24 UTC (permalink / raw)
  To: Dmitry Eremin-Solenikov; +Cc: David Woodhouse, linux-mtd

On Wed, 2011-06-08 at 18:22 +0400, Dmitry Eremin-Solenikov wrote:
> On 6/8/11, Artem Bityutskiy <dedekind1@gmail.com> wrote:
> > On Wed, 2011-06-08 at 18:06 +0400, Dmitry Eremin-Solenikov wrote:
> >> On 6/8/11, Artem Bityutskiy <dedekind1@gmail.com> wrote:
> >> > On Wed, 2011-06-08 at 12:01 +0300, Artem Bityutskiy wrote:
> >> >> On Tue, 2011-06-07 at 17:36 +0400, Dmitry Eremin-Solenikov wrote:
> >> >> > +       mtd_device_parse_register(state->mtd, part_probe_types, 0,
> >> >> > +                       pdata->parts, pdata->nr_parts);
> >> >>
> >> >> How about checking the return code? :-)
> >> >
> >> > Ok, you did not do it because the original function did not do it. Fair
> >> > enough, this is a separate thing.
> >>
> >> Nice idea. Making mtd_device_parse_register a __must_check function :)
> >
> > But please, do it as a separate patch.
> 
> Why not make it a __must_check from the beginning? And fixup problematic
> drivers later.

Because it is a separate problem and separate set of patches is needed.
First, solve one problem, then start solving the other.

Secondly, if someone will later prove that __must_check was a mistake,
we can just revert that separate patch.

-- 
Best Regards,
Artem Bityutskiy (Артём Битюцкий)

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 05/44] mtd: bfin-async-flash.c: use mtd_device_parse_register
  2011-06-08 14:24             ` Artem Bityutskiy
@ 2011-06-08 14:31               ` Dmitry Eremin-Solenikov
  0 siblings, 0 replies; 70+ messages in thread
From: Dmitry Eremin-Solenikov @ 2011-06-08 14:31 UTC (permalink / raw)
  To: dedekind1; +Cc: David Woodhouse, linux-mtd

On 6/8/11, Artem Bityutskiy <dedekind1@gmail.com> wrote:
> On Wed, 2011-06-08 at 18:22 +0400, Dmitry Eremin-Solenikov wrote:
>> On 6/8/11, Artem Bityutskiy <dedekind1@gmail.com> wrote:
>> > On Wed, 2011-06-08 at 18:06 +0400, Dmitry Eremin-Solenikov wrote:
>> >> On 6/8/11, Artem Bityutskiy <dedekind1@gmail.com> wrote:
>> >> > On Wed, 2011-06-08 at 12:01 +0300, Artem Bityutskiy wrote:
>> >> >> On Tue, 2011-06-07 at 17:36 +0400, Dmitry Eremin-Solenikov wrote:
>> >> >> > +       mtd_device_parse_register(state->mtd, part_probe_types, 0,
>> >> >> > +                       pdata->parts, pdata->nr_parts);
>> >> >>
>> >> >> How about checking the return code? :-)
>> >> >
>> >> > Ok, you did not do it because the original function did not do it.
>> >> > Fair
>> >> > enough, this is a separate thing.
>> >>
>> >> Nice idea. Making mtd_device_parse_register a __must_check function :)
>> >
>> > But please, do it as a separate patch.
>>
>> Why not make it a __must_check from the beginning? And fixup problematic
>> drivers later.
>
> Because it is a separate problem and separate set of patches is needed.
> First, solve one problem, then start solving the other.
>
> Secondly, if someone will later prove that __must_check was a mistake,
> we can just revert that separate patch.

Roger.

-- 
With best wishes
Dmitry

^ permalink raw reply	[flat|nested] 70+ messages in thread

end of thread, other threads:[~2011-06-08 14:31 UTC | newest]

Thread overview: 70+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-06-07 13:35 [PATCH 00/44] Cleanup of parse/register scenario Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 01/44] mtd: add new API for handling MTD registration Dmitry Eremin-Solenikov
2011-06-07 13:44   ` Jamie Iles
2011-06-07 14:33     ` Dmitry Eremin-Solenikov
2011-06-08  8:37       ` Artem Bityutskiy
2011-06-08  8:57         ` Dmitry Eremin-Solenikov
2011-06-08  8:57           ` Artem Bityutskiy
2011-06-07 15:48     ` Dmitry Eremin-Solenikov
2011-06-08  8:55       ` Artem Bityutskiy
2011-06-08 10:19       ` Jamie Iles
2011-06-08 12:22         ` Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 02/44] mtd: lart.c: use mtd_device_parse_register Dmitry Eremin-Solenikov
2011-06-08  8:59   ` Artem Bityutskiy
2011-06-07 13:36 ` [PATCH 03/44] mtd: mtd_dataflash.c: " Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 04/44] mtd: sst25l.c: " Dmitry Eremin-Solenikov
2011-06-08  9:00   ` Artem Bityutskiy
2011-06-07 13:36 ` [PATCH 05/44] mtd: bfin-async-flash.c: " Dmitry Eremin-Solenikov
2011-06-08  9:01   ` Artem Bityutskiy
2011-06-08  9:02     ` Artem Bityutskiy
2011-06-08 14:06       ` Dmitry Eremin-Solenikov
2011-06-08 14:12         ` Artem Bityutskiy
2011-06-08 14:22           ` Dmitry Eremin-Solenikov
2011-06-08 14:24             ` Artem Bityutskiy
2011-06-08 14:31               ` Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 06/44] mtd: dc21285.c: " Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 07/44] mtd: gpio-addr-flash.c: " Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 08/44] mtd: h720x-flash.c: " Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 09/44] mtd: impa7.c: " Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 10/44] mtd: intel_vr_nor.c: " Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 11/44] mtd: ixp2000.c: " Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 12/44] mtd: ixp4xx.c: " Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 13/44] mtd: lantiq-flash.c: " Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 14/44] mtd: latch-addr-flash.c: " Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 15/44] mtd: physmap.c: " Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 16/44] mtd: plat-ram.c: " Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 17/44] mtd: pxa2xx-flash.c: " Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 18/44] mtd: rbtx4939-flash.c: " Dmitry Eremin-Solenikov
2011-06-08 13:50   ` Atsushi Nemoto
2011-06-08 14:07     ` Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 19/44] mtd: sa1100-flash.c: " Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 20/44] mtd: solutionengine.c: " Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 21/44] mtd: wr_sbc82xx_flash.c: " Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 22/44] mtd: atmel_nand.c: " Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 23/44] mtd: bcm_umi_nand.c: " Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 24/44] mtd: cafe_nand.c: " Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 25/44] mtd: cmx270_nand.c: " Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 26/44] mtd: cs553x_nand.c: " Dmitry Eremin-Solenikov
2011-06-08  9:19   ` Artem Bityutskiy
2011-06-08 14:05     ` Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 27/44] mtd: davinci_nand.c: " Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 28/44] mtd: edb7312.c: " Dmitry Eremin-Solenikov
2011-06-08  9:20   ` Artem Bityutskiy
2011-06-08 14:04     ` Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 29/44] mtd: fsmc_nand.c: " Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 30/44] mtd: h1910.c: " Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 31/44] mtd: jz4740_nand.c: " Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 32/44] mtd: mxc_nand.c: " Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 33/44] mtd: omap2.c: " Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 34/44] mtd: orion_nand.c: " Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 35/44] mtd: plat_nand.c: " Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 36/44] mtd: ppchameleonevb.c: " Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 37/44] mtd: pxa3xx_nand.c: " Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 38/44] mtd: s3c2410.c: " Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 39/44] mtd: sharpsl.c: " Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 40/44] mtd: tmio_nand.c: " Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 41/44] mtd: txx9ndfmc.c: " Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 42/44] mtd: onenand/generic.c: " Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 43/44] mtd: onenand/omap2.c: " Dmitry Eremin-Solenikov
2011-06-07 13:36 ` [PATCH 44/44] mtd: onenand/samsung.c: " Dmitry Eremin-Solenikov
2011-06-08  9:26 ` [PATCH 00/44] Cleanup of parse/register scenario Artem Bityutskiy

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox