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");