[LINUX,v11,2/3] mtd: rawnand: Add an option to get sdr timing mode number

Message ID 1537878031-22253-3-git-send-email-naga.sureshkumar.relli@xilinx.com
State New
Delegated to: Miquel Raynal
Headers show
Series
  • Add support for Arasan NAND Flash controller
Related show

Commit Message

Naga Sureshkumar Relli Sept. 25, 2018, 12:20 p.m.
Some NAND controllers needs sdr timing mode value, instead of
timings parameters. i.e the NAND controller will change its operating
mode by just configuring the sdr timing mode number. so add mode parameter
in struct nand_sdr_timings.

Signed-off-by: Naga Sureshkumar Relli <naga.sureshkumar.relli@xilinx.com>
---
Changes in v11:
 - None
---
 drivers/mtd/nand/raw/nand_timings.c | 6 ++++++
 include/linux/mtd/rawnand.h         | 2 ++
 2 files changed, 8 insertions(+)

Comments

Boris Brezillon Oct. 3, 2018, 7:30 p.m. | #1
On Tue, 25 Sep 2018 17:50:30 +0530
Naga Sureshkumar Relli <naga.sureshkumar.relli@xilinx.com> wrote:

> Some NAND controllers needs sdr timing mode value, instead of

			^need SDR

> timings parameters. i.e the NAND controller will change its operating

	  s/parameters//

> mode by just configuring the sdr timing mode number. so add mode parameter

							^ So, add a mode field 

> in struct nand_sdr_timings.

  ^ to ...

> 
> Signed-off-by: Naga Sureshkumar Relli <naga.sureshkumar.relli@xilinx.com>
> ---
> Changes in v11:
>  - None
> ---
>  drivers/mtd/nand/raw/nand_timings.c | 6 ++++++
>  include/linux/mtd/rawnand.h         | 2 ++
>  2 files changed, 8 insertions(+)
> 
> diff --git a/drivers/mtd/nand/raw/nand_timings.c b/drivers/mtd/nand/raw/nand_timings.c
> index ebc7b5f..1ec7a28 100644
> --- a/drivers/mtd/nand/raw/nand_timings.c
> +++ b/drivers/mtd/nand/raw/nand_timings.c
> @@ -56,6 +56,7 @@ static const struct nand_data_interface onfi_sdr_timings[] = {
>  			.tWHR_min = 120000,
>  			.tWP_min = 50000,
>  			.tWW_min = 100000,
> +			.mode = 0,
>  		},
>  	},
>  	/* Mode 1 */
> @@ -98,6 +99,7 @@ static const struct nand_data_interface onfi_sdr_timings[] = {
>  			.tWHR_min = 80000,
>  			.tWP_min = 25000,
>  			.tWW_min = 100000,
> +			.mode = 1,
>  		},
>  	},
>  	/* Mode 2 */
> @@ -140,6 +142,7 @@ static const struct nand_data_interface onfi_sdr_timings[] = {
>  			.tWHR_min = 80000,
>  			.tWP_min = 17000,
>  			.tWW_min = 100000,
> +			.mode = 2,
>  		},
>  	},
>  	/* Mode 3 */
> @@ -182,6 +185,7 @@ static const struct nand_data_interface onfi_sdr_timings[] = {
>  			.tWHR_min = 80000,
>  			.tWP_min = 15000,
>  			.tWW_min = 100000,
> +			.mode = 3,
>  		},
>  	},
>  	/* Mode 4 */
> @@ -224,6 +228,7 @@ static const struct nand_data_interface onfi_sdr_timings[] = {
>  			.tWHR_min = 80000,
>  			.tWP_min = 12000,
>  			.tWW_min = 100000,
> +			.mode = 4,
>  		},
>  	},
>  	/* Mode 5 */
> @@ -266,6 +271,7 @@ static const struct nand_data_interface onfi_sdr_timings[] = {
>  			.tWHR_min = 80000,
>  			.tWP_min = 10000,
>  			.tWW_min = 100000,
> +			.mode = 5,
>  		},
>  	},
>  };
> diff --git a/include/linux/mtd/rawnand.h b/include/linux/mtd/rawnand.h
> index efb2345..3bf2cea 100644
> --- a/include/linux/mtd/rawnand.h
> +++ b/include/linux/mtd/rawnand.h
> @@ -723,6 +723,7 @@ struct nand_ecc_ctrl {
>   * @tWHR_min: WE# high to RE# low
>   * @tWP_min: WE# pulse width
>   * @tWW_min: WP# transition to WE# low
> + * @mode: sdr timing mode value

      @mode: ONFI timing mode

>   */
>  struct nand_sdr_timings {
>  	u64 tBERS_max;
> @@ -763,6 +764,7 @@ struct nand_sdr_timings {
>  	u32 tWHR_min;
>  	u32 tWP_min;
>  	u32 tWW_min;
> +	u8 mode;
>  };
>  
>  /**

With this addressed, you can add

Reviewed-by: Boris Brezillon <boris.brezillon@bootlin.com>

Patch

diff --git a/drivers/mtd/nand/raw/nand_timings.c b/drivers/mtd/nand/raw/nand_timings.c
index ebc7b5f..1ec7a28 100644
--- a/drivers/mtd/nand/raw/nand_timings.c
+++ b/drivers/mtd/nand/raw/nand_timings.c
@@ -56,6 +56,7 @@  static const struct nand_data_interface onfi_sdr_timings[] = {
 			.tWHR_min = 120000,
 			.tWP_min = 50000,
 			.tWW_min = 100000,
+			.mode = 0,
 		},
 	},
 	/* Mode 1 */
@@ -98,6 +99,7 @@  static const struct nand_data_interface onfi_sdr_timings[] = {
 			.tWHR_min = 80000,
 			.tWP_min = 25000,
 			.tWW_min = 100000,
+			.mode = 1,
 		},
 	},
 	/* Mode 2 */
@@ -140,6 +142,7 @@  static const struct nand_data_interface onfi_sdr_timings[] = {
 			.tWHR_min = 80000,
 			.tWP_min = 17000,
 			.tWW_min = 100000,
+			.mode = 2,
 		},
 	},
 	/* Mode 3 */
