blob: 32bce582a7fc381316e1aaf47643db1f218005c2 [file] [log] [blame]
developer36be9bc2022-03-16 16:05:07 +08001--- a/drivers/mtd/nand/spi/gigadevice.c
2+++ b/drivers/mtd/nand/spi/gigadevice.c
3@@ -39,6 +39,15 @@ static SPINAND_OP_VARIANTS(read_cache_va
4 SPINAND_PAGE_READ_FROM_CACHE_OP_3A(true, 0, 1, NULL, 0),
5 SPINAND_PAGE_READ_FROM_CACHE_OP_3A(false, 0, 0, NULL, 0));
6
7+/* Q5 devices, QUADIO: Dummy bytes only valid for 1 GBit variants */
8+static SPINAND_OP_VARIANTS(gd5f1gq5_read_cache_variants,
9+ SPINAND_PAGE_READ_FROM_CACHE_QUADIO_OP(0, 2, NULL, 0),
10+ SPINAND_PAGE_READ_FROM_CACHE_X4_OP(0, 1, NULL, 0),
11+ SPINAND_PAGE_READ_FROM_CACHE_DUALIO_OP(0, 1, NULL, 0),
12+ SPINAND_PAGE_READ_FROM_CACHE_X2_OP(0, 1, NULL, 0),
13+ SPINAND_PAGE_READ_FROM_CACHE_OP(true, 0, 1, NULL, 0),
14+ SPINAND_PAGE_READ_FROM_CACHE_OP(false, 0, 1, NULL, 0));
15+
16 static SPINAND_OP_VARIANTS(write_cache_variants,
17 SPINAND_PROG_LOAD_X4(true, 0, NULL, 0),
18 SPINAND_PROG_LOAD(true, 0, NULL, 0));
19@@ -265,6 +274,16 @@ static int gd5fxgq4ufxxg_ecc_get_status(
20 }
21
22 static const struct spinand_info gigadevice_spinand_table[] = {
23+ SPINAND_INFO("F50L1G41LB",
24+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_ADDR, 0x01),
25+ NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 1, 1),
26+ NAND_ECCREQ(8, 512),
27+ SPINAND_INFO_OP_VARIANTS(&gd5f1gq5_read_cache_variants,
28+ &write_cache_variants,
29+ &update_cache_variants),
30+ 0,
31+ SPINAND_ECCINFO(&gd5fxgq4xa_ooblayout,
32+ gd5fxgq4xa_ecc_get_status)),
33 SPINAND_INFO("GD5F1GQ4xA",
34 SPINAND_ID(SPINAND_READID_METHOD_OPCODE_ADDR, 0xf1),
35 NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 1, 1),
36@@ -337,7 +356,7 @@ static const struct spinand_info gigadev
37 SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x51),
38 NAND_MEMORG(1, 2048, 128, 64, 1024, 20, 1, 1, 1),
39 NAND_ECCREQ(4, 512),
40- SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
41+ SPINAND_INFO_OP_VARIANTS(&gd5f1gq5_read_cache_variants,
42 &write_cache_variants,
43 &update_cache_variants),
44 SPINAND_HAS_QE_BIT,