summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorApurva Nandan <a-nandan@ti.com>2023-01-23 23:13:28 +0530
committerPraneeth Bajjuri <praneeth@ti.com>2023-01-25 14:10:19 -0600
commit13e96746ab470bbe7b44cde9b4a548946ff99c10 (patch)
tree9317d418d0bee35a0bbba75beb36acec6e7d149e /drivers
parenta7dd90588ca3753c0ee44c51d6b21a8f4b23541d (diff)
mtd: spinand: winbond: Add support for Winbond W35N01JW SPI NAND flash
Winbond W35N01JW is a SPI NAND flash supporting Octal DTR SPI protocol. Add op_variants and ctrl_ops_variants for W35N01JW, thus adding all required Octal DTR ops. Datasheet: https://www.winbond.com/export/sites/winbond/datasheet/W35N01JW_Datasheet_Brief.pdf Signed-off-by: Apurva Nandan <a-nandan@ti.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/mtd/nand/spi/winbond.c27
1 files changed, 24 insertions, 3 deletions
diff --git a/drivers/mtd/nand/spi/winbond.c b/drivers/mtd/nand/spi/winbond.c
index e9c7e48c34..0e20176b6a 100644
--- a/drivers/mtd/nand/spi/winbond.c
+++ b/drivers/mtd/nand/spi/winbond.c
@@ -48,15 +48,36 @@ static SPINAND_OP_VARIANTS(update_cache_variants_w25m02gv,
SPINAND_PROG_LOAD(false, 0, NULL, 0));
static SPINAND_OP_VARIANTS(read_cache_variants_w35n01jw,
+ SPINAND_PAGE_READ_FROM_CACHE_OCTALIO_DTR_OP(0, 24, NULL, 0),
SPINAND_PAGE_READ_FROM_CACHE_OP(true, 0, 1, NULL, 0),
SPINAND_PAGE_READ_FROM_CACHE_OP(false, 0, 1, NULL, 0));
static SPINAND_OP_VARIANTS(write_cache_variants_w35n01jw,
+ SPINAND_PROG_LOAD_OCTALIO_DTR(true, 0, NULL, 0),
SPINAND_PROG_LOAD(true, 0, NULL, 0));
static SPINAND_OP_VARIANTS(update_cache_variants_w35n01jw,
+ SPINAND_PROG_LOAD_OCTALIO_DTR(false, 0, NULL, 0),
SPINAND_PROG_LOAD(false, 0, NULL, 0));
+static SPINAND_CTRL_OPS_VARIANTS(ctrl_ops_variants_w35n01jw,
+ SPINAND_CTRL_OPS(SPINAND_8D,
+ SPINAND_RESET_OP_OCTAL_DTR,
+ SPINAND_GET_FEATURE_OP_OCTAL_DTR(0, NULL),
+ SPINAND_SET_FEATURE_OP_OCTAL_DTR(0, NULL),
+ SPINAND_WR_EN_DIS_OP_OCTAL_DTR(true),
+ SPINAND_BLK_ERASE_OP_OCTAL_DTR(0),
+ SPINAND_PAGE_READ_OP_OCTAL_DTR(0),
+ SPINAND_PROG_EXEC_OP_OCTAL_DTR(0)),
+ SPINAND_CTRL_OPS(SPINAND_1S,
+ SPINAND_RESET_OP,
+ SPINAND_GET_FEATURE_OP(0, NULL),
+ SPINAND_SET_FEATURE_OP(0, NULL),
+ SPINAND_WR_EN_DIS_OP(true),
+ SPINAND_BLK_ERASE_OP(0),
+ SPINAND_PAGE_READ_OP(0),
+ SPINAND_PROG_EXEC_OP(0)));
+
static int w25m02gv_ooblayout_ecc(struct mtd_info *mtd, int section,
struct mtd_oob_region *region)
{
@@ -153,9 +174,9 @@ static const struct spinand_info winbond_spinand_table[] = {
SPINAND_INFO_OP_VARIANTS(&read_cache_variants_w35n01jw,
&write_cache_variants_w35n01jw,
&update_cache_variants_w35n01jw),
- 0,
- SPINAND_ECCINFO(&w35n01jw_ooblayout, NULL)),
-
+ SPINAND_HAS_OCTAL_DTR_BIT | SPINAND_HAS_CR_FEAT_BIT,
+ SPINAND_ECCINFO(&w35n01jw_ooblayout, NULL),
+ SPINAND_INFO_CTRL_OPS_VARIANTS(&ctrl_ops_variants_w35n01jw)),
};
/**