summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/target/arm/as3525/sd-as3525v2.c25
1 files changed, 18 insertions, 7 deletions
diff --git a/firmware/target/arm/as3525/sd-as3525v2.c b/firmware/target/arm/as3525/sd-as3525v2.c
index 4e550a96d4..b696908157 100644
--- a/firmware/target/arm/as3525/sd-as3525v2.c
+++ b/firmware/target/arm/as3525/sd-as3525v2.c
@@ -184,9 +184,20 @@
184 * & 0x418 = MCI_INT_DTO | MCI_INT_TXDR | MCI_INT_HTO 184 * & 0x418 = MCI_INT_DTO | MCI_INT_TXDR | MCI_INT_HTO
185 */ 185 */
186 186
187#define MCI_ERROR (MCI_INT_RE | MCI_INT_RCRC | MCI_INT_DCRC /*| MCI_INT_RTO*/ \ 187#define MCI_CMD_ERROR \
188 | MCI_INT_DRTO | MCI_INT_HTO | MCI_INT_FRUN | MCI_INT_HLE \ 188 (MCI_INT_RE | \
189 | MCI_INT_SBE | MCI_INT_EBE) 189 MCI_INT_RCRC | \
190 MCI_INT_RTO | \
191 MCI_INT_HLE)
192
193#define MCI_DATA_ERROR \
194 ( MCI_INT_DCRC | \
195 MCI_INT_DRTO | \
196 MCI_INT_HTO | \
197 MCI_INT_FRUN | \
198 MCI_INT_HLE | \
199 MCI_INT_SBE | \
200 MCI_INT_EBE)
190 201
191#define MCI_STATUS SD_REG(0x48) 202#define MCI_STATUS SD_REG(0x48)
192 203
@@ -340,10 +351,10 @@ void INT_NAND(void)
340 351
341 MCI_RAW_STATUS = status; /* clear status */ 352 MCI_RAW_STATUS = status; /* clear status */
342 353
343 if(status & MCI_ERROR) 354 if(status & MCI_DATA_ERROR)
344 retry = true; 355 retry = true;
345 356
346 if(data_transfer && status & (MCI_INT_DTO|MCI_ERROR)) 357 if(data_transfer && status & (MCI_INT_DTO|MCI_DATA_ERROR))
347 wakeup_signal(&transfer_completion_signal); 358 wakeup_signal(&transfer_completion_signal);
348 359
349 MCI_CTRL |= INT_ENABLE; 360 MCI_CTRL |= INT_ENABLE;
@@ -782,9 +793,9 @@ static int sd_transfer_sectors(IF_MD2(int drive,) unsigned long start,
782 goto sd_transfer_error; 793 goto sd_transfer_error;
783 } 794 }
784 795
796
797 MCI_MASK = MCI_DATA_ERROR | MCI_INT_DTO;
785 MCI_CTRL |= DMA_ENABLE; 798 MCI_CTRL |= DMA_ENABLE;
786 MCI_MASK = MCI_INT_CD|MCI_INT_DTO|MCI_INT_DCRC|MCI_INT_DRTO| \
787 MCI_INT_HTO|MCI_INT_FRUN|MCI_INT_HLE|MCI_INT_SBE|MCI_INT_EBE;
788 799
789 MCI_FIFOTH &= MCI_FIFOTH_MASK; 800 MCI_FIFOTH &= MCI_FIFOTH_MASK;
790 MCI_FIFOTH |= 0x503f0080; 801 MCI_FIFOTH |= 0x503f0080;