summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Purchase <shotofadds@rockbox.org>2009-06-24 07:36:56 +0000
committerRob Purchase <shotofadds@rockbox.org>2009-06-24 07:36:56 +0000
commit5e24a2c98c9a7eb1b725c9bbb0233f9cf82004fb (patch)
treea7efb44359a67cffe75382a6af1b265ef4d38ffc
parent4e3f39fc45f9efe29826ab4d480b3f3df47cd5ac (diff)
downloadrockbox-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.c12
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 {