mtd: rawnand: timings: Add mode information to the timings structure
authorMiquel Raynal <miquel.raynal@bootlin.com>
Tue, 28 Apr 2020 09:42:54 +0000 (11:42 +0200)
committerMiquel Raynal <miquel.raynal@bootlin.com>
Mon, 11 May 2020 07:51:40 +0000 (09:51 +0200)
Convert the timings union into a structure containing the mode and the
actual values. The values are still a union in prevision of the
addition of the NVDDR modes.

Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Link: https://lore.kernel.org/linux-mtd/20200428094302.14624-2-miquel.raynal@bootlin.com
drivers/mtd/nand/raw/nand_timings.c
include/linux/mtd/rawnand.h

index f64b06a..0061cba 100644 (file)
@@ -16,6 +16,7 @@ static const struct nand_data_interface onfi_sdr_timings[] = {
        /* Mode 0 */
        {
                .type = NAND_SDR_IFACE,
+               .timings.mode = 0,
                .timings.sdr = {
                        .tCCS_min = 500000,
                        .tR_max = 200000000,
@@ -58,6 +59,7 @@ static const struct nand_data_interface onfi_sdr_timings[] = {
        /* Mode 1 */
        {
                .type = NAND_SDR_IFACE,
+               .timings.mode = 1,
                .timings.sdr = {
                        .tCCS_min = 500000,
                        .tR_max = 200000000,
@@ -100,6 +102,7 @@ static const struct nand_data_interface onfi_sdr_timings[] = {
        /* Mode 2 */
        {
                .type = NAND_SDR_IFACE,
+               .timings.mode = 2,
                .timings.sdr = {
                        .tCCS_min = 500000,
                        .tR_max = 200000000,
@@ -142,6 +145,7 @@ static const struct nand_data_interface onfi_sdr_timings[] = {
        /* Mode 3 */
        {
                .type = NAND_SDR_IFACE,
+               .timings.mode = 3,
                .timings.sdr = {
                        .tCCS_min = 500000,
                        .tR_max = 200000000,
@@ -184,6 +188,7 @@ static const struct nand_data_interface onfi_sdr_timings[] = {
        /* Mode 4 */
        {
                .type = NAND_SDR_IFACE,
+               .timings.mode = 4,
                .timings.sdr = {
                        .tCCS_min = 500000,
                        .tR_max = 200000000,
@@ -226,6 +231,7 @@ static const struct nand_data_interface onfi_sdr_timings[] = {
        /* Mode 5 */
        {
                .type = NAND_SDR_IFACE,
+               .timings.mode = 5,
                .timings.sdr = {
                        .tCCS_min = 500000,
                        .tR_max = 200000000,
index 1e76196..2187316 100644 (file)
@@ -491,13 +491,17 @@ enum nand_data_interface_type {
 /**
  * struct nand_data_interface - NAND interface timing
  * @type:       type of the timing
- * @timings:    The timing, type according to @type
+ * @timings:    The timing information
+ * @timings.mode: Timing mode as defined in the specification
  * @timings.sdr: Use it when @type is %NAND_SDR_IFACE.
  */
 struct nand_data_interface {
        enum nand_data_interface_type type;
-       union {
-               struct nand_sdr_timings sdr;
+       struct nand_timings {
+               unsigned int mode;
+               union {
+                       struct nand_sdr_timings sdr;
+               };
        } timings;
 };