diff options
Diffstat (limited to 'firmware/target')
-rw-r--r-- | firmware/target/arm/as3525/sd-as3525v2.c | 34 |
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) |