[PATCH 4/9] mtd: nand: Add function to convert ONFI mode to data_interface

Boris Brezillon boris.brezillon at free-electrons.com
Fri Sep 9 05:35:22 PDT 2016


On Fri,  9 Sep 2016 14:05:07 +0200
Sascha Hauer <s.hauer at pengutronix.de> wrote:

> onfi_init_data_interface() initializes a data interface with
> values from a given ONFI mode.
> 
> Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
> ---
>  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.




More information about the linux-arm-kernel mailing list