summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Sparmann <theseven@rockbox.org>2009-11-02 22:18:09 +0000
committerMichael Sparmann <theseven@rockbox.org>2009-11-02 22:18:09 +0000
commit890444c91729d1df1489dee3bb4a35815c168151 (patch)
treeebe9eee429da7f59d63804f127e94148da400b66
parent24c1c753640124cdfd2abc0b6bb31035d8d7d634 (diff)
downloadrockbox-890444c91729d1df1489dee3bb4a35815c168151.zip
rockbox-890444c91729d1df1489dee3bb4a35815c168151.tar.gz
rockbox-890444c91729d1df1489dee3bb4a35815c168151.tar.bz2
rockbox-890444c91729d1df1489dee3bb4a35815c168151.tar.xz
Hopefully fix the remaining iPod Nano 2G flash issues, by adding a tiny sleep after resetting the chip. Also remove some evil tabs.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23489 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/target/arm/s5l8700/ipodnano2g/nand-nano2g.c25
1 files changed, 13 insertions, 12 deletions
diff --git a/firmware/target/arm/s5l8700/ipodnano2g/nand-nano2g.c b/firmware/target/arm/s5l8700/ipodnano2g/nand-nano2g.c
index 74d147c..ba10e4f 100644
--- a/firmware/target/arm/s5l8700/ipodnano2g/nand-nano2g.c
+++ b/firmware/target/arm/s5l8700/ipodnano2g/nand-nano2g.c
@@ -186,6 +186,7 @@ uint32_t nand_reset(uint32_t bank)
if (nand_send_cmd(NAND_CMD_RESET)) return 1;
if (nand_wait_chip_ready(bank)) return 1;
FMCTRL1 = FMCTRL1_CLEARRFIFO | FMCTRL1_CLEARWFIFO;
+ sleep(HZ / 100); /* Some chips seem to need this */
return 0;
}
@@ -344,11 +345,11 @@ uint32_t nand_read_page(uint32_t bank, uint32_t page, void* databuffer,
void* sparebuffer, uint32_t doecc,
uint32_t checkempty)
{
- uint8_t* data = nand_data;
- uint8_t* spare = nand_spare;
- if (databuffer && !((uint32_t)databuffer & 0xf))
+ uint8_t* data = nand_data;
+ uint8_t* spare = nand_spare;
+ if (databuffer && !((uint32_t)databuffer & 0xf))
data = (uint8_t*)databuffer;
- if (sparebuffer && !((uint32_t)sparebuffer & 0xf))
+ if (sparebuffer && !((uint32_t)sparebuffer & 0xf))
spare = (uint8_t*)sparebuffer;
mutex_lock(&nand_mtx);
led(true);
@@ -371,7 +372,7 @@ uint32_t nand_read_page(uint32_t bank, uint32_t page, void* databuffer,
{
if (nand_transfer_data(bank, 0, spare, 0x40))
return nand_unlock(1);
- if (sparebuffer && spare != sparebuffer)
+ if (sparebuffer && spare != sparebuffer)
memcpy(sparebuffer, spare, 0x800);
if (checkempty)
rc = nand_check_empty((uint8_t*)sparebuffer) << 1;
@@ -401,19 +402,19 @@ uint32_t nand_read_page(uint32_t bank, uint32_t page, void* databuffer,
uint32_t nand_write_page(uint32_t bank, uint32_t page, void* databuffer,
void* sparebuffer, uint32_t doecc)
{
- uint8_t* data = nand_data;
- uint8_t* spare = nand_spare;
- if (databuffer && !((uint32_t)databuffer & 0xf))
+ uint8_t* data = nand_data;
+ uint8_t* spare = nand_spare;
+ if (databuffer && !((uint32_t)databuffer & 0xf))
data = (uint8_t*)databuffer;
- if (sparebuffer && !((uint32_t)sparebuffer & 0xf))
+ if (sparebuffer && !((uint32_t)sparebuffer & 0xf))
spare = (uint8_t*)sparebuffer;
mutex_lock(&nand_mtx);
led(true);
if (!nand_powered) nand_power_up();
if (sparebuffer)
- {
- if (spare != sparebuffer) memcpy(spare, sparebuffer, 0x40);
- }
+ {
+ if (spare != sparebuffer) memcpy(spare, sparebuffer, 0x40);
+ }
else memset(spare, 0xFF, 0x40);
if (doecc)
{