mtd: spinand: macronix: Flag parts needing explicit plane select
authorCheng Ming Lin <chengminglin@mxic.com.tw>
Mon, 9 Sep 2024 09:26:43 +0000 (17:26 +0800)
committerMiquel Raynal <miquel.raynal@bootlin.com>
Mon, 9 Sep 2024 09:52:06 +0000 (11:52 +0200)
Macronix serial NAND flash with a two-plane structure requires
insertion of the Plane Select bit into the column address during
the write_to_cache operation.

Additionally, for MX35{U,F}2G14AC and MX35LF2GE4AB, insertion of
the Plane Select bit into the column address is required during
the read_from_cache operation.

Signed-off-by: Cheng Ming Lin <chengminglin@mxic.com.tw>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/linux-mtd/20240909092643.2434479-3-linchengming884@gmail.com
drivers/mtd/nand/spi/macronix.c

index 9c0c72b913ede07dda4d5ede5839f55ee360f691..d277c3220fdcbcd6d9ff7ea2690492e0893f5e4a 100644 (file)
@@ -154,7 +154,9 @@ static const struct spinand_info macronix_spinand_table[] = {
                     SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
                                              &write_cache_variants,
                                              &update_cache_variants),
-                    SPINAND_HAS_QE_BIT,
+                    SPINAND_HAS_QE_BIT |
+                    SPINAND_HAS_PROG_PLANE_SELECT_BIT |
+                    SPINAND_HAS_READ_PLANE_SELECT_BIT,
                     SPINAND_ECCINFO(&mx35lfxge4ab_ooblayout, NULL)),
        SPINAND_INFO("MX35LF2GE4AD",
                     SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x26, 0x03),
@@ -194,7 +196,8 @@ static const struct spinand_info macronix_spinand_table[] = {
                     SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
                                              &write_cache_variants,
                                              &update_cache_variants),
-                    SPINAND_HAS_QE_BIT,
+                    SPINAND_HAS_QE_BIT |
+                    SPINAND_HAS_PROG_PLANE_SELECT_BIT,
                     SPINAND_ECCINFO(&mx35lfxge4ab_ooblayout, NULL)),
        SPINAND_INFO("MX35LF2G24AD-Z4I8",
                     SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x64, 0x03),
@@ -212,7 +215,8 @@ static const struct spinand_info macronix_spinand_table[] = {
                     SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
                                              &write_cache_variants,
                                              &update_cache_variants),
-                    SPINAND_HAS_QE_BIT,
+                    SPINAND_HAS_QE_BIT |
+                    SPINAND_HAS_PROG_PLANE_SELECT_BIT,
                     SPINAND_ECCINFO(&mx35lfxge4ab_ooblayout, NULL)),
        SPINAND_INFO("MX35LF4G24AD-Z4I8",
                     SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x75, 0x03),
@@ -251,7 +255,9 @@ static const struct spinand_info macronix_spinand_table[] = {
                     SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
                                              &write_cache_variants,
                                              &update_cache_variants),
-                    SPINAND_HAS_QE_BIT,
+                    SPINAND_HAS_QE_BIT |
+                    SPINAND_HAS_PROG_PLANE_SELECT_BIT |
+                    SPINAND_HAS_READ_PLANE_SELECT_BIT,
                     SPINAND_ECCINFO(&mx35lfxge4ab_ooblayout,
                                     macronix_ecc_get_status)),
        SPINAND_INFO("MX35UF4G24AD",
@@ -261,7 +267,8 @@ static const struct spinand_info macronix_spinand_table[] = {
                     SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
                                              &write_cache_variants,
                                              &update_cache_variants),
-                    SPINAND_HAS_QE_BIT,
+                    SPINAND_HAS_QE_BIT |
+                    SPINAND_HAS_PROG_PLANE_SELECT_BIT,
                     SPINAND_ECCINFO(&mx35lfxge4ab_ooblayout,
                                     macronix_ecc_get_status)),
        SPINAND_INFO("MX35UF4G24AD-Z4I8",
@@ -292,7 +299,9 @@ static const struct spinand_info macronix_spinand_table[] = {
                     SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
                                              &write_cache_variants,
                                              &update_cache_variants),
-                    SPINAND_HAS_QE_BIT,
+                    SPINAND_HAS_QE_BIT |
+                    SPINAND_HAS_PROG_PLANE_SELECT_BIT |
+                    SPINAND_HAS_READ_PLANE_SELECT_BIT,
                     SPINAND_ECCINFO(&mx35lfxge4ab_ooblayout,
                                     macronix_ecc_get_status)),
        SPINAND_INFO("MX35UF2G24AD",
@@ -302,7 +311,8 @@ static const struct spinand_info macronix_spinand_table[] = {
                     SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
                                              &write_cache_variants,
                                              &update_cache_variants),
-                    SPINAND_HAS_QE_BIT,
+                    SPINAND_HAS_QE_BIT |
+                    SPINAND_HAS_PROG_PLANE_SELECT_BIT,
                     SPINAND_ECCINFO(&mx35lfxge4ab_ooblayout,
                                     macronix_ecc_get_status)),
        SPINAND_INFO("MX35UF2G24AD-Z4I8",