@@ -182,6 +185,7 @@  static const struct nand_data_interface onfi_sdr_timings[] = {
 			.tWHR_min = 80000,
 			.tWP_min = 15000,
 			.tWW_min = 100000,
+			.mode = 3,
 		},
 	},
 	/* Mode 4 */
@@ -224,6 +228,7 @@  static const struct nand_data_interface onfi_sdr_timings[] = {
 			.tWHR_min = 80000,
 			.tWP_min = 12000,
 			.tWW_min = 100000,
+			.mode = 4,
 		},
 	},
 	/* Mode 5 */
@@ -266,6 +271,7 @@  static const struct nand_data_interface onfi_sdr_timings[] = {
 			.tWHR_min = 80000,
 			.tWP_min = 10000,
 			.tWW_min = 100000,
+			.mode = 5,
 		},
 	},
 };
diff --git a/include/linux/mtd/rawnand.h b/include/linux/mtd/rawnand.h
index efb2345..3bf2cea 100644
--- a/include/linux/mtd/rawnand.h
+++ b/include/linux/mtd/rawnand.h
@@ -723,6 +723,7 @@  struct nand_ecc_ctrl {
  * @tWHR_min: WE# high to RE# low
  * @tWP_min: WE# pulse width
  * @tWW_min: WP# transition to WE# low
+ * @mode: sdr timing mode value
  */
 struct nand_sdr_timings {
 	u64 tBERS_max;
@@ -763,6 +764,7 @@  struct nand_sdr_timings {
 	u32 tWHR_min;
 	u32 tWP_min;
 	u32 tWW_min;
+	u8 mode;
 };
 
 /**