[PATCH RESEND v6 1/2] mtd: fsl-quadspi: Distinguish the mtd device names

Fabio Estevam festevam at gmail.com
Thu Mar 15 06:02:16 PDT 2018


Hi Cyrille,

Any chance to get this one applied to 4.17?

On Tue, Feb 13, 2018 at 11:47 PM, Fabio Estevam <festevam at gmail.com> wrote:
> Hi Cyrille,
>
> On Fri, Jan 26, 2018 at 7:23 PM, Fabio Estevam <festevam at gmail.com> wrote:
>> From: Fabio Estevam <fabio.estevam at nxp.com>
>>
>> Currently on a imx6sx-sdb board, which has two SPI NOR chips connected
>> to QSPI2 the following output from /proc/mtd is seen:
>>
>> # cat /proc/mtd
>> dev:    size   erasesize  name
>> mtd0: 01000000 00010000 "21e4000.qspi"
>> mtd1: 01000000 00010000 "21e4000.qspi"
>>
>> Attempts to partition them on the kernel command line result in both
>> chips with identical (and identically named) partitions, which is
>> an inconvenient behavior.
>>
>> Assign a different mtd->name for each mtd device to avoid this problem.
>>
>> After this change the output from /proc/mtd becomes:
>>
>> # cat /proc/mtd
>> dev:    size   erasesize  name
>> mtd0: 01000000 00010000 "21e4000.qspi-0"
>> mtd1: 01000000 00010000 "21e4000.qspi-1"
>>
>> In order to keep mtdparts compatibility keep the mtd->name
>> unchanged when a single SPI NOR is present.
>>
>> Reported-by: David Wolfe <david.wolfe at nxp.com>
>> Signed-off-by: Fabio Estevam <fabio.estevam at nxp.com>
>> Reviewed-by: Boris Brezillon <boris.brezillon at free-electrons.com>
>> Acked-by: Han Xu <han.xu at nxp.com>
>> ---
>> Resending it as I missed to send it to Cyrille
>
>  A gentle ping on this series.
>
>>
>> Changes since v5:
>> - Preserve the label value, if any. (Boris)
>>
>>  drivers/mtd/spi-nor/fsl-quadspi.c | 18 ++++++++++++++++++
>>  1 file changed, 18 insertions(+)
>>
>> diff --git a/drivers/mtd/spi-nor/fsl-quadspi.c b/drivers/mtd/spi-nor/fsl-quadspi.c
>> index 2901c7b..1038842 100644
>> --- a/drivers/mtd/spi-nor/fsl-quadspi.c
>> +++ b/drivers/mtd/spi-nor/fsl-quadspi.c
>> @@ -1051,6 +1051,24 @@ static int fsl_qspi_probe(struct platform_device *pdev)
>>                 spi_nor_set_flash_node(nor, np);
>>                 nor->priv = q;
>>
>> +               if (q->nor_num > 1 && !mtd->name) {
>> +                       int spiflash_idx;
>> +
>> +                       ret = of_property_read_u32(np, "reg", &spiflash_idx);
>> +                       if (!ret) {
>> +                               mtd->name = devm_kasprintf(dev, GFP_KERNEL,
>> +                                                          "%s-%d",
>> +                                                          dev_name(dev),
>> +                                                          spiflash_idx);
>> +                               if (!mtd->name) {
>> +                                       ret = -ENOMEM;
>> +                                       goto mutex_failed;
>> +                               }
>> +                       } else {
>> +                               dev_warn(dev, "reg property is missing\n");
>> +                       }
>> +               }
>> +
>>                 /* fill the hooks */
>>                 nor->read_reg = fsl_qspi_read_reg;
>>                 nor->write_reg = fsl_qspi_write_reg;
>> --
>> 2.7.4
>>



More information about the linux-mtd mailing list