On Wed, 31 Jul 2019 09:18:49 +0000 <Tudor.Ambarus@xxxxxxxxxxxxx> wrote: > From: Tudor Ambarus <tudor.ambarus@xxxxxxxxxxxxx> > > Dedicate a function for getting the pointer to the flash_info > const struct. Trim a bit the spi_nor_scan() huge function. > > Signed-off-by: Tudor Ambarus <tudor.ambarus@xxxxxxxxxxxxx> Reviewed-by: Boris Brezillon <boris.brezillon@xxxxxxxxxxxxx> > --- > drivers/mtd/spi-nor/spi-nor.c | 52 ++++++++++++++++++++++++++----------------- > 1 file changed, 32 insertions(+), 20 deletions(-) > > diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c > index c322d7cd8216..636f065cc869 100644 > --- a/drivers/mtd/spi-nor/spi-nor.c > +++ b/drivers/mtd/spi-nor/spi-nor.c > @@ -4800,25 +4800,10 @@ static int spi_nor_set_addr_width(struct spi_nor *nor) > return 0; > } > > -int spi_nor_scan(struct spi_nor *nor, const char *name, > - const struct spi_nor_hwcaps *hwcaps) > +static const struct flash_info *spi_nor_get_flash_info(struct spi_nor *nor, > + const char *name) > { > - struct spi_nor_flash_parameter params; > const struct flash_info *info = NULL; > - struct device *dev = nor->dev; > - struct mtd_info *mtd = &nor->mtd; > - struct device_node *np = spi_nor_get_flash_node(nor); > - int ret; > - int i; > - > - ret = spi_nor_check(nor); > - if (ret) > - return ret; > - > - /* Reset SPI protocol for all commands. */ > - nor->reg_proto = SNOR_PROTO_1_1_1; > - nor->read_proto = SNOR_PROTO_1_1_1; > - nor->write_proto = SNOR_PROTO_1_1_1; > > if (name) > info = spi_nor_match_id(name); > @@ -4826,7 +4811,7 @@ int spi_nor_scan(struct spi_nor *nor, const char *name, > if (!info) > info = spi_nor_read_id(nor); > if (IS_ERR_OR_NULL(info)) > - return -ENOENT; > + return ERR_PTR(-ENOENT); > > /* > * If caller has specified name of flash model that can normally be > @@ -4837,7 +4822,7 @@ int spi_nor_scan(struct spi_nor *nor, const char *name, > > jinfo = spi_nor_read_id(nor); > if (IS_ERR(jinfo)) { > - return PTR_ERR(jinfo); > + return jinfo; > } else if (jinfo != info) { > /* > * JEDEC knows better, so overwrite platform ID. We > @@ -4846,12 +4831,39 @@ int spi_nor_scan(struct spi_nor *nor, const char *name, > * marked read-only, and we don't want to lose that > * information, even if it's not 100% accurate. > */ > - dev_warn(dev, "found %s, expected %s\n", > + dev_warn(nor->dev, "found %s, expected %s\n", > jinfo->name, info->name); > info = jinfo; > } > } > > + return info; > +} > + > +int spi_nor_scan(struct spi_nor *nor, const char *name, > + const struct spi_nor_hwcaps *hwcaps) > +{ > + struct spi_nor_flash_parameter params; > + const struct flash_info *info; > + struct device *dev = nor->dev; > + struct mtd_info *mtd = &nor->mtd; > + struct device_node *np = spi_nor_get_flash_node(nor); > + int ret; > + int i; > + > + ret = spi_nor_check(nor); > + if (ret) > + return ret; > + > + /* Reset SPI protocol for all commands. */ > + nor->reg_proto = SNOR_PROTO_1_1_1; > + nor->read_proto = SNOR_PROTO_1_1_1; > + nor->write_proto = SNOR_PROTO_1_1_1; > + > + info = spi_nor_get_flash_info(nor, name); > + if (IS_ERR(info)) > + return PTR_ERR(info); > + > nor->info = info; > > mutex_init(&nor->lock); ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/