|
15 | 15 |
|
16 | 16 | #define WINBOND_CFG_BUF_READ BIT(3)
|
17 | 17 |
|
| 18 | +#define W25N04KV_STATUS_ECC_5_8_BITFLIPS (3 << 4) |
| 19 | + |
18 | 20 | static SPINAND_OP_VARIANTS(read_cache_variants,
|
19 | 21 | SPINAND_PAGE_READ_FROM_CACHE_QUADIO_OP(0, 2, NULL, 0),
|
20 | 22 | SPINAND_PAGE_READ_FROM_CACHE_X4_OP(0, 1, NULL, 0),
|
@@ -118,6 +120,7 @@ static int w25n02kv_ecc_get_status(struct spinand_device *spinand,
|
118 | 120 | return -EBADMSG;
|
119 | 121 |
|
120 | 122 | case STATUS_ECC_HAS_BITFLIPS:
|
| 123 | + case W25N04KV_STATUS_ECC_5_8_BITFLIPS: |
121 | 124 | /*
|
122 | 125 | * Let's try to retrieve the real maximum number of bitflips
|
123 | 126 | * in order to avoid forcing the wear-leveling layer to move
|
@@ -214,6 +217,15 @@ static const struct spinand_info winbond_spinand_table[] = {
|
214 | 217 | &update_cache_variants),
|
215 | 218 | 0,
|
216 | 219 | SPINAND_ECCINFO(&w25m02gv_ooblayout, w25n02kv_ecc_get_status)),
|
| 220 | + SPINAND_INFO("W25N04KV", |
| 221 | + SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xaa, 0x23), |
| 222 | + NAND_MEMORG(1, 2048, 128, 64, 4096, 40, 2, 1, 1), |
| 223 | + NAND_ECCREQ(8, 512), |
| 224 | + SPINAND_INFO_OP_VARIANTS(&read_cache_variants, |
| 225 | + &write_cache_variants, |
| 226 | + &update_cache_variants), |
| 227 | + 0, |
| 228 | + SPINAND_ECCINFO(&w25n02kv_ooblayout, w25n02kv_ecc_get_status)), |
217 | 229 | };
|
218 | 230 |
|
219 | 231 | static int winbond_spinand_init(struct spinand_device *spinand)
|
|
0 commit comments