public inbox for linux-sh@vger.kernel.org
 help / color / mirror / Atom feed
From: Kyungmin Park <kmpark@infradead.org>
To: Magnus Damm <magnus.damm@gmail.com>
Cc: linux-sh@vger.kernel.org, tony@atomide.com, lethal@linux-sh.org,
	linux-mtd@lists.infradead.org, akpm@linux-foundation.org,
	linux-omap@vger.kernel.org, dwmw2@infradead.org
Subject: Re: [PATCH] mtd: make onenand/generic.c more generic
Date: Wed, 05 Aug 2009 04:24:28 +0000	[thread overview]
Message-ID: <9c9fda240908042124y4f783dfehd575601c0a09550e@mail.gmail.com> (raw)
In-Reply-To: <20090804092046.16025.83910.sendpatchset@rx1.opensource.se>

Hi

Good idea add the onenand_platform_data, but dont' agree the renaming
the onenand-flash.
Other boards are use it even though it's not released it

Others are good.

Thank you,
Kyungmin Park

On Tue, Aug 4, 2009 at 6:20 PM, Magnus Damm<magnus.damm@gmail.com> wrote:
> From: Magnus Damm <damm@igel.co.jp>
>
> This patch removes the ARM dependency from the generic "onenand"
> platform device driver. This change makes the driver useful for
> other architectures as well. Needed for the SuperH kfr2r09 board.
>
> Apart from the obvious Kconfig bits, the most important change
> is the move away from ARM specific includes and platform data.
> Together with this change the only in-tree board code gets an
> update, and the driver name is also changed gracefully break
> potential out of tree drivers.
>
> The driver is also updated to allow NULL as platform data together
> with a few changes to make use of resource_size() and dev_name().
>
> Signed-off-by: Magnus Damm <damm@igel.co.jp>
> ---
>
>  Tested on the sh7724 kfr2r09 board with a separate platform data patch.
>
>  arch/arm/mach-omap2/board-apollon.c |    4 ++--
>  drivers/mtd/onenand/Kconfig         |    1 -
>  drivers/mtd/onenand/generic.c       |   24 ++++++++++++++----------
>  include/linux/mtd/onenand.h         |    8 ++++++++
>  4 files changed, 24 insertions(+), 13 deletions(-)
>
> --- 0001/arch/arm/mach-omap2/board-apollon.c
> +++ work/arch/arm/mach-omap2/board-apollon.c    2009-08-04 17:01:18.000000000 +0900
> @@ -87,7 +87,7 @@ static struct mtd_partition apollon_part
>        },
>  };
>
> -static struct flash_platform_data apollon_flash_data = {
> +static struct onenand_platform_data apollon_flash_data = {
>        .parts          = apollon_partitions,
>        .nr_parts       = ARRAY_SIZE(apollon_partitions),
>  };
> @@ -99,7 +99,7 @@ static struct resource apollon_flash_res
>  };
>
>  static struct platform_device apollon_onenand_device = {
> -       .name           = "onenand",
> +       .name           = "onenand-flash",
>        .id             = -1,
>        .dev            = {
>                .platform_data  = &apollon_flash_data,
> --- 0001/drivers/mtd/onenand/Kconfig
> +++ work/drivers/mtd/onenand/Kconfig    2009-08-04 17:01:18.000000000 +0900
> @@ -23,7 +23,6 @@ config MTD_ONENAND_VERIFY_WRITE
>
>  config MTD_ONENAND_GENERIC
>        tristate "OneNAND Flash device via platform device driver"
> -       depends on ARM
>        help
>          Support for OneNAND flash via platform device driver.
>
> --- 0001/drivers/mtd/onenand/generic.c
> +++ work/drivers/mtd/onenand/generic.c  2009-08-04 17:12:00.000000000 +0900
> @@ -19,12 +19,16 @@
>  #include <linux/mtd/mtd.h>
>  #include <linux/mtd/onenand.h>
>  #include <linux/mtd/partitions.h>
> -
>  #include <asm/io.h>
> -#include <asm/mach/flash.h>
> -
> -#define DRIVER_NAME    "onenand"
>
> +/*
> + * Note: Driver name and platform data format have been updated!
> + *
> + * This version of the driver is named "onenand-flash" and takes struct
> + * onenand_platform_data as platform data. The old ARM-specific version
> + * with the name "onenand" used to take struct flash_platform_data.
> + */
> +#define DRIVER_NAME    "onenand-flash"
>
>  #ifdef CONFIG_MTD_PARTITIONS
>  static const char *part_probes[] = { "cmdlinepart", NULL,  };
> @@ -39,16 +43,16 @@ struct onenand_info {
>  static int __devinit generic_onenand_probe(struct platform_device *pdev)
>  {
>        struct onenand_info *info;
> -       struct flash_platform_data *pdata = pdev->dev.platform_data;
> +       struct onenand_platform_data *pdata = pdev->dev.platform_data;
>        struct resource *res = pdev->resource;
> -       unsigned long size = res->end - res->start + 1;
> +       unsigned long size = resource_size(res);
>        int err;
>
>        info = kzalloc(sizeof(struct onenand_info), GFP_KERNEL);
>        if (!info)
>                return -ENOMEM;
>
> -       if (!request_mem_region(res->start, size, pdev->dev.driver->name)) {
> +       if (!request_mem_region(res->start, size, dev_name(&pdev->dev))) {
>                err = -EBUSY;
>                goto out_free_info;
>        }
> @@ -59,7 +63,7 @@ static int __devinit generic_onenand_pro
>                goto out_release_mem_region;
>        }
>
> -       info->onenand.mmcontrol = pdata->mmcontrol;
> +       info->onenand.mmcontrol = pdata ? pdata->mmcontrol : 0;
>        info->onenand.irq = platform_get_irq(pdev, 0);
>
>        info->mtd.name = dev_name(&pdev->dev);
> @@ -75,7 +79,7 @@ static int __devinit generic_onenand_pro
>        err = parse_mtd_partitions(&info->mtd, part_probes, &info->parts, 0);
>        if (err > 0)
>                add_mtd_partitions(&info->mtd, info->parts, err);
> -       else if (err <= 0 && pdata->parts)
> +       else if (err <= 0 && pdata && pdata->parts)
>                add_mtd_partitions(&info->mtd, pdata->parts, pdata->nr_parts);
>        else
>  #endif
> @@ -99,7 +103,7 @@ static int __devexit generic_onenand_rem
>  {
>        struct onenand_info *info = platform_get_drvdata(pdev);
>        struct resource *res = pdev->resource;
> -       unsigned long size = res->end - res->start + 1;
> +       unsigned long size = resource_size(res);
>
>        platform_set_drvdata(pdev, NULL);
>
> --- 0001/include/linux/mtd/onenand.h
> +++ work/include/linux/mtd/onenand.h    2009-08-04 17:01:18.000000000 +0900
> @@ -214,4 +214,12 @@ unsigned onenand_block(struct onenand_ch
>  loff_t onenand_addr(struct onenand_chip *this, int block);
>  int flexonenand_region(struct mtd_info *mtd, loff_t addr);
>
> +struct mtd_partition;
> +
> +struct onenand_platform_data {
> +       void            (*mmcontrol)(struct mtd_info *mtd, int sync_read);
> +       struct mtd_partition *parts;
> +       unsigned int    nr_parts;
> +};
> +
>  #endif /* __LINUX_MTD_ONENAND_H */
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>

  reply	other threads:[~2009-08-05  4:24 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-08-04  9:20 [PATCH] mtd: make onenand/generic.c more generic Magnus Damm
2009-08-05  4:24 ` Kyungmin Park [this message]
2009-08-05  4:41   ` Magnus Damm
2009-08-07  5:28     ` Magnus Damm
2009-08-07  5:30       ` Paul Mundt
2009-08-07  5:46         ` Magnus Damm

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=9c9fda240908042124y4f783dfehd575601c0a09550e@mail.gmail.com \
    --to=kmpark@infradead.org \
    --cc=akpm@linux-foundation.org \
    --cc=dwmw2@infradead.org \
    --cc=lethal@linux-sh.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux-sh@vger.kernel.org \
    --cc=magnus.damm@gmail.com \
    --cc=tony@atomide.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox