summaryrefslogtreecommitdiff
path: root/firmware/target/arm/s5l8700/ipodnano2g/ftl-nano2g.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/s5l8700/ipodnano2g/ftl-nano2g.c')
-rw-r--r--firmware/target/arm/s5l8700/ipodnano2g/ftl-nano2g.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/firmware/target/arm/s5l8700/ipodnano2g/ftl-nano2g.c b/firmware/target/arm/s5l8700/ipodnano2g/ftl-nano2g.c
index e4abcafba8..15c97ccb0d 100644
--- a/firmware/target/arm/s5l8700/ipodnano2g/ftl-nano2g.c
+++ b/firmware/target/arm/s5l8700/ipodnano2g/ftl-nano2g.c
@@ -1778,6 +1778,8 @@ uint32_t ftl_sync(void)
1778 uint32_t ppb = (*ftl_nand_type).pagesperblock * ftl_banks; 1778 uint32_t ppb = (*ftl_nand_type).pagesperblock * ftl_banks;
1779 if (ftl_cxt.clean_flag == 1) return 0; 1779 if (ftl_cxt.clean_flag == 1) return 0;
1780 1780
1781 mutex_lock(&ftl_mtx);
1782
1781 if (ftl_cxt.swapcounter >= 20) 1783 if (ftl_cxt.swapcounter >= 20)
1782 for (i = 0; i < 4; i++) 1784 for (i = 0; i < 4; i++)
1783 if (ftl_swap_blocks() == 0) 1785 if (ftl_swap_blocks() == 0)
@@ -1793,10 +1795,19 @@ uint32_t ftl_sync(void)
1793 rc |= ftl_commit_sequential(&ftl_log[i]); 1795 rc |= ftl_commit_sequential(&ftl_log[i]);
1794 else rc |= ftl_commit_scattered(&ftl_log[i]); 1796 else rc |= ftl_commit_scattered(&ftl_log[i]);
1795 } 1797 }
1796 if (rc != 0) return 1; 1798 if (rc != 0)
1799 {
1800 mutex_unlock(&ftl_mtx);
1801 return 1;
1802 }
1797 for (i = 0; i < 5; i++) 1803 for (i = 0; i < 5; i++)
1798 if (ftl_commit_cxt() == 0) return 0; 1804 if (ftl_commit_cxt() == 0)
1805 {
1806 mutex_unlock(&ftl_mtx);
1807 return 0;
1808 }
1799 else ftl_cxt.ftlctrlpage |= ppb - 1; 1809 else ftl_cxt.ftlctrlpage |= ppb - 1;
1810 mutex_unlock(&ftl_mtx);
1800 return 1; 1811 return 1;
1801} 1812}
1802#endif 1813#endif