diff options
author | Rob Purchase <shotofadds@rockbox.org> | 2009-06-24 07:36:56 +0000 |
---|---|---|
committer | Rob Purchase <shotofadds@rockbox.org> | 2009-06-24 07:36:56 +0000 |
commit | 5e24a2c98c9a7eb1b725c9bbb0233f9cf82004fb (patch) | |
tree | a7efb44359a67cffe75382a6af1b265ef4d38ffc | |
parent | 4e3f39fc45f9efe29826ab4d480b3f3df47cd5ac (diff) | |
download | rockbox-5e24a2c98c9a7eb1b725c9bbb0233f9cf82004fb.tar.gz rockbox-5e24a2c98c9a7eb1b725c9bbb0233f9cf82004fb.zip |
Fix an error in the TCC NAND driver which caused a panic on startup for certain users.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21485 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | firmware/target/arm/ata-nand-telechips.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/firmware/target/arm/ata-nand-telechips.c b/firmware/target/arm/ata-nand-telechips.c index ceabf96169..30ca302ce9 100644 --- a/firmware/target/arm/ata-nand-telechips.c +++ b/firmware/target/arm/ata-nand-telechips.c | |||
@@ -822,21 +822,23 @@ int nand_init(void) | |||
822 | 16, spare_buf); | 822 | 16, spare_buf); |
823 | 823 | ||
824 | int type = get_sector_type(spare_buf); | 824 | int type = get_sector_type(spare_buf); |
825 | 825 | ||
826 | #ifdef FTL_V2 | ||
826 | if (type == SECTYPE_MAIN_INPLACE_CACHE) | 827 | if (type == SECTYPE_MAIN_INPLACE_CACHE) |
827 | { | 828 | { |
828 | /* Check last sector of sequential write cache block */ | 829 | /* Since this type of segment is written to sequentially, its |
830 | job is complete if the final page has been written. In this | ||
831 | case we need to treat it as a normal data segment. */ | ||
829 | nand_read_raw(bank, phys_segment_to_page_addr | 832 | nand_read_raw(bank, phys_segment_to_page_addr |
830 | (phys_segment, pages_per_segment - 1), | 833 | (phys_segment, pages_per_segment - 1), |
831 | nand_data->page_size + nand_data->spare_size - 16, | 834 | SECTOR_SIZE, 16, spare_buf); |
832 | 16, spare_buf); | ||
833 | 835 | ||
834 | /* If last sector has been written, treat block as main data */ | ||
835 | if (get_sector_type(spare_buf) != 0xff) | 836 | if (get_sector_type(spare_buf) != 0xff) |
836 | { | 837 | { |
837 | type = SECTYPE_MAIN_DATA; | 838 | type = SECTYPE_MAIN_DATA; |
838 | } | 839 | } |
839 | } | 840 | } |
841 | #endif | ||
840 | 842 | ||
841 | switch (type) | 843 | switch (type) |
842 | { | 844 | { |