diff options
author | Michael Sparmann <theseven@rockbox.org> | 2009-11-02 22:18:09 +0000 |
---|---|---|
committer | Michael Sparmann <theseven@rockbox.org> | 2009-11-02 22:18:09 +0000 |
commit | 890444c91729d1df1489dee3bb4a35815c168151 (patch) | |
tree | ebe9eee429da7f59d63804f127e94148da400b66 | |
parent | 24c1c753640124cdfd2abc0b6bb31035d8d7d634 (diff) | |
download | rockbox-890444c91729d1df1489dee3bb4a35815c168151.tar.gz rockbox-890444c91729d1df1489dee3bb4a35815c168151.zip |
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.c | 25 |
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 74d147cb78..ba10e4f9f2 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) | |||
186 | if (nand_send_cmd(NAND_CMD_RESET)) return 1; | 186 | if (nand_send_cmd(NAND_CMD_RESET)) return 1; |
187 | if (nand_wait_chip_ready(bank)) return 1; | 187 | if (nand_wait_chip_ready(bank)) return 1; |
188 | FMCTRL1 = FMCTRL1_CLEARRFIFO | FMCTRL1_CLEARWFIFO; | 188 | FMCTRL1 = FMCTRL1_CLEARRFIFO | FMCTRL1_CLEARWFIFO; |
189 | sleep(HZ / 100); /* Some chips seem to need this */ | ||
189 | return 0; | 190 | return 0; |
190 | } | 191 | } |
191 | 192 | ||
@@ -344,11 +345,11 @@ uint32_t nand_read_page(uint32_t bank, uint32_t page, void* databuffer, | |||
344 | void* sparebuffer, uint32_t doecc, | 345 | void* sparebuffer, uint32_t doecc, |
345 | uint32_t checkempty) | 346 | uint32_t checkempty) |
346 | { | 347 | { |
347 | uint8_t* data = nand_data; | 348 | uint8_t* data = nand_data; |
348 | uint8_t* spare = nand_spare; | 349 | uint8_t* spare = nand_spare; |
349 | if (databuffer && !((uint32_t)databuffer & 0xf)) | 350 | if (databuffer && !((uint32_t)databuffer & 0xf)) |
350 | data = (uint8_t*)databuffer; | 351 | data = (uint8_t*)databuffer; |
351 | if (sparebuffer && !((uint32_t)sparebuffer & 0xf)) | 352 | if (sparebuffer && !((uint32_t)sparebuffer & 0xf)) |
352 | spare = (uint8_t*)sparebuffer; | 353 | spare = (uint8_t*)sparebuffer; |
353 | mutex_lock(&nand_mtx); | 354 | mutex_lock(&nand_mtx); |
354 | led(true); | 355 | led(true); |
@@ -371,7 +372,7 @@ uint32_t nand_read_page(uint32_t bank, uint32_t page, void* databuffer, | |||
371 | { | 372 | { |
372 | if (nand_transfer_data(bank, 0, spare, 0x40)) | 373 | if (nand_transfer_data(bank, 0, spare, 0x40)) |
373 | return nand_unlock(1); | 374 | return nand_unlock(1); |
374 | if (sparebuffer && spare != sparebuffer) | 375 | if (sparebuffer && spare != sparebuffer) |
375 | memcpy(sparebuffer, spare, 0x800); | 376 | memcpy(sparebuffer, spare, 0x800); |
376 | if (checkempty) | 377 | if (checkempty) |
377 | rc = nand_check_empty((uint8_t*)sparebuffer) << 1; | 378 | 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, | |||
401 | uint32_t nand_write_page(uint32_t bank, uint32_t page, void* databuffer, | 402 | uint32_t nand_write_page(uint32_t bank, uint32_t page, void* databuffer, |
402 | void* sparebuffer, uint32_t doecc) | 403 | void* sparebuffer, uint32_t doecc) |
403 | { | 404 | { |
404 | uint8_t* data = nand_data; | 405 | uint8_t* data = nand_data; |
405 | uint8_t* spare = nand_spare; | 406 | uint8_t* spare = nand_spare; |
406 | if (databuffer && !((uint32_t)databuffer & 0xf)) | 407 | if (databuffer && !((uint32_t)databuffer & 0xf)) |
407 | data = (uint8_t*)databuffer; | 408 | data = (uint8_t*)databuffer; |
408 | if (sparebuffer && !((uint32_t)sparebuffer & 0xf)) | 409 | if (sparebuffer && !((uint32_t)sparebuffer & 0xf)) |
409 | spare = (uint8_t*)sparebuffer; | 410 | spare = (uint8_t*)sparebuffer; |
410 | mutex_lock(&nand_mtx); | 411 | mutex_lock(&nand_mtx); |
411 | led(true); | 412 | led(true); |
412 | if (!nand_powered) nand_power_up(); | 413 | if (!nand_powered) nand_power_up(); |
413 | if (sparebuffer) | 414 | if (sparebuffer) |
414 | { | 415 | { |
415 | if (spare != sparebuffer) memcpy(spare, sparebuffer, 0x40); | 416 | if (spare != sparebuffer) memcpy(spare, sparebuffer, 0x40); |
416 | } | 417 | } |
417 | else memset(spare, 0xFF, 0x40); | 418 | else memset(spare, 0xFF, 0x40); |
418 | if (doecc) | 419 | if (doecc) |
419 | { | 420 | { |