summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/target/arm/as3525/sd-as3525v2.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/firmware/target/arm/as3525/sd-as3525v2.c b/firmware/target/arm/as3525/sd-as3525v2.c
index 992db4d307..a440fb57ff 100644
--- a/firmware/target/arm/as3525/sd-as3525v2.c
+++ b/firmware/target/arm/as3525/sd-as3525v2.c
@@ -790,14 +790,12 @@ static int sd_transfer_sectors(IF_MD2(int drive,) unsigned long start,
790 MCI_FIFOTH |= 0x503f0080; 790 MCI_FIFOTH |= 0x503f0080;
791 791
792 792
793 if(card_info[drive].ocr & (1<<30) ) /* SDHC */ 793 int arg = start;
794 ret = send_cmd(drive, cmd, start, MCI_NO_RESP, NULL); 794 if(!(card_info[drive].ocr & (1<<30))) /* not SDHC */
795 else 795 arg *= SD_BLOCK_SIZE;
796 ret = send_cmd(drive, cmd, start * SD_BLOCK_SIZE,
797 MCI_NO_RESP, NULL);
798 796
799 if (ret < 0) 797 if(!send_cmd(drive, cmd, arg, MCI_NO_RESP, NULL))
800 panicf("transfer multiple blocks failed (%d)", ret); 798 panicf("%s multiple blocks failed", write ? "write" : "read");
801 799
802 if(write) 800 if(write)
803 dma_enable_channel(0, dma_buf, MCI_FIFO, DMA_PERI_SD, 801 dma_enable_channel(0, dma_buf, MCI_FIFO, DMA_PERI_SD,