Commit 78556820a4ef3f507ec7c26a86d5ac3889d93d1f
1 parent
ca896ef3
CFI-0002 linux MTD compatibility.
* Add an extended table area. * Clear buffer write timeouts to indicate that we dont support it. * Correct device size. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4387 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
25 additions
and
7 deletions
hw/pflash_cfi02.c
... | ... | @@ -608,8 +608,8 @@ pflash_t *pflash_cfi02_register(target_phys_addr_t base, ram_addr_t off, |
608 | 608 | /* Command set (AMD/Fujitsu) */ |
609 | 609 | pfl->cfi_table[0x13] = 0x02; |
610 | 610 | pfl->cfi_table[0x14] = 0x00; |
611 | - /* Primary extended table address (none) */ | |
612 | - pfl->cfi_table[0x15] = 0x00; | |
611 | + /* Primary extended table address */ | |
612 | + pfl->cfi_table[0x15] = 0x31; | |
613 | 613 | pfl->cfi_table[0x16] = 0x00; |
614 | 614 | /* Alternate command set (none) */ |
615 | 615 | pfl->cfi_table[0x17] = 0x00; |
... | ... | @@ -627,22 +627,22 @@ pflash_t *pflash_cfi02_register(target_phys_addr_t base, ram_addr_t off, |
627 | 627 | pfl->cfi_table[0x1E] = 0x00; |
628 | 628 | /* Reserved */ |
629 | 629 | pfl->cfi_table[0x1F] = 0x07; |
630 | - /* Timeout for min size buffer write (16 µs) */ | |
631 | - pfl->cfi_table[0x20] = 0x04; | |
630 | + /* Timeout for min size buffer write (NA) */ | |
631 | + pfl->cfi_table[0x20] = 0x00; | |
632 | 632 | /* Typical timeout for block erase (512 ms) */ |
633 | 633 | pfl->cfi_table[0x21] = 0x09; |
634 | 634 | /* Typical timeout for full chip erase (4096 ms) */ |
635 | 635 | pfl->cfi_table[0x22] = 0x0C; |
636 | 636 | /* Reserved */ |
637 | 637 | pfl->cfi_table[0x23] = 0x01; |
638 | - /* Max timeout for buffer write */ | |
639 | - pfl->cfi_table[0x24] = 0x04; | |
638 | + /* Max timeout for buffer write (NA) */ | |
639 | + pfl->cfi_table[0x24] = 0x00; | |
640 | 640 | /* Max timeout for block erase */ |
641 | 641 | pfl->cfi_table[0x25] = 0x0A; |
642 | 642 | /* Max timeout for chip erase */ |
643 | 643 | pfl->cfi_table[0x26] = 0x0D; |
644 | 644 | /* Device size */ |
645 | - pfl->cfi_table[0x27] = ctz32(chip_len) + 1; | |
645 | + pfl->cfi_table[0x27] = ctz32(chip_len); | |
646 | 646 | /* Flash device interface (8 & 16 bits) */ |
647 | 647 | pfl->cfi_table[0x28] = 0x02; |
648 | 648 | pfl->cfi_table[0x29] = 0x00; |
... | ... | @@ -659,5 +659,23 @@ pflash_t *pflash_cfi02_register(target_phys_addr_t base, ram_addr_t off, |
659 | 659 | pfl->cfi_table[0x2F] = sector_len >> 8; |
660 | 660 | pfl->cfi_table[0x30] = sector_len >> 16; |
661 | 661 | |
662 | + /* Extended */ | |
663 | + pfl->cfi_table[0x31] = 'P'; | |
664 | + pfl->cfi_table[0x32] = 'R'; | |
665 | + pfl->cfi_table[0x33] = 'I'; | |
666 | + | |
667 | + pfl->cfi_table[0x34] = '1'; | |
668 | + pfl->cfi_table[0x35] = '0'; | |
669 | + | |
670 | + pfl->cfi_table[0x36] = 0x00; | |
671 | + pfl->cfi_table[0x37] = 0x00; | |
672 | + pfl->cfi_table[0x38] = 0x00; | |
673 | + pfl->cfi_table[0x39] = 0x00; | |
674 | + | |
675 | + pfl->cfi_table[0x3a] = 0x00; | |
676 | + | |
677 | + pfl->cfi_table[0x3b] = 0x00; | |
678 | + pfl->cfi_table[0x3c] = 0x00; | |
679 | + | |
662 | 680 | return pfl; |
663 | 681 | } | ... | ... |