]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
mtd: spinand: winbond: Register W35N vendor specific operation
authorMiquel Raynal <miquel.raynal@bootlin.com>
Fri, 9 Jan 2026 17:18:15 +0000 (18:18 +0100)
committerMiquel Raynal <miquel.raynal@bootlin.com>
Thu, 29 Jan 2026 19:21:41 +0000 (20:21 +0100)
Provide the Winbond W35N specific "write VCR register" operation to let
the core verify it is supported by the controller before using it.

Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
drivers/mtd/nand/spi/winbond.c

index 36053f35ee5e84eb355343443a28d274cf7ea5c3..1c13dba08369c48ca26381c634abcea4e7360f30 100644 (file)
@@ -93,6 +93,9 @@ static SPINAND_OP_VARIANTS(update_cache_variants,
                   SPI_MEM_OP_NO_DUMMY,                                 \
                   SPI_MEM_OP_DATA_OUT(1, buf, 1))
 
+static SPINAND_OP_VARIANTS(winbond_w35_ops,
+               SPINAND_WINBOND_WRITE_VCR_1S_1S_1S(0, NULL));
+
 static struct spi_mem_op
 spinand_fill_winbond_write_vcr_op(struct spinand_device *spinand, u8 reg, void *valptr)
 {
@@ -469,6 +472,7 @@ static const struct spinand_info winbond_spinand_table[] = {
                                              &write_cache_octal_variants,
                                              &update_cache_octal_variants),
                     0,
+                    SPINAND_INFO_VENDOR_OPS(&winbond_w35_ops),
                     SPINAND_ECCINFO(&w35n01jw_ooblayout, NULL),
                     SPINAND_CONFIGURE_CHIP(w35n0xjw_vcr_cfg)),
        SPINAND_INFO("W35N02JW", /* 1.8V */
@@ -479,6 +483,7 @@ static const struct spinand_info winbond_spinand_table[] = {
                                              &write_cache_octal_variants,
                                              &update_cache_octal_variants),
                     0,
+                    SPINAND_INFO_VENDOR_OPS(&winbond_w35_ops),
                     SPINAND_ECCINFO(&w35n01jw_ooblayout, NULL),
                     SPINAND_CONFIGURE_CHIP(w35n0xjw_vcr_cfg)),
        SPINAND_INFO("W35N04JW", /* 1.8V */
@@ -489,6 +494,7 @@ static const struct spinand_info winbond_spinand_table[] = {
                                              &write_cache_octal_variants,
                                              &update_cache_octal_variants),
                     0,
+                    SPINAND_INFO_VENDOR_OPS(&winbond_w35_ops),
                     SPINAND_ECCINFO(&w35n01jw_ooblayout, NULL),
                     SPINAND_CONFIGURE_CHIP(w35n0xjw_vcr_cfg)),
        /* 2G-bit densities */