From 9b416c0652b29cac1b1b3ad1a8ce1a627076fadc Mon Sep 17 00:00:00 2001 From: Michael Sparmann Date: Sun, 14 Mar 2010 20:55:43 +0000 Subject: [PATCH] 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 --- .../arm/s5l8700/ipodnano2g/nand-nano2g.c | 35 ++++++++----------- 1 file changed, 15 insertions(+), 20 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(); - 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)) - { - rc |= 1 << (i << 2); - continue; - } - } uint8_t status[4]; for (i = 0; i < 4; i++) status[i] = (nand_type[i] == 0xFFFFFFFF); + for (i = 0; i < 4; i++) + { + if (!status[i]) + { + 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; + } if (!status[0]) if (nand_wait_status_ready(0)) status[0] = 1;