summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Sevakis <jethead71@rockbox.org>2007-04-18 02:07:56 +0000
committerMichael Sevakis <jethead71@rockbox.org>2007-04-18 02:07:56 +0000
commit521d6a5e1f1dc3a08700b22db5b203920c9f3bda (patch)
tree1b93cec22149e78987d593424d6492bbcbfbbcad
parent8f8510ed5a8b511239b5e98a8699711fa30467d0 (diff)
downloadrockbox-521d6a5e1f1dc3a08700b22db5b203920c9f3bda.tar.gz
rockbox-521d6a5e1f1dc3a08700b22db5b203920c9f3bda.zip
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
-rw-r--r--firmware/target/coldfire/pcm-coldfire.c9
1 files 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)
367 367
368 /* Start the DMA transfer.. */ 368 /* Start the DMA transfer.. */
369#ifdef HAVE_SPDIF_IN 369#ifdef HAVE_SPDIF_IN
370 INTERRUPTCLEAR = 0x03c00000; 370 /* clear: ebu1cnew, valnogood, symbolerr, parityerr */
371 INTERRUPTCLEAR = (1 << 25) | (1 << 24) | (1 << 23) | (1 << 22);
371#endif 372#endif
372 373
373 SAR1 = (unsigned long)&PDIR2; /* Source address */ 374 SAR1 = (unsigned long)&PDIR2; /* Source address */
@@ -464,9 +465,11 @@ void DMA1(void)
464 } 465 }
465#ifdef HAVE_SPDIF_IN 466#ifdef HAVE_SPDIF_IN
466 else if (DATAINCONTROL == 0xc038 && 467 else if (DATAINCONTROL == 0xc038 &&
467 (INTERRUPTSTAT & 0x01c00000)) /* valnogood, symbolerr, parityerr */ 468 (INTERRUPTSTAT & ((1 << 24) | (1 << 23) | (1 << 22))))
468 { 469 {
469 INTERRUPTCLEAR = 0x03c00000; 470 /* reason: valnogood, symbolerr, parityerr */
471 /* clear: ebu1cnew, valnogood, symbolerr, parityerr */
472 INTERRUPTCLEAR = (1 << 25) | (1 << 24) | (1 << 23) | (1 << 22);
470 status = DMA_REC_ERROR_SPDIF; 473 status = DMA_REC_ERROR_SPDIF;
471 logf("spdif err"); 474 logf("spdif err");
472 } 475 }