diff options
author | Michael Sparmann <theseven@rockbox.org> | 2010-03-14 20:55:43 +0000 |
---|---|---|
committer | Michael Sparmann <theseven@rockbox.org> | 2010-03-14 20:55:43 +0000 |
commit | 9b416c0652b29cac1b1b3ad1a8ce1a627076fadc (patch) | |
tree | 2d7bb411b5b346684a5851e9dff1b15af22733b2 | |
parent | af38e0960ba479af8f6cdbd1d27787037bff99cc (diff) | |
download | rockbox-9b416c0652b29cac1b1b3ad1a8ce1a627076fadc.tar.gz rockbox-9b416c0652b29cac1b1b3ad1a8ce1a627076fadc.zip |
Nano2G NAND: Don't continue reading on that bank if starting the read failed.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25182 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | firmware/target/arm/s5l8700/ipodnano2g/nand-nano2g.c | 29 |
1 files changed, 12 insertions, 17 deletions
diff --git a/firmware/target/arm/s5l8700/ipodnano2g/nand-nano2g.c b/firmware/target/arm/s5l8700/ipodnano2g/nand-nano2g.c index 2b13b55edd..96951b51bc 100644 --- a/firmware/target/arm/s5l8700/ipodnano2g/nand-nano2g.c +++ b/firmware/target/arm/s5l8700/ipodnano2g/nand-nano2g.c @@ -530,28 +530,23 @@ uint32_t nand_read_page_fast(uint32_t page, void* databuffer, nand_last_activity_value = current_tick; led(true); if (!nand_powered) nand_power_up(); + uint8_t status[4]; + for (i = 0; i < 4; i++) status[i] = (nand_type[i] == 0xFFFFFFFF); for (i = 0; i < 4; i++) { - if (nand_type[i] == 0xFFFFFFFF) continue; - nand_set_fmctrl0(i, FMCTRL0_ENABLEDMA); - if (nand_send_cmd(NAND_CMD_READ)) - { - rc |= 1 << (i << 2); - continue; - } - if (nand_send_address(page, databuffer ? 0 : 0x800)) - { - rc |= 1 << (i << 2); - continue; - } - if (nand_send_cmd(NAND_CMD_READ2)) + if (!status[i]) { - rc |= 1 << (i << 2); - continue; + nand_set_fmctrl0(i, FMCTRL0_ENABLEDMA); + if (nand_send_cmd(NAND_CMD_READ)) + status[i] = 1; } + if (!status[i]) + if (nand_send_address(page, 0)) + status[i] = 1; + if (!status[i]) + if (nand_send_cmd(NAND_CMD_READ2)) + status[i] = 1; } - uint8_t status[4]; - for (i = 0; i < 4; i++) status[i] = (nand_type[i] == 0xFFFFFFFF); if (!status[0]) if (nand_wait_status_ready(0)) status[0] = 1; |