From mboxrd@z Thu Jan 1 00:00:00 1970 From: boris.brezillon@free-electrons.com (Boris Brezillon) Date: Fri, 9 Sep 2016 14:35:22 +0200 Subject: [PATCH 4/9] mtd: nand: Add function to convert ONFI mode to data_interface In-Reply-To: <1473422712-12359-5-git-send-email-s.hauer@pengutronix.de> References: <1473422712-12359-1-git-send-email-s.hauer@pengutronix.de> <1473422712-12359-5-git-send-email-s.hauer@pengutronix.de> Message-ID: <20160909143522.6a3b6975@bbrezillon> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Fri, 9 Sep 2016 14:05:07 +0200 Sascha Hauer wrote: > onfi_init_data_interface() initializes a data interface with > values from a given ONFI mode. > > Signed-off-by: Sascha Hauer > --- > drivers/mtd/nand/nand_timings.c | 16 ++++++++++++++++ > include/linux/mtd/nand.h | 2 ++ > 2 files changed, 18 insertions(+) > > diff --git a/drivers/mtd/nand/nand_timings.c b/drivers/mtd/nand/nand_timings.c > index 9af2ebc..ece4ff2 100644 > --- a/drivers/mtd/nand/nand_timings.c > +++ b/drivers/mtd/nand/nand_timings.c > @@ -269,3 +269,19 @@ const struct nand_sdr_timings *onfi_async_timing_mode_to_sdr_timings(int mode) > return &onfi_sdr_timings[mode].timings.sdr; > } > EXPORT_SYMBOL(onfi_async_timing_mode_to_sdr_timings); > + > +/** > + * onfi_init_data_interface - [NAND Interface] Initialize a data interface from > + * given ONFI mode > + * @iface: The data interface to be initialized > + * @mode: The ONFI timing mode > + */ > +int onfi_init_data_interface(struct nand_data_interface *iface, int mode) Can we choose a more future proof prototype (like the one I suggested) for this function. Passing the nand_chip will later allow to extract extended timings (tR, tPROG, tCCS, ...) from the param page, and passing the interface type makes it compatible with DDR mode. > +{ > + if (mode < 0 || mode >= ARRAY_SIZE(onfi_sdr_timings)) > + return -EINVAL; > + > + *iface = onfi_sdr_timings[mode]; > + > + return 0; > +} > diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h > index f305bed..0044fac 100644 > --- a/include/linux/mtd/nand.h > +++ b/include/linux/mtd/nand.h > @@ -1104,6 +1104,8 @@ static inline int onfi_get_sync_timing_mode(struct nand_chip *chip) > return le16_to_cpu(chip->onfi_params.src_sync_timing_mode); > } > > +int onfi_init_data_interface(struct nand_data_interface *iface, int onfi_mode); > + > /* > * Check if it is a SLC nand. > * The !nand_is_slc() can be used to check the MLC/TLC nand chips.