All of lore.kernel.org
 help / color / mirror / Atom feed
From: Boris Brezillon <boris.brezillon@free-electrons.com>
To: Sascha Hauer <s.hauer@pengutronix.de>
Cc: linux-mtd@lists.infradead.org, kernel@pengutronix.de,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 2/7] mtd: nand: Introduce nand_data_interface
Date: Tue, 6 Sep 2016 13:21:18 +0200	[thread overview]
Message-ID: <20160906132118.17e2e8f8@bbrezillon> (raw)
In-Reply-To: <1473158355-22451-3-git-send-email-s.hauer@pengutronix.de>

On Tue,  6 Sep 2016 12:39:10 +0200
Sascha Hauer <s.hauer@pengutronix.de> wrote:

> Currently we have no data structure to fully describe a NAND timing.
> We only have struct nand_sdr_timings for NAND timings in SDR mode,
> but nothing for DDR mode and also no container to store both types
> of timing.
> This patch adds struct nand_data_interface which stores the timing
> type and a union of different timings. This can be used to pass to
> drivers in order to configure the timing.
> 
> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
> ---
>  include/linux/mtd/nand.h | 109 ++++++++++++++++++++++++++---------------------
>  1 file changed, 60 insertions(+), 49 deletions(-)
> 
> diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h
> index 9af9575..19c73ef 100644
> --- a/include/linux/mtd/nand.h
> +++ b/include/linux/mtd/nand.h
> @@ -568,6 +568,66 @@ struct nand_buffers {
>  	uint8_t *databuf;
>  };
>  
> +/*
> + * struct nand_sdr_timings - SDR NAND chip timings
> + *
> + * This struct defines the timing requirements of a SDR NAND chip.
> + * These information can be found in every NAND datasheets and the timings
> + * meaning are described in the ONFI specifications:
> + * www.onfi.org/~/media/ONFI/specs/onfi_3_1_spec.pdf (chapter 4.15 Timing
> + * Parameters)
> + *
> + * All these timings are expressed in picoseconds.
> + */
> +
> +struct nand_sdr_timings {
> +	u32 tALH_min;
> +	u32 tADL_min;
> +	u32 tALS_min;
> +	u32 tAR_min;
> +	u32 tCEA_max;
> +	u32 tCEH_min;
> +	u32 tCH_min;
> +	u32 tCHZ_max;
> +	u32 tCLH_min;
> +	u32 tCLR_min;
> +	u32 tCLS_min;
> +	u32 tCOH_min;
> +	u32 tCS_min;
> +	u32 tDH_min;
> +	u32 tDS_min;
> +	u32 tFEAT_max;
> +	u32 tIR_min;
> +	u32 tITC_max;
> +	u32 tRC_min;
> +	u32 tREA_max;
> +	u32 tREH_min;
> +	u32 tRHOH_min;
> +	u32 tRHW_min;
> +	u32 tRHZ_max;
> +	u32 tRLOH_min;
> +	u32 tRP_min;
> +	u32 tRR_min;
> +	u64 tRST_max;
> +	u32 tWB_max;
> +	u32 tWC_min;
> +	u32 tWH_min;
> +	u32 tWHR_min;
> +	u32 tWP_min;
> +	u32 tWW_min;
> +};
> +
> +enum nand_data_interface_type {
> +	NAND_SDR_IFACE,
> +};
> +

I know this is my code, and I'm the one to blame here, but can you
document the nand_data_interface fields (kerneldoc format)?

> +struct nand_data_interface {
> +	enum nand_data_interface_type type;
> +	union {
> +		struct nand_sdr_timings sdr;
> +	} timings;
> +};
> +
>  /**
>   * struct nand_chip - NAND Private Flash Chip Data
>   * @mtd:		MTD device registered to the MTD framework
> @@ -1026,55 +1086,6 @@ static inline int jedec_feature(struct nand_chip *chip)
>  		: 0;
>  }
>  
> -/*
> - * struct nand_sdr_timings - SDR NAND chip timings
> - *
> - * This struct defines the timing requirements of a SDR NAND chip.
> - * These informations can be found in every NAND datasheets and the timings
> - * meaning are described in the ONFI specifications:
> - * www.onfi.org/~/media/ONFI/specs/onfi_3_1_spec.pdf (chapter 4.15 Timing
> - * Parameters)
> - *
> - * All these timings are expressed in picoseconds.
> - */
> -
> -struct nand_sdr_timings {
> -	u32 tALH_min;
> -	u32 tADL_min;
> -	u32 tALS_min;
> -	u32 tAR_min;
> -	u32 tCEA_max;
> -	u32 tCEH_min;
> -	u32 tCH_min;
> -	u32 tCHZ_max;
> -	u32 tCLH_min;
> -	u32 tCLR_min;
> -	u32 tCLS_min;
> -	u32 tCOH_min;
> -	u32 tCS_min;
> -	u32 tDH_min;
> -	u32 tDS_min;
> -	u32 tFEAT_max;
> -	u32 tIR_min;
> -	u32 tITC_max;
> -	u32 tRC_min;
> -	u32 tREA_max;
> -	u32 tREH_min;
> -	u32 tRHOH_min;
> -	u32 tRHW_min;
> -	u32 tRHZ_max;
> -	u32 tRLOH_min;
> -	u32 tRP_min;
> -	u32 tRR_min;
> -	u64 tRST_max;
> -	u32 tWB_max;
> -	u32 tWC_min;
> -	u32 tWH_min;
> -	u32 tWHR_min;
> -	u32 tWP_min;
> -	u32 tWW_min;
> -};
> -
>  /* get timing characteristics from ONFI timing mode. */
>  const struct nand_sdr_timings *onfi_async_timing_mode_to_sdr_timings(int mode);
>  

