[PATCH V6] mtd: m25p80: Modify the name of mtd_info
Hou Zhiqiang
B48286 at freescale.com
Tue Aug 18 01:29:57 PDT 2015
Hi Jonas,
> -----Original Message-----
> From: Jonas Gorski [mailto:jogo at openwrt.org]
> Sent: 2015年8月18日 0:28
> To: Hou Zhiqiang-B48286
> Cc: MTD Maling List; Brian Norris; David Woodhouse; Hu Mingkai-B21284;
> Rafał Miłecki; mike at steroidmicros.com
> Subject: Re: [PATCH V6] mtd: m25p80: Modify the name of mtd_info
>
> Hi,
>
> On Mon, Aug 17, 2015 at 6:27 AM, Zhiqiang Hou <B48286 at freescale.com>
> wrote:
> > From: Hou Zhiqiang <B48286 at freescale.com>
> >
> > Set the mtd_info's name to a fixed one, so spi flash layouts can be
> > specified by "mtdparts=..." in kernel cmdline, because the
> > cmdlinepart's parser will match the name of mtd_info with the name
> > given in cmdline.
> >
> > So far, if DT is used, the mtd_info's name will be set to the name of
> > spi->dev. It includes spi_master->bus_num, and the bus_num may be
> > dynamically allocated. So, replace the component bus_num with the
> > physical address of spi controller.
>
> You can easily enforce fixed bus numers in linux using aliases in the DT,
> this is supported by the spi core since v3.9 or so.
>
Thanks for the suggestion.
> Also won't this change break it for everyone relying on the old naming in
> their commandline mtdparts?
>
> >
> > Signed-off-by: Hou Zhiqiang <B48286 at freescale.com>
> > ---
> > V6:
> > Removed the sentence return error number when allocating the
> > mtd_info's name failed.
> > V5:
> > Rebase this patch on the latest l2-mtd tree.
> > V4:
> > add check no-NULL for pointer of master's device node, and if
> it failed
> > to get physcial address of the master, then name the mtd_info
> by the
> > name of spi->dev.
> > V3:
> > Fix a bug, matching unsigned long long with "%llx".
> > V2:
> > 1. Fix some code style issue.
> > 2. Cast physical address to unsigned long long.
> >
> > drivers/mtd/devices/m25p80.c | 13 +++++++++++++
> > 1 file changed, 13 insertions(+)
> >
> > diff --git a/drivers/mtd/devices/m25p80.c
> > b/drivers/mtd/devices/m25p80.c index d313f948b..35d11c3 100644
> > --- a/drivers/mtd/devices/m25p80.c
> > +++ b/drivers/mtd/devices/m25p80.c
> > @@ -26,6 +26,7 @@
> > #include <linux/spi/spi.h>
> > #include <linux/spi/flash.h>
> > #include <linux/mtd/spi-nor.h>
> > +#include <linux/of_address.h>
> >
> > #define MAX_CMD_SIZE 6
> > struct m25p {
> > @@ -183,6 +184,8 @@ static int m25p_probe(struct spi_device *spi)
> > struct spi_nor *nor;
> > enum read_mode mode = SPI_NOR_NORMAL;
> > char *flash_name = NULL;
> > + struct resource res;
> > + struct device_node *mnp = spi->master->dev.of_node;
> > int ret;
> >
> > data = dev_get_platdata(&spi->dev); @@ -215,6 +218,16 @@
> > static int m25p_probe(struct spi_device *spi)
> >
> > if (data && data->name)
> > flash->mtd.name = data->name;
> > + else if (mnp) {
>
> Style nitpick: you need do add { } to the first if as well. checkpatch
> should have complained.
>
> > + ret = of_address_to_resource(mnp, 0, &res);
> > + if (!ret)
> > + flash->mtd.name = kasprintf(GFP_KERNEL,
> "spi%llx.%d",
> > + (unsigned long long)res.start,
> > + spi->chip_select);
> > + else
> > + dev_dbg(&spi->dev,
> > + "Failed to get spi master
> > + resource\n");
>
>
> Regards
> Jonas
More information about the linux-mtd
mailing list