diff options
author | Michael Sparmann <theseven@rockbox.org> | 2010-03-03 02:36:15 +0000 |
---|---|---|
committer | Michael Sparmann <theseven@rockbox.org> | 2010-03-03 02:36:15 +0000 |
commit | aadecdd77e42d47b33e0a440c4e3955378cdfd70 (patch) | |
tree | 32202030011b7a7ec916ef9240a11255357cdc26 /firmware/target/arm/s5l8700/ipodnano2g/nand-nano2g.c | |
parent | b8eb44d7dbbc89eef1bc89dc109aea4ba8001470 (diff) | |
download | rockbox-aadecdd77e42d47b33e0a440c4e3955378cdfd70.tar.gz rockbox-aadecdd77e42d47b33e0a440c4e3955378cdfd70.zip |
Fix numerous non-critical iPod Nano 2G FTL bugs
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24999 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/arm/s5l8700/ipodnano2g/nand-nano2g.c')
-rw-r--r-- | firmware/target/arm/s5l8700/ipodnano2g/nand-nano2g.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/firmware/target/arm/s5l8700/ipodnano2g/nand-nano2g.c b/firmware/target/arm/s5l8700/ipodnano2g/nand-nano2g.c index 7961b94f7f..3b5f88d3c2 100644 --- a/firmware/target/arm/s5l8700/ipodnano2g/nand-nano2g.c +++ b/firmware/target/arm/s5l8700/ipodnano2g/nand-nano2g.c | |||
@@ -406,9 +406,12 @@ uint32_t nand_read_page(uint32_t bank, uint32_t page, void* databuffer, | |||
406 | return nand_unlock(rc); | 406 | return nand_unlock(rc); |
407 | } | 407 | } |
408 | if (nand_transfer_data(bank, 0, spare, 0x40)) return nand_unlock(1); | 408 | if (nand_transfer_data(bank, 0, spare, 0x40)) return nand_unlock(1); |
409 | memcpy(nand_ecc, &spare[0xC], 0x28); | 409 | if (databuffer) |
410 | rc |= (ecc_decode(3, data, nand_ecc) & 0xF) << 4; | 410 | { |
411 | if (databuffer && data != databuffer) memcpy(databuffer, data, 0x800); | 411 | memcpy(nand_ecc, &spare[0xC], 0x28); |
412 | rc |= (ecc_decode(3, data, nand_ecc) & 0xF) << 4; | ||
413 | if (data != databuffer) memcpy(databuffer, data, 0x800); | ||
414 | } | ||
412 | memset(nand_ctrl, 0xFF, 0x200); | 415 | memset(nand_ctrl, 0xFF, 0x200); |
413 | memcpy(nand_ctrl, spare, 0xC); | 416 | memcpy(nand_ctrl, spare, 0xC); |
414 | memcpy(nand_ecc, &spare[0x34], 0xC); | 417 | memcpy(nand_ecc, &spare[0x34], 0xC); |