diff options
| author | Rafaël Carré <rafael.carre@gmail.com> | 2010-02-21 22:49:57 +0000 |
|---|---|---|
| committer | Rafaël Carré <rafael.carre@gmail.com> | 2010-02-21 22:49:57 +0000 |
| commit | 1ae6307a5a104b817d027abe90f2925bbdc9d4fa (patch) | |
| tree | 5de2365c7a0422a9da3515bf8b055774dfa254a4 | |
| parent | c6af5c962d04e482dddb3693c7f9ed73f638a5ea (diff) | |
| download | rockbox-1ae6307a5a104b817d027abe90f2925bbdc9d4fa.zip rockbox-1ae6307a5a104b817d027abe90f2925bbdc9d4fa.tar.gz rockbox-1ae6307a5a104b817d027abe90f2925bbdc9d4fa.tar.bz2 rockbox-1ae6307a5a104b817d027abe90f2925bbdc9d4fa.tar.xz | |
sd-as3525v2: panic in case of error in the isr
Disable errors on response timeout since it can happen on SD_SEND_IF_COND
Disable errors on start bit error : it's ignored by the linux driver
No panic on my side with those 2 bits unchecked, but no transfer
completion either.
Note: the Linux driver doesn't implement DMA
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24837 a1c6a512-1295-4272-9138-f99709370657
| -rw-r--r-- | firmware/target/arm/as3525/sd-as3525v2.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/firmware/target/arm/as3525/sd-as3525v2.c b/firmware/target/arm/as3525/sd-as3525v2.c index 477f61e..db1dbbb 100644 --- a/firmware/target/arm/as3525/sd-as3525v2.c +++ b/firmware/target/arm/as3525/sd-as3525v2.c @@ -158,9 +158,9 @@ static void printf(const char *format, ...) #define MCI_INT_EBE (1<<15) /* end bit error */ #define MCI_INT_SDIO (0xf<<16) -#define MCI_ERROR (MCI_INT_RE | MCI_INT_RCRC | MCI_INT_DCRC | MCI_INT_RTO \ +#define MCI_ERROR (MCI_INT_RE | MCI_INT_RCRC | MCI_INT_DCRC /*| MCI_INT_RTO*/ \ | MCI_INT_DRTO | MCI_INT_HTO | MCI_INT_FRUN | MCI_INT_HLE \ - | MCI_INT_SBE | MCI_INT_EBE) + /*| MCI_INT_SBE*/ | MCI_INT_EBE) #define MCI_FIFOTH SD_REG(0x4C) /* FIFO threshold */ /* TX watermark : bits 11:0 @@ -225,7 +225,10 @@ void INT_NAND(void) MCI_RAW_STATUS = status; /* clear status */ if(status & MCI_ERROR) + { + panicf("status 0x%8x", status); retry = true; + } else if(status & MCI_INT_DTO) wakeup_signal(&transfer_completion_signal); |