hc
2023-12-11 6778948f9de86c3cfaf36725a7c87dcff9ba247f
kernel/drivers/mtd/nand/spi/xtx.c
....@@ -203,6 +203,28 @@
203203 return -EBADMSG;
204204 }
205205
206
+static int xt26g11c_ecc_get_status(struct spinand_device *spinand,
207
+ u8 status)
208
+{
209
+ struct nand_device *nand = spinand_to_nand(spinand);
210
+
211
+ switch (status & STATUS_ECC_MASK) {
212
+ case STATUS_ECC_NO_BITFLIPS:
213
+ return 0;
214
+
215
+ case STATUS_ECC_UNCOR_ERROR:
216
+ return -EBADMSG;
217
+
218
+ case STATUS_ECC_HAS_BITFLIPS:
219
+ return 1;
220
+
221
+ default:
222
+ return nanddev_get_ecc_requirements(nand)->strength;
223
+ }
224
+
225
+ return -EINVAL;
226
+}
227
+
206228 static const struct spinand_info xtx_spinand_table[] = {
207229 SPINAND_INFO("XT26G01A",
208230 SPINAND_ID(SPINAND_READID_METHOD_OPCODE_ADDR, 0xE1),
....@@ -293,7 +315,34 @@
293315 &update_cache_variants),
294316 SPINAND_HAS_QE_BIT,
295317 SPINAND_ECCINFO(&xt26g01c_ooblayout,
296
- xt26g01c_ecc_get_status)),
318
+ xt26g11c_ecc_get_status)),
319
+ SPINAND_INFO("XT26Q02DWSIGA",
320
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x52),
321
+ NAND_MEMORG(1, 2048, 128, 64, 2048, 40, 1, 1, 1),
322
+ NAND_ECCREQ(8, 512),
323
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
324
+ &write_cache_variants,
325
+ &update_cache_variants),
326
+ SPINAND_HAS_QE_BIT,
327
+ SPINAND_ECCINFO(&xt26g01c_ooblayout, xt26g11c_ecc_get_status)),
328
+ SPINAND_INFO("XT26Q01DWSIGA",
329
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x51),
330
+ NAND_MEMORG(1, 2048, 128, 64, 1024, 20, 1, 1, 1),
331
+ NAND_ECCREQ(8, 512),
332
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
333
+ &write_cache_variants,
334
+ &update_cache_variants),
335
+ SPINAND_HAS_QE_BIT,
336
+ SPINAND_ECCINFO(&xt26g01c_ooblayout, xt26g11c_ecc_get_status)),
337
+ SPINAND_INFO("XT26Q04DWSIGA",
338
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x53),
339
+ NAND_MEMORG(1, 4096, 256, 64, 2048, 40, 1, 1, 1),
340
+ NAND_ECCREQ(8, 512),
341
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
342
+ &write_cache_variants,
343
+ &update_cache_variants),
344
+ SPINAND_HAS_QE_BIT,
345
+ SPINAND_ECCINFO(&xt26g01c_ooblayout, xt26g11c_ecc_get_status)),
297346 };
298347
299348 static const struct spinand_manufacturer_ops xtx_spinand_manuf_ops = {