diff options
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/target/coldfire/pcm-coldfire.c | 9 |
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 | } |