From 521d6a5e1f1dc3a08700b22db5b203920c9f3bda Mon Sep 17 00:00:00 2001 From: Michael Sevakis Date: Wed, 18 Apr 2007 02:07:56 +0000 Subject: H100 S/PDIF recording: Check and clear the correct interrupt bits when recording from digital in. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13198 a1c6a512-1295-4272-9138-f99709370657 --- firmware/target/coldfire/pcm-coldfire.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/firmware/target/coldfire/pcm-coldfire.c b/firmware/target/coldfire/pcm-coldfire.c index ee9dfb3a3e..faddf70470 100644 --- a/firmware/target/coldfire/pcm-coldfire.c +++ b/firmware/target/coldfire/pcm-coldfire.c @@ -367,7 +367,8 @@ void pcm_rec_dma_start(void *addr, size_t size) /* Start the DMA transfer.. */ #ifdef HAVE_SPDIF_IN - INTERRUPTCLEAR = 0x03c00000; + /* clear: ebu1cnew, valnogood, symbolerr, parityerr */ + INTERRUPTCLEAR = (1 << 25) | (1 << 24) | (1 << 23) | (1 << 22); #endif SAR1 = (unsigned long)&PDIR2; /* Source address */ @@ -464,9 +465,11 @@ void DMA1(void) } #ifdef HAVE_SPDIF_IN else if (DATAINCONTROL == 0xc038 && - (INTERRUPTSTAT & 0x01c00000)) /* valnogood, symbolerr, parityerr */ + (INTERRUPTSTAT & ((1 << 24) | (1 << 23) | (1 << 22)))) { - INTERRUPTCLEAR = 0x03c00000; + /* reason: valnogood, symbolerr, parityerr */ + /* clear: ebu1cnew, valnogood, symbolerr, parityerr */ + INTERRUPTCLEAR = (1 << 25) | (1 << 24) | (1 << 23) | (1 << 22); status = DMA_REC_ERROR_SPDIF; logf("spdif err"); } -- cgit v1.2.3