Message ID | 20220727093748.1415135-3-michael@amarulasolutions.com |
---|---|
State | New |
Headers | show |
Series |
|
Related | show |
Hi Michael, On Wed, Jul 27, 2022 at 11:37 AM Michael Trimarchi <michael@amarulasolutions.com> wrote: > > Upstream linux commit 4722c0e958e636. > > The returned "type" is never used in nand_scan_ident() and spl code > > Make nand_get_flash_type() simply return an integer value in order > to avoid unnecessary ERR_PTR/PTR_ERR dance. > > Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com> > --- > drivers/mtd/nand/raw/mt7621_nand.c | 10 +++++----- > drivers/mtd/nand/raw/mxs_nand_spl.c | 8 ++++---- > drivers/mtd/nand/raw/nand_base.c | 28 +++++++++++++--------------- > include/linux/mtd/rawnand.h | 5 ++--- > 4 files changed, 24 insertions(+), 27 deletions(-) > > diff --git a/drivers/mtd/nand/raw/mt7621_nand.c b/drivers/mtd/nand/raw/mt7621_nand.c > index 9763ae6dc5..a4a0bce35d 100644 > --- a/drivers/mtd/nand/raw/mt7621_nand.c > +++ b/drivers/mtd/nand/raw/mt7621_nand.c > @@ -1184,13 +1184,13 @@ int mt7621_nfc_spl_post_init(struct mt7621_nfc *nfc) > { > struct nand_chip *nand = &nfc->nand; > int nand_maf_id, nand_dev_id; > - struct nand_flash_dev *type; > + int ret; > > - type = nand_get_flash_type(nand, &nand_maf_id, > - &nand_dev_id, NULL); > + ret = nand_get_flash_type(nand, &nand_maf_id, > + &nand_dev_id, NULL); > > - if (IS_ERR(type)) > - return PTR_ERR(type); > + if (ret) > + return ret; > > nand->numchips = 1; > nand->mtd.size = nand->chipsize; > diff --git a/drivers/mtd/nand/raw/mxs_nand_spl.c b/drivers/mtd/nand/raw/mxs_nand_spl.c > index 3daacbb330..773d375fc2 100644 > --- a/drivers/mtd/nand/raw/mxs_nand_spl.c > +++ b/drivers/mtd/nand/raw/mxs_nand_spl.c > @@ -81,13 +81,13 @@ static int mxs_flash_full_ident(struct mtd_info *mtd) > { > int nand_maf_id, nand_dev_id; > struct nand_chip *chip = mtd_to_nand(mtd); > - struct nand_flash_dev *type; > + int ret; > > - type = nand_get_flash_type(mtd, chip, &nand_maf_id, &nand_dev_id, NULL); > + ret = nand_get_flash_type(mtd, chip, &nand_maf_id, &nand_dev_id, NULL); > > - if (IS_ERR(type)) { > + if (ret) { > chip->select_chip(mtd, -1); > - return PTR_ERR(type); > + return ret; > } > > return 0; > diff --git a/drivers/mtd/nand/raw/nand_base.c b/drivers/mtd/nand/raw/nand_base.c > index 9d8ccfda53..b4fa618dc4 100644 > --- a/drivers/mtd/nand/raw/nand_base.c > +++ b/drivers/mtd/nand/raw/nand_base.c > @@ -4276,9 +4276,8 @@ static const struct nand_manufacturer *nand_get_manufacturer_desc(u8 id) > /* > * Get the flash and manufacturer id and lookup if the type is supported. > */ > -struct nand_flash_dev *nand_get_flash_type(struct nand_chip *chip, int *maf_id, > - int *dev_id, > - struct nand_flash_dev *type) > +int nand_get_flash_type(struct nand_chip *chip, int *maf_id, > + int *dev_id, struct nand_flash_dev *type) > { > struct mtd_info *mtd = &chip->mtd; > const struct nand_manufacturer *manufacturer_desc; > @@ -4291,7 +4290,7 @@ struct nand_flash_dev *nand_get_flash_type(struct nand_chip *chip, int *maf_id, > */ > ret = nand_reset(chip, 0); > if (ret) > - return ERR_PTR(ret); > + return ret; > > /* Select the device */ > chip->select_chip(mtd, 0); > @@ -4299,7 +4298,7 @@ struct nand_flash_dev *nand_get_flash_type(struct nand_chip *chip, int *maf_id, > /* Send the command for reading device ID */ > ret = nand_readid_op(chip, 0, id_data, 2); > if (ret) > - return ERR_PTR(ret); > + return ret; > > /* Read manufacturer and device IDs */ > *maf_id = id_data[0]; > @@ -4315,12 +4314,12 @@ struct nand_flash_dev *nand_get_flash_type(struct nand_chip *chip, int *maf_id, > /* Read entire ID string */ > ret = nand_readid_op(chip, 0, id_data, 8); > if (ret) > - return ERR_PTR(ret); > + return ret; > > if (id_data[0] != *maf_id || id_data[1] != *dev_id) { > pr_info("second ID read did not match %02x,%02x against %02x,%02x\n", > *maf_id, *dev_id, id_data[0], id_data[1]); > - return ERR_PTR(-ENODEV); > + return -ENODEV; > } > > chip->id.len = nand_id_len(id_data, ARRAY_SIZE(chip->id.data)); > @@ -4368,7 +4367,7 @@ struct nand_flash_dev *nand_get_flash_type(struct nand_chip *chip, int *maf_id, > } > > if (!type->name) > - return ERR_PTR(-ENODEV); > + return -ENODEV; > > if (!mtd->name) > mtd->name = type->name; > @@ -4401,7 +4400,7 @@ ident_done: > pr_warn("bus width %d instead %d bit\n", > (chip->options & NAND_BUSWIDTH_16) ? 16 : 8, > busw ? 16 : 8); > - return ERR_PTR(-EINVAL); > + return -EINVAL; > } > > nand_decode_bbm_options(mtd, chip); > @@ -4432,7 +4431,7 @@ ident_done: > > ret = nand_manufacturer_init(chip); > if (ret) > - return ERR_PTR(ret); > + return ret; > > pr_info("device found, Manufacturer ID: 0x%02x, Chip ID: 0x%02x\n", > *maf_id, *dev_id); > @@ -4460,7 +4459,7 @@ ident_done: > pr_info("%d MiB, %s, erase size: %d KiB, page size: %d, OOB size: %d\n", > (int)(chip->chipsize >> 20), nand_is_slc(chip) ? "SLC" : "MLC", > mtd->erasesize >> 10, mtd->writesize, mtd->oobsize); > - return type; > + return 0; > } > EXPORT_SYMBOL(nand_get_flash_type); > > @@ -4547,7 +4546,6 @@ int nand_scan_ident(struct mtd_info *mtd, int maxchips, > { > int i, nand_maf_id, nand_dev_id; > struct nand_chip *chip = mtd_to_nand(mtd); > - struct nand_flash_dev *type; > int ret; > > if (ofnode_valid(chip->flash_node)) { > @@ -4560,14 +4558,14 @@ int nand_scan_ident(struct mtd_info *mtd, int maxchips, > nand_set_defaults(chip, chip->options & NAND_BUSWIDTH_16); > > /* Read the flash type */ > - type = nand_get_flash_type(chip, &nand_maf_id, > + ret = nand_get_flash_type(chip, &nand_maf_id, > &nand_dev_id, table); > > - if (IS_ERR(type)) { > + if (ret) { > if (!(chip->options & NAND_SCAN_SILENT_NODEV)) > pr_warn("No NAND device found\n"); > chip->select_chip(mtd, -1); > - return PTR_ERR(type); > + return ret; > } > > /* Initialize the ->data_interface field. */ > diff --git a/include/linux/mtd/rawnand.h b/include/linux/mtd/rawnand.h > index 8dc2d81dba..8178f36b49 100644 > --- a/include/linux/mtd/rawnand.h > +++ b/include/linux/mtd/rawnand.h > @@ -29,9 +29,8 @@ struct nand_flash_dev; > struct device_node; > > /* Get the flash and manufacturer id and lookup if the type is supported. */ > -struct nand_flash_dev *nand_get_flash_type(struct nand_chip *chip, > - int *maf_id, int *dev_id, > - struct nand_flash_dev *type); > +int nand_get_flash_type(struct nand_chip *chip, int *maf_id, int *dev_id, > + struct nand_flash_dev *type); > > /* Scan and identify a NAND device */ > int nand_scan(struct mtd_info *mtd, int max_chips); > -- > 2.34.1 > looks good to me Dario
On Wed, Jul 27, 2022 at 11:37:43AM +0200, Michael Trimarchi wrote: > Upstream linux commit 4722c0e958e636. > > The returned "type" is never used in nand_scan_ident() and spl code > Fix blank space in commit body ^ > Make nand_get_flash_type() simply return an integer value in order > to avoid unnecessary ERR_PTR/PTR_ERR dance. > > Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com> > --- > drivers/mtd/nand/raw/mt7621_nand.c | 10 +++++----- > drivers/mtd/nand/raw/mxs_nand_spl.c | 8 ++++---- > drivers/mtd/nand/raw/nand_base.c | 28 +++++++++++++--------------- > include/linux/mtd/rawnand.h | 5 ++--- > 4 files changed, 24 insertions(+), 27 deletions(-) > > diff --git a/drivers/mtd/nand/raw/mt7621_nand.c b/drivers/mtd/nand/raw/mt7621_nand.c > index 9763ae6dc5..a4a0bce35d 100644 > --- a/drivers/mtd/nand/raw/mt7621_nand.c > +++ b/drivers/mtd/nand/raw/mt7621_nand.c > @@ -1184,13 +1184,13 @@ int mt7621_nfc_spl_post_init(struct mt7621_nfc *nfc) > { > struct nand_chip *nand = &nfc->nand; > int nand_maf_id, nand_dev_id; > - struct nand_flash_dev *type; > + int ret; > > - type = nand_get_flash_type(nand, &nand_maf_id, > - &nand_dev_id, NULL); > + ret = nand_get_flash_type(nand, &nand_maf_id, > + &nand_dev_id, NULL); > > - if (IS_ERR(type)) > - return PTR_ERR(type); > + if (ret) > + return ret; > > nand->numchips = 1; > nand->mtd.size = nand->chipsize; > diff --git a/drivers/mtd/nand/raw/mxs_nand_spl.c b/drivers/mtd/nand/raw/mxs_nand_spl.c > index 3daacbb330..773d375fc2 100644 > --- a/drivers/mtd/nand/raw/mxs_nand_spl.c > +++ b/drivers/mtd/nand/raw/mxs_nand_spl.c > @@ -81,13 +81,13 @@ static int mxs_flash_full_ident(struct mtd_info *mtd) > { > int nand_maf_id, nand_dev_id; > struct nand_chip *chip = mtd_to_nand(mtd); > - struct nand_flash_dev *type; > + int ret; > > - type = nand_get_flash_type(mtd, chip, &nand_maf_id, &nand_dev_id, NULL); > + ret = nand_get_flash_type(mtd, chip, &nand_maf_id, &nand_dev_id, NULL); > > - if (IS_ERR(type)) { > + if (ret) { > chip->select_chip(mtd, -1); > - return PTR_ERR(type); > + return ret; > } > > return 0; > diff --git a/drivers/mtd/nand/raw/nand_base.c b/drivers/mtd/nand/raw/nand_base.c > index 9d8ccfda53..b4fa618dc4 100644 > --- a/drivers/mtd/nand/raw/nand_base.c > +++ b/drivers/mtd/nand/raw/nand_base.c > @@ -4276,9 +4276,8 @@ static const struct nand_manufacturer *nand_get_manufacturer_desc(u8 id) > /* > * Get the flash and manufacturer id and lookup if the type is supported. > */ > -struct nand_flash_dev *nand_get_flash_type(struct nand_chip *chip, int *maf_id, > - int *dev_id, > - struct nand_flash_dev *type) > +int nand_get_flash_type(struct nand_chip *chip, int *maf_id, > + int *dev_id, struct nand_flash_dev *type) > { > struct mtd_info *mtd = &chip->mtd; > const struct nand_manufacturer *manufacturer_desc; > @@ -4291,7 +4290,7 @@ struct nand_flash_dev *nand_get_flash_type(struct nand_chip *chip, int *maf_id, > */ > ret = nand_reset(chip, 0); > if (ret) > - return ERR_PTR(ret); > + return ret; > > /* Select the device */ > chip->select_chip(mtd, 0); > @@ -4299,7 +4298,7 @@ struct nand_flash_dev *nand_get_flash_type(struct nand_chip *chip, int *maf_id, > /* Send the command for reading device ID */ > ret = nand_readid_op(chip, 0, id_data, 2); > if (ret) > - return ERR_PTR(ret); > + return ret; > > /* Read manufacturer and device IDs */ > *maf_id = id_data[0]; > @@ -4315,12 +4314,12 @@ struct nand_flash_dev *nand_get_flash_type(struct nand_chip *chip, int *maf_id, > /* Read entire ID string */ > ret = nand_readid_op(chip, 0, id_data, 8); > if (ret) > - return ERR_PTR(ret); > + return ret; > > if (id_data[0] != *maf_id || id_data[1] != *dev_id) { > pr_info("second ID read did not match %02x,%02x against %02x,%02x\n", > *maf_id, *dev_id, id_data[0], id_data[1]); > - return ERR_PTR(-ENODEV); > + return -ENODEV; > } > > chip->id.len = nand_id_len(id_data, ARRAY_SIZE(chip->id.data)); > @@ -4368,7 +4367,7 @@ struct nand_flash_dev *nand_get_flash_type(struct nand_chip *chip, int *maf_id, > } > > if (!type->name) > - return ERR_PTR(-ENODEV); > + return -ENODEV; > > if (!mtd->name) > mtd->name = type->name; > @@ -4401,7 +4400,7 @@ ident_done: > pr_warn("bus width %d instead %d bit\n", > (chip->options & NAND_BUSWIDTH_16) ? 16 : 8, > busw ? 16 : 8); > - return ERR_PTR(-EINVAL); > + return -EINVAL; > } > > nand_decode_bbm_options(mtd, chip); > @@ -4432,7 +4431,7 @@ ident_done: > > ret = nand_manufacturer_init(chip); > if (ret) > - return ERR_PTR(ret); > + return ret; > > pr_info("device found, Manufacturer ID: 0x%02x, Chip ID: 0x%02x\n", > *maf_id, *dev_id); > @@ -4460,7 +4459,7 @@ ident_done: > pr_info("%d MiB, %s, erase size: %d KiB, page size: %d, OOB size: %d\n", > (int)(chip->chipsize >> 20), nand_is_slc(chip) ? "SLC" : "MLC", > mtd->erasesize >> 10, mtd->writesize, mtd->oobsize); > - return type; > + return 0; > } > EXPORT_SYMBOL(nand_get_flash_type); > > @@ -4547,7 +4546,6 @@ int nand_scan_ident(struct mtd_info *mtd, int maxchips, > { > int i, nand_maf_id, nand_dev_id; > struct nand_chip *chip = mtd_to_nand(mtd); > - struct nand_flash_dev *type; > int ret; > > if (ofnode_valid(chip->flash_node)) { > @@ -4560,14 +4558,14 @@ int nand_scan_ident(struct mtd_info *mtd, int maxchips, > nand_set_defaults(chip, chip->options & NAND_BUSWIDTH_16); > > /* Read the flash type */ > - type = nand_get_flash_type(chip, &nand_maf_id, > + ret = nand_get_flash_type(chip, &nand_maf_id, > &nand_dev_id, table); > > - if (IS_ERR(type)) { > + if (ret) { > if (!(chip->options & NAND_SCAN_SILENT_NODEV)) > pr_warn("No NAND device found\n"); > chip->select_chip(mtd, -1); > - return PTR_ERR(type); > + return ret; > } > > /* Initialize the ->data_interface field. */ > diff --git a/include/linux/mtd/rawnand.h b/include/linux/mtd/rawnand.h > index 8dc2d81dba..8178f36b49 100644 > --- a/include/linux/mtd/rawnand.h > +++ b/include/linux/mtd/rawnand.h > @@ -29,9 +29,8 @@ struct nand_flash_dev; > struct device_node; > > /* Get the flash and manufacturer id and lookup if the type is supported. */ > -struct nand_flash_dev *nand_get_flash_type(struct nand_chip *chip, > - int *maf_id, int *dev_id, > - struct nand_flash_dev *type); > +int nand_get_flash_type(struct nand_chip *chip, int *maf_id, int *dev_id, > + struct nand_flash_dev *type); > > /* Scan and identify a NAND device */ > int nand_scan(struct mtd_info *mtd, int max_chips); > -- > 2.34.1 > Personally I'm not sure on this. I mean, type is never used for now you are right but this function is a good way to get nand_flash_dev * Don't know. Maybe I'm missing something.
Hi Tommaso On Thu, Jul 28, 2022 at 9:52 AM Tommaso Merciai <tommaso.merciai@amarulasolutions.com> wrote: > > On Wed, Jul 27, 2022 at 11:37:43AM +0200, Michael Trimarchi wrote: > > Upstream linux commit 4722c0e958e636. > > > > The returned "type" is never used in nand_scan_ident() and spl code > > > Fix blank space in commit body ^ > > > Make nand_get_flash_type() simply return an integer value in order > > to avoid unnecessary ERR_PTR/PTR_ERR dance. > > > > Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com> > > --- > > drivers/mtd/nand/raw/mt7621_nand.c | 10 +++++----- > > drivers/mtd/nand/raw/mxs_nand_spl.c | 8 ++++---- > > drivers/mtd/nand/raw/nand_base.c | 28 +++++++++++++--------------- > > include/linux/mtd/rawnand.h | 5 ++--- > > 4 files changed, 24 insertions(+), 27 deletions(-) > > > > diff --git a/drivers/mtd/nand/raw/mt7621_nand.c b/drivers/mtd/nand/raw/mt7621_nand.c > > index 9763ae6dc5..a4a0bce35d 100644 > > --- a/drivers/mtd/nand/raw/mt7621_nand.c > > +++ b/drivers/mtd/nand/raw/mt7621_nand.c > > @@ -1184,13 +1184,13 @@ int mt7621_nfc_spl_post_init(struct mt7621_nfc *nfc) > > { > > struct nand_chip *nand = &nfc->nand; > > int nand_maf_id, nand_dev_id; > > - struct nand_flash_dev *type; > > + int ret; > > > > - type = nand_get_flash_type(nand, &nand_maf_id, > > - &nand_dev_id, NULL); > > + ret = nand_get_flash_type(nand, &nand_maf_id, > > + &nand_dev_id, NULL); > > > > - if (IS_ERR(type)) > > - return PTR_ERR(type); > > + if (ret) > > + return ret; > > > > nand->numchips = 1; > > nand->mtd.size = nand->chipsize; > > diff --git a/drivers/mtd/nand/raw/mxs_nand_spl.c b/drivers/mtd/nand/raw/mxs_nand_spl.c > > index 3daacbb330..773d375fc2 100644 > > --- a/drivers/mtd/nand/raw/mxs_nand_spl.c > > +++ b/drivers/mtd/nand/raw/mxs_nand_spl.c > > @@ -81,13 +81,13 @@ static int mxs_flash_full_ident(struct mtd_info *mtd) > > { > > int nand_maf_id, nand_dev_id; > > struct nand_chip *chip = mtd_to_nand(mtd); > > - struct nand_flash_dev *type; > > + int ret; > > > > - type = nand_get_flash_type(mtd, chip, &nand_maf_id, &nand_dev_id, NULL); > > + ret = nand_get_flash_type(mtd, chip, &nand_maf_id, &nand_dev_id, NULL); > > > > - if (IS_ERR(type)) { > > + if (ret) { > > chip->select_chip(mtd, -1); > > - return PTR_ERR(type); > > + return ret; > > } > > > > return 0; > > diff --git a/drivers/mtd/nand/raw/nand_base.c b/drivers/mtd/nand/raw/nand_base.c > > index 9d8ccfda53..b4fa618dc4 100644 > > --- a/drivers/mtd/nand/raw/nand_base.c > > +++ b/drivers/mtd/nand/raw/nand_base.c > > @@ -4276,9 +4276,8 @@ static const struct nand_manufacturer *nand_get_manufacturer_desc(u8 id) > > /* > > * Get the flash and manufacturer id and lookup if the type is supported. > > */ > > -struct nand_flash_dev *nand_get_flash_type(struct nand_chip *chip, int *maf_id, > > - int *dev_id, > > - struct nand_flash_dev *type) > > +int nand_get_flash_type(struct nand_chip *chip, int *maf_id, > > + int *dev_id, struct nand_flash_dev *type) > > { > > struct mtd_info *mtd = &chip->mtd; > > const struct nand_manufacturer *manufacturer_desc; > > @@ -4291,7 +4290,7 @@ struct nand_flash_dev *nand_get_flash_type(struct nand_chip *chip, int *maf_id, > > */ > > ret = nand_reset(chip, 0); > > if (ret) > > - return ERR_PTR(ret); > > + return ret; > > > > /* Select the device */ > > chip->select_chip(mtd, 0); > > @@ -4299,7 +4298,7 @@ struct nand_flash_dev *nand_get_flash_type(struct nand_chip *chip, int *maf_id, > > /* Send the command for reading device ID */ > > ret = nand_readid_op(chip, 0, id_data, 2); > > if (ret) > > - return ERR_PTR(ret); > > + return ret; > > > > /* Read manufacturer and device IDs */ > > *maf_id = id_data[0]; > > @@ -4315,12 +4314,12 @@ struct nand_flash_dev *nand_get_flash_type(struct nand_chip *chip, int *maf_id, > > /* Read entire ID string */ > > ret = nand_readid_op(chip, 0, id_data, 8); > > if (ret) > > - return ERR_PTR(ret); > > + return ret; > > > > if (id_data[0] != *maf_id || id_data[1] != *dev_id) { > > pr_info("second ID read did not match %02x,%02x against %02x,%02x\n", > > *maf_id, *dev_id, id_data[0], id_data[1]); > > - return ERR_PTR(-ENODEV); > > + return -ENODEV; > > } > > > > chip->id.len = nand_id_len(id_data, ARRAY_SIZE(chip->id.data)); > > @@ -4368,7 +4367,7 @@ struct nand_flash_dev *nand_get_flash_type(struct nand_chip *chip, int *maf_id, > > } > > > > if (!type->name) > > - return ERR_PTR(-ENODEV); > > + return -ENODEV; > > > > if (!mtd->name) > > mtd->name = type->name; > > @@ -4401,7 +4400,7 @@ ident_done: > > pr_warn("bus width %d instead %d bit\n", > > (chip->options & NAND_BUSWIDTH_16) ? 16 : 8, > > busw ? 16 : 8); > > - return ERR_PTR(-EINVAL); > > + return -EINVAL; > > } > > > > nand_decode_bbm_options(mtd, chip); > > @@ -4432,7 +4431,7 @@ ident_done: > > > > ret = nand_manufacturer_init(chip); > > if (ret) > > - return ERR_PTR(ret); > > + return ret; > > > > pr_info("device found, Manufacturer ID: 0x%02x, Chip ID: 0x%02x\n", > > *maf_id, *dev_id); > > @@ -4460,7 +4459,7 @@ ident_done: > > pr_info("%d MiB, %s, erase size: %d KiB, page size: %d, OOB size: %d\n", > > (int)(chip->chipsize >> 20), nand_is_slc(chip) ? "SLC" : "MLC", > > mtd->erasesize >> 10, mtd->writesize, mtd->oobsize); > > - return type; > > + return 0; > > } > > EXPORT_SYMBOL(nand_get_flash_type); > > > > @@ -4547,7 +4546,6 @@ int nand_scan_ident(struct mtd_info *mtd, int maxchips, > > { > > int i, nand_maf_id, nand_dev_id; > > struct nand_chip *chip = mtd_to_nand(mtd); > > - struct nand_flash_dev *type; > > int ret; > > > > if (ofnode_valid(chip->flash_node)) { > > @@ -4560,14 +4558,14 @@ int nand_scan_ident(struct mtd_info *mtd, int maxchips, > > nand_set_defaults(chip, chip->options & NAND_BUSWIDTH_16); > > > > /* Read the flash type */ > > - type = nand_get_flash_type(chip, &nand_maf_id, > > + ret = nand_get_flash_type(chip, &nand_maf_id, > > &nand_dev_id, table); > > > > - if (IS_ERR(type)) { > > + if (ret) { > > if (!(chip->options & NAND_SCAN_SILENT_NODEV)) > > pr_warn("No NAND device found\n"); > > chip->select_chip(mtd, -1); > > - return PTR_ERR(type); > > + return ret; > > } > > > > /* Initialize the ->data_interface field. */ > > diff --git a/include/linux/mtd/rawnand.h b/include/linux/mtd/rawnand.h > > index 8dc2d81dba..8178f36b49 100644 > > --- a/include/linux/mtd/rawnand.h > > +++ b/include/linux/mtd/rawnand.h > > @@ -29,9 +29,8 @@ struct nand_flash_dev; > > struct device_node; > > > > /* Get the flash and manufacturer id and lookup if the type is supported. */ > > -struct nand_flash_dev *nand_get_flash_type(struct nand_chip *chip, > > - int *maf_id, int *dev_id, > > - struct nand_flash_dev *type); > > +int nand_get_flash_type(struct nand_chip *chip, int *maf_id, int *dev_id, > > + struct nand_flash_dev *type); > > > > /* Scan and identify a NAND device */ > > int nand_scan(struct mtd_info *mtd, int max_chips); > > -- > > 2.34.1 > > > > Personally I'm not sure on this. I mean, type is never used for now > you are right but this function is a good way to get nand_flash_dev * > Don't know. Maybe I'm missing something. > Here the entire goal is to minimize the change with linux part. Uboot is just a plain copy of an old mtd linux stack. I'm trying to make it quite similar to keep it in sync as much as I can Michael > -- > Tommaso Merciai > Embedded Linux Engineer > tommaso.merciai@amarulasolutions.com > __________________________________ > > Amarula Solutions SRL > Via Le Canevare 30, 31100 Treviso, Veneto, IT > T. +39 042 243 5310 > info@amarulasolutions.com > www.amarulasolutions.com
diff --git a/drivers/mtd/nand/raw/mt7621_nand.c b/drivers/mtd/nand/raw/mt7621_nand.c index 9763ae6dc5..a4a0bce35d 100644 --- a/drivers/mtd/nand/raw/mt7621_nand.c +++ b/drivers/mtd/nand/raw/mt7621_nand.c @@ -1184,13 +1184,13 @@ int mt7621_nfc_spl_post_init(struct mt7621_nfc *nfc) { struct nand_chip *nand = &nfc->nand; int nand_maf_id, nand_dev_id; - struct nand_flash_dev *type; + int ret; - type = nand_get_flash_type(nand, &nand_maf_id, - &nand_dev_id, NULL); + ret = nand_get_flash_type(nand, &nand_maf_id, + &nand_dev_id, NULL); - if (IS_ERR(type)) - return PTR_ERR(type); + if (ret) + return ret; nand->numchips = 1; nand->mtd.size = nand->chipsize; diff --git a/drivers/mtd/nand/raw/mxs_nand_spl.c b/drivers/mtd/nand/raw/mxs_nand_spl.c index 3daacbb330..773d375fc2 100644 --- a/drivers/mtd/nand/raw/mxs_nand_spl.c +++ b/drivers/mtd/nand/raw/mxs_nand_spl.c @@ -81,13 +81,13 @@ static int mxs_flash_full_ident(struct mtd_info *mtd) { int nand_maf_id, nand_dev_id; struct nand_chip *chip = mtd_to_nand(mtd); - struct nand_flash_dev *type; + int ret; - type = nand_get_flash_type(mtd, chip, &nand_maf_id, &nand_dev_id, NULL); + ret = nand_get_flash_type(mtd, chip, &nand_maf_id, &nand_dev_id, NULL); - if (IS_ERR(type)) { + if (ret) { chip->select_chip(mtd, -1); - return PTR_ERR(type); + return ret; } return 0; diff --git a/drivers/mtd/nand/raw/nand_base.c b/drivers/mtd/nand/raw/nand_base.c index 9d8ccfda53..b4fa618dc4 100644 --- a/drivers/mtd/nand/raw/nand_base.c +++ b/drivers/mtd/nand/raw/nand_base.c @@ -4276,9 +4276,8 @@ static const struct nand_manufacturer *nand_get_manufacturer_desc(u8 id) /* * Get the flash and manufacturer id and lookup if the type is supported. */ -struct nand_flash_dev *nand_get_flash_type(struct nand_chip *chip, int *maf_id, - int *dev_id, - struct nand_flash_dev *type) +int nand_get_flash_type(struct nand_chip *chip, int *maf_id, + int *dev_id, struct nand_flash_dev *type) { struct mtd_info *mtd = &chip->mtd; const struct nand_manufacturer *manufacturer_desc; @@ -4291,7 +4290,7 @@ struct nand_flash_dev *nand_get_flash_type(struct nand_chip *chip, int *maf_id, */ ret = nand_reset(chip, 0); if (ret) - return ERR_PTR(ret); + return ret; /* Select the device */ chip->select_chip(mtd, 0); @@ -4299,7 +4298,7 @@ struct nand_flash_dev *nand_get_flash_type(struct nand_chip *chip, int *maf_id, /* Send the command for reading device ID */ ret = nand_readid_op(chip, 0, id_data, 2); if (ret) - return ERR_PTR(ret); + return ret; /* Read manufacturer and device IDs */ *maf_id = id_data[0]; @@ -4315,12 +4314,12 @@ struct nand_flash_dev *nand_get_flash_type(struct nand_chip *chip, int *maf_id, /* Read entire ID string */ ret = nand_readid_op(chip, 0, id_data, 8); if (ret) - return ERR_PTR(ret); + return ret; if (id_data[0] != *maf_id || id_data[1] != *dev_id) { pr_info("second ID read did not match %02x,%02x against %02x,%02x\n", *maf_id, *dev_id, id_data[0], id_data[1]); - return ERR_PTR(-ENODEV); + return -ENODEV; } chip->id.len = nand_id_len(id_data, ARRAY_SIZE(chip->id.data)); @@ -4368,7 +4367,7 @@ struct nand_flash_dev *nand_get_flash_type(struct nand_chip *chip, int *maf_id, } if (!type->name) - return ERR_PTR(-ENODEV); + return -ENODEV; if (!mtd->name) mtd->name = type->name; @@ -4401,7 +4400,7 @@ ident_done: pr_warn("bus width %d instead %d bit\n", (chip->options & NAND_BUSWIDTH_16) ? 16 : 8, busw ? 16 : 8); - return ERR_PTR(-EINVAL); + return -EINVAL; } nand_decode_bbm_options(mtd, chip); @@ -4432,7 +4431,7 @@ ident_done: ret = nand_manufacturer_init(chip); if (ret) - return ERR_PTR(ret); + return ret; pr_info("device found, Manufacturer ID: 0x%02x, Chip ID: 0x%02x\n", *maf_id, *dev_id); @@ -4460,7 +4459,7 @@ ident_done: pr_info("%d MiB, %s, erase size: %d KiB, page size: %d, OOB size: %d\n", (int)(chip->chipsize >> 20), nand_is_slc(chip) ? "SLC" : "MLC", mtd->erasesize >> 10, mtd->writesize, mtd->oobsize); - return type; + return 0; } EXPORT_SYMBOL(nand_get_flash_type); @@ -4547,7 +4546,6 @@ int nand_scan_ident(struct mtd_info *mtd, int maxchips, { int i, nand_maf_id, nand_dev_id; struct nand_chip *chip = mtd_to_nand(mtd); - struct nand_flash_dev *type; int ret; if (ofnode_valid(chip->flash_node)) { @@ -4560,14 +4558,14 @@ int nand_scan_ident(struct mtd_info *mtd, int maxchips, nand_set_defaults(chip, chip->options & NAND_BUSWIDTH_16); /* Read the flash type */ - type = nand_get_flash_type(chip, &nand_maf_id, + ret = nand_get_flash_type(chip, &nand_maf_id, &nand_dev_id, table); - if (IS_ERR(type)) { + if (ret) { if (!(chip->options & NAND_SCAN_SILENT_NODEV)) pr_warn("No NAND device found\n"); chip->select_chip(mtd, -1); - return PTR_ERR(type); + return ret; } /* Initialize the ->data_interface field. */ diff --git a/include/linux/mtd/rawnand.h b/include/linux/mtd/rawnand.h index 8dc2d81dba..8178f36b49 100644 --- a/include/linux/mtd/rawnand.h +++ b/include/linux/mtd/rawnand.h @@ -29,9 +29,8 @@ struct nand_flash_dev; struct device_node; /* Get the flash and manufacturer id and lookup if the type is supported. */ -struct nand_flash_dev *nand_get_flash_type(struct nand_chip *chip, - int *maf_id, int *dev_id, - struct nand_flash_dev *type); +int nand_get_flash_type(struct nand_chip *chip, int *maf_id, int *dev_id, + struct nand_flash_dev *type); /* Scan and identify a NAND device */ int nand_scan(struct mtd_info *mtd, int max_chips);
Upstream linux commit 4722c0e958e636. The returned "type" is never used in nand_scan_ident() and spl code Make nand_get_flash_type() simply return an integer value in order to avoid unnecessary ERR_PTR/PTR_ERR dance. Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com> --- drivers/mtd/nand/raw/mt7621_nand.c | 10 +++++----- drivers/mtd/nand/raw/mxs_nand_spl.c | 8 ++++---- drivers/mtd/nand/raw/nand_base.c | 28 +++++++++++++--------------- include/linux/mtd/rawnand.h | 5 ++--- 4 files changed, 24 insertions(+), 27 deletions(-)