WARNING: multiple messages have this Message-ID (diff)
From: boris.brezillon@free-electrons.com (Boris Brezillon)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 2/7] mtd: nand: Introduce nand_data_interface
Date: Tue, 6 Sep 2016 13:21:18 +0200	[thread overview]
Message-ID: <20160906132118.17e2e8f8@bbrezillon> (raw)
In-Reply-To: <1473158355-22451-3-git-send-email-s.hauer@pengutronix.de>

On Tue,  6 Sep 2016 12:39:10 +0200
Sascha Hauer <s.hauer@pengutronix.de> wrote:

> Currently we have no data structure to fully describe a NAND timing.
> We only have struct nand_sdr_timings for NAND timings in SDR mode,
> but nothing for DDR mode and also no container to store both types
> of timing.
> This patch adds struct nand_data_interface which stores the timing
> type and a union of different timings. This can be used to pass to
> drivers in order to configure the timing.
> 
> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
> ---
>  include/linux/mtd/nand.h | 109 ++++++++++++++++++++++++++---------------------
>  1 file changed, 60 insertions(+), 49 deletions(-)
> 
> diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h
> index 9af9575..19c73ef 100644
> --- a/include/linux/mtd/nand.h
> +++ b/include/linux/mtd/nand.h
> @@ -568,6 +568,66 @@ struct nand_buffers {
>  	uint8_t *databuf;
>  };
>  
> +/*
> + * struct nand_sdr_timings - SDR NAND chip timings
> + *
> + * This struct defines the timing requirements of a SDR NAND chip.
> + * These information can be found in every NAND datasheets and the timings
> + * meaning are described in the ONFI specifications:
> + * www.onfi.org/~/media/ONFI/specs/onfi_3_1_spec.pdf (chapter 4.15 Timing
> + * Parameters)
> + *
> + * All these timings are expressed in picoseconds.
> + */
> +
> +struct nand_sdr_timings {
> +	u32 tALH_min;
> +	u32 tADL_min;
> +	u32 tALS_min;
> +	u32 tAR_min;
> +	u32 tCEA_max;
> +	u32 tCEH_min;
> +	u32 tCH_min;
> +	u32 tCHZ_max;
> +	u32 tCLH_min;
> +	u32 tCLR_min;
> +	u32 tCLS_min;
> +	u32 tCOH_min;
> +	u32 tCS_min;
> +	u32 tDH_min;
> +	u32 tDS_min;
> +	u32 tFEAT_max;
> +	u32 tIR_min;
> +	u32 tITC_max;
> +	u32 tRC_min;
> +	u32 tREA_max;
> +	u32 tREH_min;
> +	u32 tRHOH_min;
> +	u32 tRHW_min;
> +	u32 tRHZ_max;
> +	u32 tRLOH_min;
> +	u32 tRP_min;
> +	u32 tRR_min;
> +	u64 tRST_max;
> +	u32 tWB_max;
> +	u32 tWC_min;
> +	u32 tWH_min;
> +	u32 tWHR_min;
> +	u32 tWP_min;
> +	u32 tWW_min;
> +};
> +
> +enum nand_data_interface_type {
> +	NAND_SDR_IFACE,
> +};
> +

I know this is my code, and I'm the one to blame here, but can you
document the nand_data_interface fields (kerneldoc format)?

