Patchwork physmap: fix mtdconcat support if physmap/mtdconcat were compiled as modules

login
register
mail settings
Submitter Dmitry Eremin-Solenikov
Date Jan. 5, 2011, 2 a.m.
Message ID <1294192813-23549-1-git-send-email-dbaryshkov@gmail.com>
Download mbox | patch
Permalink /patch/77565/
State New
Headers show

Comments

Dmitry Eremin-Solenikov - Jan. 5, 2011, 2 a.m.
physmap/physmap_of contained compile-time check for mtd concatenation.
However thos modules did not consider that mtd concatenation can be
built as modules. Fix physmap/physmap_of to also support
CONFIG_MTD_CONCAT=m

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Cc: Stefan Roese <sr@denx.de>
---
 drivers/mtd/maps/physmap.c    |    4 ++--
 drivers/mtd/maps/physmap_of.c |    4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)
Artem Bityutskiy - Jan. 5, 2011, 9:07 a.m.
On Wed, 2011-01-05 at 05:00 +0300, Dmitry Eremin-Solenikov wrote:
> physmap/physmap_of contained compile-time check for mtd concatenation.
> However thos modules did not consider that mtd concatenation can be
> built as modules. Fix physmap/physmap_of to also support
> CONFIG_MTD_CONCAT=m
> 
> Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
> Cc: Stefan Roese <sr@denx.de>
> ---
>  drivers/mtd/maps/physmap.c    |    4 ++--
>  drivers/mtd/maps/physmap_of.c |    4 ++--
>  2 files changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/mtd/maps/physmap.c b/drivers/mtd/maps/physmap.c
> index 4c18b98..a224afc 100644
> --- a/drivers/mtd/maps/physmap.c
> +++ b/drivers/mtd/maps/physmap.c
> @@ -59,7 +59,7 @@ static int physmap_flash_remove(struct platform_device *dev)
>  #else
>  		del_mtd_device(info->cmtd);
>  #endif
> -#ifdef CONFIG_MTD_CONCAT
> +#if defined(CONFIG_MTD_CONCAT) || (defined(CONFIG_MTD_CONCAT_MODULE) && defined(CONFIG_MTD_PHYSMAP_MODULE))
>  		if (info->cmtd != info->mtd[0])
>  			mtd_concat_destroy(info->cmtd);
>  #endif
> @@ -159,7 +159,7 @@ static int physmap_flash_probe(struct platform_device *dev)
>  		/*
>  		 * We detected multiple devices. Concatenate them together.
>  		 */
> -#ifdef CONFIG_MTD_CONCAT
> +#if defined(CONFIG_MTD_CONCAT) || (defined(CONFIG_MTD_CONCAT_MODULE) && defined(CONFIG_MTD_PHYSMAP_MODULE))

Can we do something else to avoid these complex ifdefs? I'd vote for
making mtdconcat integral part of mtd core and just always have it
built-in - remove the Kconfig option and all the ifdefs all over the
place. Indeed, this is tiny piece of code, I believe this micro-modules
make little sense nowadays.

The same for mtdparts - but this is a different story.
Stefan Roese - Jan. 10, 2011, 10:58 a.m.
On Wednesday 05 January 2011 10:07:53 Artem Bityutskiy wrote:
> On Wed, 2011-01-05 at 05:00 +0300, Dmitry Eremin-Solenikov wrote:
> > physmap/physmap_of contained compile-time check for mtd concatenation.
> > However thos modules did not consider that mtd concatenation can be
> > built as modules. Fix physmap/physmap_of to also support
> > CONFIG_MTD_CONCAT=m

<snip>

> Can we do something else to avoid these complex ifdefs? I'd vote for
> making mtdconcat integral part of mtd core and just always have it
> built-in - remove the Kconfig option and all the ifdefs all over the
> place. Indeed, this is tiny piece of code, I believe this micro-modules
> make little sense nowadays.

Yes, I like this suggestion.

Dmitry, can you cook up such a patch? Otherwise I'll put it on my to-do 
list...
 
> The same for mtdparts - but this is a different story.

Yep.

Cheers,
Stefan

Patch

diff --git a/drivers/mtd/maps/physmap.c b/drivers/mtd/maps/physmap.c
index 4c18b98..a224afc 100644
--- a/drivers/mtd/maps/physmap.c
+++ b/drivers/mtd/maps/physmap.c
@@ -59,7 +59,7 @@  static int physmap_flash_remove(struct platform_device *dev)
 #else
 		del_mtd_device(info->cmtd);
 #endif
-#ifdef CONFIG_MTD_CONCAT
+#if defined(CONFIG_MTD_CONCAT) || (defined(CONFIG_MTD_CONCAT_MODULE) && defined(CONFIG_MTD_PHYSMAP_MODULE))
 		if (info->cmtd != info->mtd[0])
 			mtd_concat_destroy(info->cmtd);
 #endif
@@ -159,7 +159,7 @@  static int physmap_flash_probe(struct platform_device *dev)
 		/*
 		 * We detected multiple devices. Concatenate them together.
 		 */
-#ifdef CONFIG_MTD_CONCAT
+#if defined(CONFIG_MTD_CONCAT) || (defined(CONFIG_MTD_CONCAT_MODULE) && defined(CONFIG_MTD_PHYSMAP_MODULE))
 		info->cmtd = mtd_concat_create(info->mtd, devices_found, dev_name(&dev->dev));
 		if (info->cmtd == NULL)
 			err = -ENXIO;
diff --git a/drivers/mtd/maps/physmap_of.c b/drivers/mtd/maps/physmap_of.c
index 9861814..ffa93e5 100644
--- a/drivers/mtd/maps/physmap_of.c
+++ b/drivers/mtd/maps/physmap_of.c
@@ -104,7 +104,7 @@  static int of_flash_remove(struct platform_device *dev)
 		return 0;
 	dev_set_drvdata(&dev->dev, NULL);
 
-#ifdef CONFIG_MTD_CONCAT
+#if defined(CONFIG_MTD_CONCAT) || (defined(CONFIG_MTD_CONCAT_MODULE) && defined(CONFIG_MTD_PHYSMAP_OF_MODULE))
 	if (info->cmtd != info->list[0].mtd) {
 		del_mtd_device(info->cmtd);
 		mtd_concat_destroy(info->cmtd);
@@ -336,7 +336,7 @@  static int __devinit of_flash_probe(struct platform_device *dev,
 		/*
 		 * We detected multiple devices. Concatenate them together.
 		 */
-#ifdef CONFIG_MTD_CONCAT
+#if defined(CONFIG_MTD_CONCAT) || (defined(CONFIG_MTD_CONCAT_MODULE) && defined(CONFIG_MTD_PHYSMAP_OF_MODULE))
 		info->cmtd = mtd_concat_create(mtd_list, info->list_size,
 					       dev_name(&dev->dev));
 		if (info->cmtd == NULL)