firmware/target/arm/as3525/sd-as3525v2.c |   16 ++--------------
 1 files changed, 2 insertions(+), 14 deletions(-)

diff --git a/firmware/target/arm/as3525/sd-as3525v2.c b/firmware/target/arm/as3525/sd-as3525v2.c
index ee2a09a..fda21a8 100644
--- a/firmware/target/arm/as3525/sd-as3525v2.c
+++ b/firmware/target/arm/as3525/sd-as3525v2.c
@@ -846,20 +846,6 @@ static int sd_transfer_sectors(IF_MD2(int drive,) unsigned long start,

         MCI_BYTCNT = transfer * SD_BLOCK_SIZE;

-        ret = sd_wait_for_state(drive, SD_TRAN);
-        if (ret < 0)
-        {
-            static const char *st[9] = {
-                "IDLE", "RDY", "IDENT", "STBY", "TRAN", "DATA", "RCV",
-                                                                "PRG", "DIS"};
-            if(ret <= -10)
-                panicf("wait for TRAN state failed (%s) %d",
-                                                    st[(-ret / 10) % 9], drive);
-            else
-                panicf("wait for state failed");
-            goto sd_transfer_error;
-        }
-
         int arg = start;
         if(!(card_info[drive].ocr & (1<<30))) /* not SDHC */
             arg *= SD_BLOCK_SIZE;
@@ -871,6 +857,8 @@ static int sd_transfer_sectors(IF_MD2(int drive,) unsigned long start,
             dma_enable_channel(0, MCI_FIFO, dma_buf, DMA_PERI_SD,
                 DMAC_FLOWCTRL_PERI_PERI_TO_MEM, false, true, 0, DMA_S8, NULL);

+        while(MCI_STATUS & DATA_BUSY);
+
         unsigned long dummy; /* if we don't ask for a response, writing fails */
         if(!send_cmd(drive, cmd, arg, MCI_RESP, &dummy))
             panicf("%s multiple blocks failed", write ? "write" : "read");