From 03426804e980c59f6c2882a947759af5b7fd9153 Mon Sep 17 00:00:00 2001 From: Rander Wang Date: Wed, 11 Jul 2018 16:59:24 +0800 Subject: [PATCH] trace: fix IPC timeout issue on APL Refine read pointer, it should rewind to head when it is at tail Signed-off-by: Rander Wang Signed-off-by: Pan Xiuli --- src/lib/dma-trace.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/lib/dma-trace.c b/src/lib/dma-trace.c index 3563e10a8544..1ee8477d9a2a 100644 --- a/src/lib/dma-trace.c +++ b/src/lib/dma-trace.c @@ -87,13 +87,13 @@ static uint64_t trace_work(void *data, uint64_t delay) /* update host pointer and check for wrap */ d->host_offset += size; - if (d->host_offset == d->host_size) - d->host_offset = 0; + if (d->host_offset >= d->host_size) + d->host_offset -= d->host_size; /* update local pointer and check for wrap */ buffer->r_ptr += size; - if (buffer->r_ptr == buffer->end_addr) - buffer->r_ptr = buffer->addr; + if (buffer->r_ptr >= buffer->end_addr) + buffer->r_ptr -= DMA_TRACE_LOCAL_SIZE; out: spin_lock_irq(&d->lock, flags);