hc
2023-12-11 6778948f9de86c3cfaf36725a7c87dcff9ba247f
kernel/drivers/mtd/nand/spi/gigadevice.c
....@@ -39,6 +39,22 @@
3939 SPINAND_PAGE_READ_FROM_CACHE_OP_3A(true, 0, 1, NULL, 0),
4040 SPINAND_PAGE_READ_FROM_CACHE_OP_3A(false, 0, 0, NULL, 0));
4141
42
+static SPINAND_OP_VARIANTS(read_cache_variants_1gq5,
43
+ SPINAND_PAGE_READ_FROM_CACHE_QUADIO_OP(0, 2, NULL, 0),
44
+ SPINAND_PAGE_READ_FROM_CACHE_X4_OP(0, 1, NULL, 0),
45
+ SPINAND_PAGE_READ_FROM_CACHE_DUALIO_OP(0, 1, NULL, 0),
46
+ SPINAND_PAGE_READ_FROM_CACHE_X2_OP(0, 1, NULL, 0),
47
+ SPINAND_PAGE_READ_FROM_CACHE_OP(true, 0, 1, NULL, 0),
48
+ SPINAND_PAGE_READ_FROM_CACHE_OP(false, 0, 1, NULL, 0));
49
+
50
+static SPINAND_OP_VARIANTS(read_cache_variants_2gq5,
51
+ SPINAND_PAGE_READ_FROM_CACHE_QUADIO_OP(0, 4, NULL, 0),
52
+ SPINAND_PAGE_READ_FROM_CACHE_X4_OP(0, 1, NULL, 0),
53
+ SPINAND_PAGE_READ_FROM_CACHE_DUALIO_OP(0, 2, NULL, 0),
54
+ SPINAND_PAGE_READ_FROM_CACHE_X2_OP(0, 1, NULL, 0),
55
+ SPINAND_PAGE_READ_FROM_CACHE_OP(true, 0, 1, NULL, 0),
56
+ SPINAND_PAGE_READ_FROM_CACHE_OP(false, 0, 1, NULL, 0));
57
+
4258 static SPINAND_OP_VARIANTS(write_cache_variants,
4359 SPINAND_PROG_LOAD_X4(true, 0, NULL, 0),
4460 SPINAND_PROG_LOAD(true, 0, NULL, 0));
....@@ -349,6 +365,36 @@
349365 SPINAND_HAS_QE_BIT,
350366 SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
351367 gd5fxgq4uexxg_ecc_get_status)),
368
+ SPINAND_INFO("GD5F1GQ4RExxG",
369
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_ADDR, 0xc1),
370
+ NAND_MEMORG(1, 2048, 128, 64, 1024, 20, 1, 1, 1),
371
+ NAND_ECCREQ(8, 512),
372
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
373
+ &write_cache_variants,
374
+ &update_cache_variants),
375
+ SPINAND_HAS_QE_BIT,
376
+ SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
377
+ gd5fxgq4uexxg_ecc_get_status)),
378
+ SPINAND_INFO("GD5F2GQ4UExxG",
379
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_ADDR, 0xd2),
380
+ NAND_MEMORG(1, 2048, 128, 64, 2048, 40, 1, 1, 1),
381
+ NAND_ECCREQ(8, 512),
382
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
383
+ &write_cache_variants,
384
+ &update_cache_variants),
385
+ SPINAND_HAS_QE_BIT,
386
+ SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
387
+ gd5fxgq4uexxg_ecc_get_status)),
388
+ SPINAND_INFO("GD5F2GQ4RExxG",
389
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_ADDR, 0xc2),
390
+ NAND_MEMORG(1, 2048, 128, 64, 2048, 40, 1, 1, 1),
391
+ NAND_ECCREQ(8, 512),
392
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
393
+ &write_cache_variants,
394
+ &update_cache_variants),
395
+ SPINAND_HAS_QE_BIT,
396
+ SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
397
+ gd5fxgq4uexxg_ecc_get_status)),
352398 SPINAND_INFO("GD5F1GQ4UFxxG",
353399 SPINAND_ID(SPINAND_READID_METHOD_OPCODE, 0xb1, 0x48),
354400 NAND_MEMORG(1, 2048, 128, 64, 1024, 20, 1, 1, 1),
....@@ -363,42 +409,122 @@
363409 SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x51),
364410 NAND_MEMORG(1, 2048, 128, 64, 1024, 20, 1, 1, 1),
365411 NAND_ECCREQ(4, 512),
366
- SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
412
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants_1gq5,
413
+ &write_cache_variants,
414
+ &update_cache_variants),
415
+ SPINAND_HAS_QE_BIT,
416
+ SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
417
+ gd5fxgq5xexxg_ecc_get_status)),
418
+ SPINAND_INFO("GD5F1GQ5RExxG",
419
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x41, 0xc8),
420
+ NAND_MEMORG(1, 2048, 128, 64, 1024, 20, 1, 1, 1),
421
+ NAND_ECCREQ(4, 512),
422
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants_1gq5,
367423 &write_cache_variants,
368424 &update_cache_variants),
369425 SPINAND_HAS_QE_BIT,
370426 SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
371427 gd5fxgq5xexxg_ecc_get_status)),
372428 SPINAND_INFO("GD5F2GQ5UExxG",
373
- SPINAND_ID(SPINAND_READID_METHOD_OPCODE_ADDR, 0x52),
429
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x52),
374430 NAND_MEMORG(1, 2048, 128, 64, 2048, 40, 1, 1, 1),
375431 NAND_ECCREQ(4, 512),
376
- SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
432
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants_2gq5,
377433 &write_cache_variants,
378434 &update_cache_variants),
379435 SPINAND_HAS_QE_BIT,
380436 SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
381437 gd5fxgq5xexxg_ecc_get_status)),
382
- SPINAND_INFO("GD5F2GQ4UBxxG",
383
- SPINAND_ID(SPINAND_READID_METHOD_OPCODE_ADDR, 0xd2),
438
+ SPINAND_INFO("GD5F2GQ5RExxG",
439
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x42),
440
+ NAND_MEMORG(1, 2048, 128, 64, 2048, 40, 1, 1, 1),
441
+ NAND_ECCREQ(4, 512),
442
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants_2gq5,
443
+ &write_cache_variants,
444
+ &update_cache_variants),
445
+ SPINAND_HAS_QE_BIT,
446
+ SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
447
+ gd5fxgq5xexxg_ecc_get_status)),
448
+ SPINAND_INFO("GD5F4GQ6UExxG",
449
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x55),
450
+ NAND_MEMORG(1, 2048, 128, 64, 2048, 40, 1, 2, 1),
451
+ NAND_ECCREQ(4, 512),
452
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants_2gq5,
453
+ &write_cache_variants,
454
+ &update_cache_variants),
455
+ SPINAND_HAS_QE_BIT,
456
+ SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
457
+ gd5fxgq5xexxg_ecc_get_status)),
458
+ SPINAND_INFO("GD5F4GQ6RExxG",
459
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x45),
460
+ NAND_MEMORG(1, 2048, 128, 64, 2048, 40, 1, 2, 1),
461
+ NAND_ECCREQ(4, 512),
462
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants_2gq5,
463
+ &write_cache_variants,
464
+ &update_cache_variants),
465
+ SPINAND_HAS_QE_BIT,
466
+ SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
467
+ gd5fxgq5xexxg_ecc_get_status)),
468
+ SPINAND_INFO("GD5F1GM7UExxG",
469
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x91),
470
+ NAND_MEMORG(1, 2048, 128, 64, 1024, 20, 1, 1, 1),
471
+ NAND_ECCREQ(8, 512),
472
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants_1gq5,
473
+ &write_cache_variants,
474
+ &update_cache_variants),
475
+ SPINAND_HAS_QE_BIT,
476
+ SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
477
+ gd5fxgq4uexxg_ecc_get_status)),
478
+ SPINAND_INFO("GD5F1GM7RExxG",
479
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x81),
480
+ NAND_MEMORG(1, 2048, 128, 64, 1024, 20, 1, 1, 1),
481
+ NAND_ECCREQ(8, 512),
482
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants_1gq5,
483
+ &write_cache_variants,
484
+ &update_cache_variants),
485
+ SPINAND_HAS_QE_BIT,
486
+ SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
487
+ gd5fxgq4uexxg_ecc_get_status)),
488
+ SPINAND_INFO("GD5F2GM7UExxG",
489
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x92),
384490 NAND_MEMORG(1, 2048, 128, 64, 2048, 40, 1, 1, 1),
385491 NAND_ECCREQ(8, 512),
386
- SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
492
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants_1gq5,
387493 &write_cache_variants,
388494 &update_cache_variants),
389495 SPINAND_HAS_QE_BIT,
390496 SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
391
- gd5fxgq4xa_ecc_get_status)),
392
- SPINAND_INFO("GD5F4GQ6UExxG",
393
- SPINAND_ID(SPINAND_READID_METHOD_OPCODE_ADDR, 0x55),
497
+ gd5fxgq4uexxg_ecc_get_status)),
498
+ SPINAND_INFO("GD5F2GM7RExxG",
499
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x82),
500
+ NAND_MEMORG(1, 2048, 128, 64, 2048, 40, 1, 1, 1),
501
+ NAND_ECCREQ(8, 512),
502
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants_1gq5,
503
+ &write_cache_variants,
504
+ &update_cache_variants),
505
+ SPINAND_HAS_QE_BIT,
506
+ SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
507
+ gd5fxgq4uexxg_ecc_get_status)),
508
+ SPINAND_INFO("GD5F4GM8UExxG",
509
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x95),
394510 NAND_MEMORG(1, 2048, 128, 64, 4096, 80, 1, 1, 1),
395
- NAND_ECCREQ(4, 512),
396
- SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
511
+ NAND_ECCREQ(8, 512),
512
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants_1gq5,
397513 &write_cache_variants,
398514 &update_cache_variants),
399515 SPINAND_HAS_QE_BIT,
400516 SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
401
- gd5fxgq5xexxg_ecc_get_status)),
517
+ gd5fxgq4uexxg_ecc_get_status)),
518
+ SPINAND_INFO("GD5F4GM8RExxG",
519
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x85),
520
+ NAND_MEMORG(1, 2048, 128, 64, 4096, 80, 1, 1, 1),
521
+ NAND_ECCREQ(8, 512),
522
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants_1gq5,
523
+ &write_cache_variants,
524
+ &update_cache_variants),
525
+ SPINAND_HAS_QE_BIT,
526
+ SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
527
+ gd5fxgq4uexxg_ecc_get_status)),
402528 SPINAND_INFO("GD5F1GQ4UExxH",
403529 SPINAND_ID(SPINAND_READID_METHOD_OPCODE_ADDR, 0xd9),
404530 NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 1, 1),
....@@ -408,56 +534,6 @@
408534 &update_cache_variants),
409535 SPINAND_HAS_QE_BIT,
410536 SPINAND_ECCINFO(&gd5fxgqx_variant3_ooblayout,
411
- gd5fxgq4xa_ecc_get_status)),
412
- SPINAND_INFO("GD5F1GQ5RExxG",
413
- SPINAND_ID(SPINAND_READID_METHOD_OPCODE_ADDR, 0x41),
414
- NAND_MEMORG(1, 2048, 128, 64, 1024, 20, 1, 1, 1),
415
- NAND_ECCREQ(4, 512),
416
- SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
417
- &write_cache_variants,
418
- &update_cache_variants),
419
- SPINAND_HAS_QE_BIT,
420
- SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
421
- gd5fxgq5xexxg_ecc_get_status)),
422
- SPINAND_INFO("GD5F2GQ5RExxG",
423
- SPINAND_ID(SPINAND_READID_METHOD_OPCODE_ADDR, 0x42),
424
- NAND_MEMORG(1, 2048, 128, 64, 2048, 40, 1, 1, 1),
425
- NAND_ECCREQ(4, 512),
426
- SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
427
- &write_cache_variants,
428
- &update_cache_variants),
429
- SPINAND_HAS_QE_BIT,
430
- SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
431
- gd5fxgq5xexxg_ecc_get_status)),
432
- SPINAND_INFO("GD5F2GM7RxG",
433
- SPINAND_ID(SPINAND_READID_METHOD_OPCODE_ADDR, 0x82),
434
- NAND_MEMORG(1, 2048, 128, 64, 2048, 40, 1, 1, 1),
435
- NAND_ECCREQ(8, 512),
436
- SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
437
- &write_cache_variants,
438
- &update_cache_variants),
439
- SPINAND_HAS_QE_BIT,
440
- SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
441
- gd5fxgq4xa_ecc_get_status)),
442
- SPINAND_INFO("GD5F1GM7UxG",
443
- SPINAND_ID(SPINAND_READID_METHOD_OPCODE_ADDR, 0x91),
444
- NAND_MEMORG(1, 2048, 128, 64, 1024, 20, 1, 1, 1),
445
- NAND_ECCREQ(8, 512),
446
- SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
447
- &write_cache_variants,
448
- &update_cache_variants),
449
- SPINAND_HAS_QE_BIT,
450
- SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
451
- gd5fxgq4xa_ecc_get_status)),
452
- SPINAND_INFO("GD5F2GM7UxG",
453
- SPINAND_ID(SPINAND_READID_METHOD_OPCODE_ADDR, 0x92),
454
- NAND_MEMORG(1, 2048, 128, 64, 2048, 40, 1, 1, 1),
455
- NAND_ECCREQ(8, 512),
456
- SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
457
- &write_cache_variants,
458
- &update_cache_variants),
459
- SPINAND_HAS_QE_BIT,
460
- SPINAND_ECCINFO(&gd5fxgqx_variant2_ooblayout,
461537 gd5fxgq4xa_ecc_get_status)),
462538 };
463539