Message ID | 20200529111322.7184-21-miquel.raynal@bootlin.com |
---|---|
State | Accepted |
Headers | show |
Series | Allow vendor drivers to propose their own timings | expand |
On Fri, 29 May 2020 13:13:14 +0200 Miquel Raynal <miquel.raynal@bootlin.com> wrote: > Warn the user if the parameters are wrong but basically it would mean > there is a serious issue in the NAND core. So no need to ever check > its output, let's make this helper return void. > > Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> > --- > drivers/mtd/nand/raw/internals.h | 8 ++++---- > drivers/mtd/nand/raw/nand_base.c | 6 ++---- > drivers/mtd/nand/raw/nand_timings.c | 18 ++++++++---------- > 3 files changed, 14 insertions(+), 18 deletions(-) > > diff --git a/drivers/mtd/nand/raw/internals.h b/drivers/mtd/nand/raw/internals.h > index 114c63a6a349..63c5af436901 100644 > --- a/drivers/mtd/nand/raw/internals.h > +++ b/drivers/mtd/nand/raw/internals.h > @@ -84,10 +84,10 @@ int nand_bbm_get_next_page(struct nand_chip *chip, int page); > int nand_markbad_bbm(struct nand_chip *chip, loff_t ofs); > int nand_erase_nand(struct nand_chip *chip, struct erase_info *instr, > int allowbbt); > -int onfi_fill_interface_config(struct nand_chip *chip, > - struct nand_interface_config *iface, > - enum nand_interface_type type, > - unsigned int timing_mode); > +void onfi_fill_interface_config(struct nand_chip *chip, > + struct nand_interface_config *iface, > + enum nand_interface_type type, > + unsigned int timing_mode); > unsigned int > onfi_find_closest_sdr_mode(const struct nand_sdr_timings *spec_timings); > int nand_get_features(struct nand_chip *chip, int addr, u8 *subfeature_param); > diff --git a/drivers/mtd/nand/raw/nand_base.c b/drivers/mtd/nand/raw/nand_base.c > index 4fa18fb68d62..3bfd71d589cf 100644 > --- a/drivers/mtd/nand/raw/nand_base.c > +++ b/drivers/mtd/nand/raw/nand_base.c > @@ -1041,10 +1041,8 @@ static int nand_choose_interface_config(struct nand_chip *chip) > } > > for (mode = fls(modes) - 1; mode >= 0; mode--) { > - ret = onfi_fill_interface_config(chip, &chip->interface_config, > - NAND_SDR_IFACE, mode); > - if (ret) > - continue; > + onfi_fill_interface_config(chip, &chip->interface_config, > + NAND_SDR_IFACE, mode); > > /* > * Pass NAND_DATA_IFACE_CHECK_ONLY to only check if the > diff --git a/drivers/mtd/nand/raw/nand_timings.c b/drivers/mtd/nand/raw/nand_timings.c > index bf05b4bceaa0..1e22006c79ba 100644 > --- a/drivers/mtd/nand/raw/nand_timings.c > +++ b/drivers/mtd/nand/raw/nand_timings.c > @@ -347,18 +347,18 @@ onfi_find_closest_sdr_mode(const struct nand_sdr_timings *spec_timings) > * @type: The interface type > * @timing_mode: The ONFI timing mode > */ > -int onfi_fill_interface_config(struct nand_chip *chip, > - struct nand_interface_config *iface, > - enum nand_interface_type type, > - unsigned int timing_mode) > +void onfi_fill_interface_config(struct nand_chip *chip, > + struct nand_interface_config *iface, > + enum nand_interface_type type, > + unsigned int timing_mode) > { > struct onfi_params *onfi = chip->parameters.onfi; > > - if (type != NAND_SDR_IFACE) > - return -EINVAL; > + if (WARN_ON(type != NAND_SDR_IFACE)) > + return; > > - if (timing_mode >= ARRAY_SIZE(onfi_sdr_timings)) > - return -EINVAL; > + if (WARN_ON(timing_mode >= ARRAY_SIZE(onfi_sdr_timings))) > + return; > > *iface = onfi_sdr_timings[timing_mode]; > > @@ -378,6 +378,4 @@ int onfi_fill_interface_config(struct nand_chip *chip, > /* nanoseconds -> picoseconds */ > timings->tCCS_min = 1000UL * onfi->tCCS; > } > - > - return 0; > }
On Fri, 2020-05-29 at 11:13:14 UTC, Miquel Raynal wrote: > Warn the user if the parameters are wrong but basically it would mean > there is a serious issue in the NAND core. So no need to ever check > its output, let's make this helper return void. > > Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> > Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> Applied to https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git nand/next. Miquel
diff --git a/drivers/mtd/nand/raw/internals.h b/drivers/mtd/nand/raw/internals.h index 114c63a6a349..63c5af436901 100644 --- a/drivers/mtd/nand/raw/internals.h +++ b/drivers/mtd/nand/raw/internals.h @@ -84,10 +84,10 @@ int nand_bbm_get_next_page(struct nand_chip *chip, int page); int nand_markbad_bbm(struct nand_chip *chip, loff_t ofs); int nand_erase_nand(struct nand_chip *chip, struct erase_info *instr, int allowbbt); -int onfi_fill_interface_config(struct nand_chip *chip, - struct nand_interface_config *iface, - enum nand_interface_type type, - unsigned int timing_mode); +void onfi_fill_interface_config(struct nand_chip *chip, + struct nand_interface_config *iface, + enum nand_interface_type type, + unsigned int timing_mode); unsigned int onfi_find_closest_sdr_mode(const struct nand_sdr_timings *spec_timings); int nand_get_features(struct nand_chip *chip, int addr, u8 *subfeature_param); diff --git a/drivers/mtd/nand/raw/nand_base.c b/drivers/mtd/nand/raw/nand_base.c index 4fa18fb68d62..3bfd71d589cf 100644 --- a/drivers/mtd/nand/raw/nand_base.c +++ b/drivers/mtd/nand/raw/nand_base.c @@ -1041,10 +1041,8 @@ static int nand_choose_interface_config(struct nand_chip *chip) } for (mode = fls(modes) - 1; mode >= 0; mode--) { - ret = onfi_fill_interface_config(chip, &chip->interface_config, - NAND_SDR_IFACE, mode); - if (ret) - continue; + onfi_fill_interface_config(chip, &chip->interface_config, + NAND_SDR_IFACE, mode); /* * Pass NAND_DATA_IFACE_CHECK_ONLY to only check if the diff --git a/drivers/mtd/nand/raw/nand_timings.c b/drivers/mtd/nand/raw/nand_timings.c index bf05b4bceaa0..1e22006c79ba 100644 --- a/drivers/mtd/nand/raw/nand_timings.c +++ b/drivers/mtd/nand/raw/nand_timings.c @@ -347,18 +347,18 @@ onfi_find_closest_sdr_mode(const struct nand_sdr_timings *spec_timings) * @type: The interface type * @timing_mode: The ONFI timing mode */ -int onfi_fill_interface_config(struct nand_chip *chip, - struct nand_interface_config *iface, - enum nand_interface_type type, - unsigned int timing_mode) +void onfi_fill_interface_config(struct nand_chip *chip, + struct nand_interface_config *iface, + enum nand_interface_type type, + unsigned int timing_mode) { struct onfi_params *onfi = chip->parameters.onfi; - if (type != NAND_SDR_IFACE) - return -EINVAL; + if (WARN_ON(type != NAND_SDR_IFACE)) + return; - if (timing_mode >= ARRAY_SIZE(onfi_sdr_timings)) - return -EINVAL; + if (WARN_ON(timing_mode >= ARRAY_SIZE(onfi_sdr_timings))) + return; *iface = onfi_sdr_timings[timing_mode]; @@ -378,6 +378,4 @@ int onfi_fill_interface_config(struct nand_chip *chip, /* nanoseconds -> picoseconds */ timings->tCCS_min = 1000UL * onfi->tCCS; } - - return 0; }
Warn the user if the parameters are wrong but basically it would mean there is a serious issue in the NAND core. So no need to ever check its output, let's make this helper return void. Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> --- drivers/mtd/nand/raw/internals.h | 8 ++++---- drivers/mtd/nand/raw/nand_base.c | 6 ++---- drivers/mtd/nand/raw/nand_timings.c | 18 ++++++++---------- 3 files changed, 14 insertions(+), 18 deletions(-)