FreeCalypso > hg > freecalypso-tools
comparison loadtools/fldevs.c @ 979:c5133c3c11b1
fc-loadtool flash: implement PL-J PPB programming functions
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 02 Dec 2023 04:21:59 +0000 |
parents | a400bb4a1620 |
children | 0a4d19aab608 |
comparison
equal
deleted
inserted
replaced
978:a400bb4a1620 | 979:c5133c3c11b1 |
---|---|
6 #include "flash.h" | 6 #include "flash.h" |
7 | 7 |
8 extern struct flash_cmdset flash_cmdset_amd; | 8 extern struct flash_cmdset flash_cmdset_amd; |
9 extern struct flash_cmdset flash_cmdset_intel; | 9 extern struct flash_cmdset flash_cmdset_intel; |
10 extern struct flash_cmdset flash_cmdset_intel_w30; | 10 extern struct flash_cmdset flash_cmdset_intel_w30; |
11 | |
12 extern int plj_ppb_program_one(); | |
13 extern int plj_ppb_program_all_single(); | |
14 extern int plj_ppb_program_all_dualbank(); | |
15 extern int plj_ppb_erase_all_single(); | |
16 extern int plj_ppb_erase_all_dualbank(); | |
11 | 17 |
12 /* flash bank geometries */ | 18 /* flash bank geometries */ |
13 | 19 |
14 static struct flash_geom geom_2M_topboot = { | 20 static struct flash_geom geom_2M_topboot = { |
15 .total_size = 0x200000, | 21 .total_size = 0x200000, |
432 {0x40000, 3, 1, 1, 0}, | 438 {0x40000, 3, 1, 1, 0}, |
433 {0x10000, 3, 0, 0, 0}, | 439 {0x10000, 3, 0, 0, 0}, |
434 {0x2000, 8, 0, 0, 1}}, | 440 {0x2000, 8, 0, 0, 1}}, |
435 .have_status_word_3 = 1, | 441 .have_status_word_3 = 1, |
436 .have_mode_lock_bits = 1, | 442 .have_mode_lock_bits = 1, |
443 .ppb_program_one = plj_ppb_program_one, | |
444 .ppb_program_all = plj_ppb_program_all_single, | |
445 .ppb_erase_all = plj_ppb_erase_all_single, | |
437 }; | 446 }; |
438 | 447 |
439 struct flash_device flashdev_PL064J = { | 448 struct flash_device flashdev_PL064J = { |
440 .name = "Spansion S29PL064J", | 449 .name = "Spansion S29PL064J", |
441 .cfi_table = spansion_PL064J_cfi, | 450 .cfi_table = spansion_PL064J_cfi, |
482 {0x10000, 3, 0, 0, 0}, | 491 {0x10000, 3, 0, 0, 0}, |
483 {0x40000, 7, 1, 0, 1}, | 492 {0x40000, 7, 1, 0, 1}, |
484 {0x40000, 24, 1, 1, 1}}, | 493 {0x40000, 24, 1, 1, 1}}, |
485 .have_status_word_3 = 1, | 494 .have_status_word_3 = 1, |
486 .have_mode_lock_bits = 1, | 495 .have_mode_lock_bits = 1, |
496 .ppb_program_one = plj_ppb_program_one, | |
497 .ppb_program_all = plj_ppb_program_all_dualbank, | |
498 .ppb_erase_all = plj_ppb_erase_all_dualbank, | |
487 }; | 499 }; |
488 | 500 |
489 static struct amd_lock_info PL129J_lock_info_1 = { | 501 static struct amd_lock_info PL129J_lock_info_1 = { |
490 .ngroups = 4, | 502 .ngroups = 4, |
491 .groups = { | 503 .groups = { |
492 {0x40000, 24, 1, 1, 1}, | 504 {0x40000, 24, 1, 1, 1}, |
493 {0x40000, 7, 1, 1, 0}, | 505 {0x40000, 7, 1, 1, 0}, |
494 {0x10000, 3, 0, 0, 0}, | 506 {0x10000, 3, 0, 0, 0}, |
495 {0x2000, 8, 0, 0, 1}}, | 507 {0x2000, 8, 0, 0, 1}}, |
496 .have_status_word_3 = 1, | 508 .have_status_word_3 = 1, |
509 .ppb_program_one = plj_ppb_program_one, | |
510 .ppb_program_all = plj_ppb_program_all_dualbank, | |
511 .ppb_erase_all = plj_ppb_erase_all_dualbank, | |
497 }; | 512 }; |
498 | 513 |
499 struct flash_device flashdev_PL129J = { | 514 struct flash_device flashdev_PL129J = { |
500 .name = "Spansion S29PL129J", | 515 .name = "Spansion S29PL129J", |
501 .cfi_table = spansion_PL129J_cfi, | 516 .cfi_table = spansion_PL129J_cfi, |
683 {0x40000, 7, 1, 0, 1}, | 698 {0x40000, 7, 1, 0, 1}, |
684 {0x40000, 24, 1, 1, 1}}, | 699 {0x40000, 24, 1, 1, 1}}, |
685 .have_status_word_3 = 1, | 700 .have_status_word_3 = 1, |
686 .have_status_word_7 = 1, | 701 .have_status_word_7 = 1, |
687 .have_mode_lock_bits = 1, | 702 .have_mode_lock_bits = 1, |
703 .ppb_program_one = plj_ppb_program_one, | |
704 .ppb_program_all = plj_ppb_program_all_dualbank, | |
705 .ppb_erase_all = plj_ppb_erase_all_dualbank, | |
688 }; | 706 }; |
689 | 707 |
690 static struct amd_lock_info K5L29_lock_info_1 = { | 708 static struct amd_lock_info K5L29_lock_info_1 = { |
691 .ngroups = 4, | 709 .ngroups = 4, |
692 .groups = { | 710 .groups = { |
694 {0x40000, 7, 1, 1, 0}, | 712 {0x40000, 7, 1, 1, 0}, |
695 {0x10000, 3, 0, 0, 0}, | 713 {0x10000, 3, 0, 0, 0}, |
696 {0x2000, 8, 0, 0, 1}}, | 714 {0x2000, 8, 0, 0, 1}}, |
697 .have_status_word_3 = 1, | 715 .have_status_word_3 = 1, |
698 .have_status_word_7 = 1, | 716 .have_status_word_7 = 1, |
717 .ppb_program_one = plj_ppb_program_one, | |
718 .ppb_program_all = plj_ppb_program_all_dualbank, | |
719 .ppb_erase_all = plj_ppb_erase_all_dualbank, | |
699 }; | 720 }; |
700 | 721 |
701 struct flash_device flashdev_K5L29xx_A = { | 722 struct flash_device flashdev_K5L29xx_A = { |
702 .name = "Samsung K5L29xx_A", | 723 .name = "Samsung K5L29xx_A", |
703 .cfi_table = samsung_PL129J_equiv_cfi, | 724 .cfi_table = samsung_PL129J_equiv_cfi, |