> +struct nand_data_interface {
> +	enum nand_data_interface_type type;
> +	union {
> +		struct nand_sdr_timings sdr;
> +	} timings;
> +};
> +
>  /**
>   * struct nand_chip - NAND Private Flash Chip Data
>   * @mtd:		MTD device registered to the MTD framework
> @@ -1026,55 +1086,6 @@ static inline int jedec_feature(struct nand_chip *chip)
>  		: 0;
>  }
>  
> -/*
> - * struct nand_sdr_timings - SDR NAND chip timings
> - *
> - * This struct defines the timing requirements of a SDR NAND chip.
> - * These informations can be found in every NAND datasheets and the timings
> - * meaning are described in the ONFI specifications:
> - * www.onfi.org/~/media/ONFI/specs/onfi_3_1_spec.pdf (chapter 4.15 Timing
> - * Parameters)
> - *
> - * All these timings are expressed in picoseconds.
> - */
> -
> -struct nand_sdr_timings {
> -	u32 tALH_min;
> -	u32 tADL_min;
> -	u32 tALS_min;
> -	u32 tAR_min;
> -	u32 tCEA_max;
> -	u32 tCEH_min;
> -	u32 tCH_min;
> -	u32 tCHZ_max;
> -	u32 tCLH_min;
> -	u32 tCLR_min;
> -	u32 tCLS_min;
> -	u32 tCOH_min;
> -	u32 tCS_min;
> -	u32 tDH_min;
> -	u32 tDS_min;
> -	u32 tFEAT_max;
> -	u32 tIR_min;
> -	u32 tITC_max;
> -	u32 tRC_min;
> -	u32 tREA_max;
> -	u32 tREH_min;
> -	u32 tRHOH_min;
> -	u32 tRHW_min;
> -	u32 tRHZ_max;
> -	u32 tRLOH_min;
> -	u32 tRP_min;
> -	u32 tRR_min;
> -	u64 tRST_max;
> -	u32 tWB_max;
> -	u32 tWC_min;
> -	u32 tWH_min;
> -	u32 tWHR_min;
> -	u32 tWP_min;
> -	u32 tWW_min;
> -};
> -
>  /* get timing characteristics from ONFI timing mode. */
>  const struct nand_sdr_timings *onfi_async_timing_mode_to_sdr_timings(int mode);
>  

  reply	other threads:[~2016-09-06 11:21 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-06 10:39 [PATCH v2] mtd: nand: automate NAND timings selection Sascha Hauer
2016-09-06 10:39 ` Sascha Hauer
2016-09-06 10:39 ` [PATCH 1/7] mtd: nand: Create a NAND reset function Sascha Hauer
2016-09-06 10:39   ` Sascha Hauer
2016-09-06 11:18   ` Boris Brezillon
2016-09-06 11:18     ` Boris Brezillon
2016-09-06 13:02     ` Sascha Hauer
2016-09-06 13:02       ` Sascha Hauer
2016-09-06 13:06       ` Boris Brezillon
2016-09-06 13:06         ` Boris Brezillon
2016-09-06 10:39 ` [PATCH 2/7] mtd: nand: Introduce nand_data_interface Sascha Hauer
2016-09-06 10:39   ` Sascha Hauer
2016-09-06 11:21   ` Boris Brezillon [this message]
2016-09-06 11:21     ` Boris Brezillon
2016-09-06 13:34     ` Sascha Hauer
2016-09-06 13:34       ` Sascha Hauer
2016-09-06 13:46       ` Boris Brezillon
2016-09-06 13:46         ` Boris Brezillon
2016-09-06 14:09         ` Sascha Hauer
2016-09-06 14:09           ` Sascha Hauer
2016-09-06 10:39 ` [PATCH 3/7] mtd: nand: convert ONFI mode into data interface Sascha Hauer
2016-09-06 10:39   ` Sascha Hauer
2016-09-06 11:27   ` Boris Brezillon
2016-09-06 11:27     ` Boris Brezillon
2016-09-06 12:15   ` Boris Brezillon
2016-09-06 12:15     ` Boris Brezillon
2016-09-06 10:39 ` [PATCH 4/7] mtd: nand: automate NAND timings selection Sascha Hauer
2016-09-06 10:39   ` Sascha Hauer
2016-09-06 11:58   ` Boris Brezillon
2016-09-06 11:58     ` Boris Brezillon
2016-09-06 14:08     ` Sascha Hauer
2016-09-06 14:08       ` Sascha Hauer
2016-09-06 14:50       ` Boris Brezillon
2016-09-06 14:50         ` Boris Brezillon
2016-09-06 15:04         ` Sascha Hauer
2016-09-06 15:04           ` Sascha Hauer
2016-09-06 15:15           ` Boris Brezillon
2016-09-06 15:15             ` Boris Brezillon
2016-09-06 10:39 ` [PATCH 5/7] mtd: nand: sunxi: switch from manual to automated timing config Sascha Hauer
2016-09-06 10:39   ` Sascha Hauer
2016-09-06 12:01   ` Boris Brezillon
2016-09-06 12:01     ` Boris Brezillon
2016-09-06 10:39 ` [PATCH 6/7] mtd: nand: mxc: implement onfi get/set features Sascha Hauer
2016-09-06 10:39   ` Sascha Hauer
2016-09-06 12:05   ` Boris Brezillon
2016-09-06 12:05     ` Boris Brezillon
2016-09-06 12:47     ` Sascha Hauer
2016-09-06 12:47       ` Sascha Hauer
2016-09-06 12:52       ` Boris Brezillon
2016-09-06 12:52         ` Boris Brezillon
2016-09-06 10:39 ` [PATCH 7/7] mtd: nand: mxc: Add timing setup for v2 controllers Sascha Hauer
2016-09-06 10:39   ` Sascha Hauer
2016-09-07 12:21 [PATCH v3] mtd: nand: automate NAND timings selection Sascha Hauer
2016-09-07 12:21 ` [PATCH 2/7] mtd: nand: Introduce nand_data_interface Sascha Hauer
2016-09-07 12:21   ` Sascha Hauer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160906132118.17e2e8f8@bbrezillon \
    --to=boris.brezillon@free-electrons.com \
    --cc=kernel@pengutronix.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=s.hauer@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.