From f748d3b49fc10097ecfb0b0b4a0b6c6d73cf4914 Mon Sep 17 00:00:00 2001 From: Jens Arnold Date: Fri, 19 Sep 2008 20:17:17 +0000 Subject: Some more size optimisations, giving a tiny write speedup as well. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18552 a1c6a512-1295-4272-9138-f99709370657 --- firmware/drivers/ata_mmc.c | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/firmware/drivers/ata_mmc.c b/firmware/drivers/ata_mmc.c index 447bd8bec6..1040ab067f 100644 --- a/firmware/drivers/ata_mmc.c +++ b/firmware/drivers/ata_mmc.c @@ -643,7 +643,7 @@ int ata_read_sectors(IF_MV2(int drive,) rc = -3; goto error; } - while (incount-- > lastblock) + while (--incount >= lastblock) { rc = receive_block(inbuf, card->read_timeout); if (rc) @@ -730,25 +730,17 @@ int ata_write_sectors(IF_MV2(int drive,) rc = -2; goto error; } - - while (--count > 0) + while (--count >= 0) { - rc = send_block_send(start_token, card->write_timeout, true); + rc = send_block_send(start_token, card->write_timeout, count > 0); if (rc) { rc = rc * 10 - 3; break; + /* If an error occurs during multiple block writing, + * the STOP_TRAN token still needs to be sent. */ } } - if (rc == 0) - { - rc = send_block_send(start_token, card->write_timeout, false); - if (rc) - rc = rc * 10 - 4; - } - /* If an error occurs during multiple block writing, the STOP_TRAN token - * still needs to be sent, hence the special error handling above. */ - if (write_cmd == CMD_WRITE_MULTIPLE_BLOCK) { static const unsigned char stop_tran = DT_STOP_TRAN; -- cgit v1.2.3