Skip to content

Commit 1ac5ff2

Browse files
committed
mtd: spinand: winbond: Add octal support
Describe the octal "read from cache" (1S_1S_8S, 1S_8S_8S and 1S_1D_8D_OP) and "program load" (1S_1S_8S and 1S_8S_8S) operations supported by the W35N01JW chip. There is no observable improvement between the two octal SDR modes, which anyway offered a great read speed improvement compared to single mode. flash_speed test results ran on the TI AM62A7 LP SK using a 25MHz SPI bus: * Single mode: eraseblock read speed is 2346 KiB/s page read speed is 2342 KiB/s eraseblock write speed is 2028 KiB/s page write speed is 2028 KiB/s * Octal modes: eraseblock read speed is 10801 KiB/s page read speed is 10711 KiB/s eraseblock write speed is 7335 KiB/s page write speed is 7293 KiB/s However, testing on the cadence qspi controller driver did not allow mixed modes (where SDR and DTR cycles are mixed in the same operation), thus 1S-1D-8D mode could not be tested and is provided for reference (it is anyway skipped on platforms not supporting this). It did not allow easy "update cache" tests either, so these macros are untested and given as-is. Acked-by: Tudor Ambarus <[email protected]> Signed-off-by: Miquel Raynal <[email protected]>
1 parent 0737c69 commit 1ac5ff2

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

drivers/mtd/nand/spi/winbond.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,19 @@
2424
*/
2525

2626
static SPINAND_OP_VARIANTS(read_cache_octal_variants,
27+
SPINAND_PAGE_READ_FROM_CACHE_1S_1D_8D_OP(0, 2, NULL, 0, 105 * HZ_PER_MHZ),
28+
SPINAND_PAGE_READ_FROM_CACHE_1S_8S_8S_OP(0, 16, NULL, 0, 86 * HZ_PER_MHZ),
29+
SPINAND_PAGE_READ_FROM_CACHE_1S_1S_8S_OP(0, 1, NULL, 0, 133 * HZ_PER_MHZ),
2730
SPINAND_PAGE_READ_FROM_CACHE_FAST_1S_1S_1S_OP(0, 1, NULL, 0),
2831
SPINAND_PAGE_READ_FROM_CACHE_1S_1S_1S_OP(0, 1, NULL, 0));
2932

3033
static SPINAND_OP_VARIANTS(write_cache_octal_variants,
34+
SPINAND_PROG_LOAD_1S_8S_8S_OP(true, 0, NULL, 0),
35+
SPINAND_PROG_LOAD_1S_1S_8S_OP(0, NULL, 0),
3136
SPINAND_PROG_LOAD_1S_1S_1S_OP(true, 0, NULL, 0));
3237

3338
static SPINAND_OP_VARIANTS(update_cache_octal_variants,
39+
SPINAND_PROG_LOAD_1S_8S_8S_OP(false, 0, NULL, 0),
3440
SPINAND_PROG_LOAD_1S_1S_1S_OP(false, 0, NULL, 0));
3541

3642
static SPINAND_OP_VARIANTS(read_cache_dual_quad_dtr_variants,

0 commit comments

Comments
 (0)