summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/target/arm/pcm-pp.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/firmware/target/arm/pcm-pp.c b/firmware/target/arm/pcm-pp.c
index 4d716fc..f38757e 100644
--- a/firmware/target/arm/pcm-pp.c
+++ b/firmware/target/arm/pcm-pp.c
@@ -406,6 +406,11 @@ void fiq_record(void)
/* TODO: Figure out how to do IIS loopback */
if (audio_output_source != AUDIO_SRC_PLAYBACK) {
+ if ((IISFIFO_CFG & (0x3f << 16)) >= (16 << 16)) {
+ /* Resync the output FIFO - it ran dry */
+ IISFIFO_WR = 0;
+ IISFIFO_WR = 0;
+ }
IISFIFO_WR = value1;
IISFIFO_WR = value1;
}
@@ -428,6 +433,12 @@ void fiq_record(void)
p_size -= 4;
if (audio_output_source != AUDIO_SRC_PLAYBACK) {
+ if ((IISFIFO_CFG & (0x3f << 16)) >= (16 << 16)) {
+ /* Resync the output FIFO - it ran dry */
+ IISFIFO_WR = 0;
+ IISFIFO_WR = 0;
+ }
+
value1 = *((int32_t *)p - 1);
IISFIFO_WR = value1;
IISFIFO_WR = value1;