summaryrefslogtreecommitdiff
path: root/firmware/target
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target')
-rw-r--r--firmware/target/arm/as3525/sd-as3525v2.c34
1 files changed, 14 insertions, 20 deletions
diff --git a/firmware/target/arm/as3525/sd-as3525v2.c b/firmware/target/arm/as3525/sd-as3525v2.c
index 9698a149ed..4e550a96d4 100644
--- a/firmware/target/arm/as3525/sd-as3525v2.c
+++ b/firmware/target/arm/as3525/sd-as3525v2.c
@@ -744,19 +744,6 @@ static int sd_transfer_sectors(IF_MD2(int drive,) unsigned long start,
744#endif 744#endif
745 745
746 last_disk_activity = current_tick; 746 last_disk_activity = current_tick;
747 ret = sd_wait_for_state(drive, SD_TRAN);
748 if (ret < 0)
749 {
750 static const char *st[9] = {
751 "IDLE", "RDY", "IDENT", "STBY", "TRAN", "DATA", "RCV", "PRG", "DIS"
752 };
753 if(ret <= -10)
754 panicf("wait for state failed (%s) %d", st[(-ret / 10) % 9], drive);
755 else
756 panicf("wait for state failed");
757 goto sd_transfer_error;
758 }
759
760 dma_retain(); 747 dma_retain();
761 748
762 const int cmd = write ? SD_WRITE_MULTIPLE_BLOCK : SD_READ_MULTIPLE_BLOCK; 749 const int cmd = write ? SD_WRITE_MULTIPLE_BLOCK : SD_READ_MULTIPLE_BLOCK;
@@ -781,6 +768,20 @@ static int sd_transfer_sectors(IF_MD2(int drive,) unsigned long start,
781 while(MCI_CTRL & (FIFO_RESET|DMA_RESET)) 768 while(MCI_CTRL & (FIFO_RESET|DMA_RESET))
782 ; 769 ;
783 770
771 ret = sd_wait_for_state(drive, SD_TRAN);
772 if (ret < 0)
773 {
774 static const char *st[9] = {
775 "IDLE", "RDY", "IDENT", "STBY", "TRAN", "DATA", "RCV",
776 "PRG", "DIS"};
777 if(ret <= -10)
778 panicf("wait for TRAN state failed (%s) %d",
779 st[(-ret / 10) % 9], drive);
780 else
781 panicf("wait for state failed");
782 goto sd_transfer_error;
783 }
784
784 MCI_CTRL |= DMA_ENABLE; 785 MCI_CTRL |= DMA_ENABLE;
785 MCI_MASK = MCI_INT_CD|MCI_INT_DTO|MCI_INT_DCRC|MCI_INT_DRTO| \ 786 MCI_MASK = MCI_INT_CD|MCI_INT_DTO|MCI_INT_DCRC|MCI_INT_DRTO| \
786 MCI_INT_HTO|MCI_INT_FRUN|MCI_INT_HLE|MCI_INT_SBE|MCI_INT_EBE; 787 MCI_INT_HTO|MCI_INT_FRUN|MCI_INT_HLE|MCI_INT_SBE|MCI_INT_EBE;
@@ -816,13 +817,6 @@ static int sd_transfer_sectors(IF_MD2(int drive,) unsigned long start,
816 goto sd_transfer_error; 817 goto sd_transfer_error;
817 } 818 }
818 819
819 ret = sd_wait_for_state(drive, SD_TRAN);
820 if (ret < 0)
821 {
822 panicf(" wait for state TRAN failed (%d)", ret);
823 goto sd_transfer_error;
824 }
825
826 if(!retry) 820 if(!retry)
827 { 821 {
828 if(!write) 822 if(!write)