From eb9ac60674860496a0ecf97d5d8a49bd7e20ee10 Mon Sep 17 00:00:00 2001 From: Tomasz Lauda Date: Wed, 30 Oct 2019 12:54:18 +0100 Subject: [PATCH] host: dai: handle dma buffer in cache functions Adds missing writebacks and invalidations of DMA buffer in host and dai components. Signed-off-by: Tomasz Lauda --- src/audio/dai.c | 4 ++++ src/audio/host.c | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/audio/dai.c b/src/audio/dai.c index f8198221a3c6..5443fb6a4852 100644 --- a/src/audio/dai.c +++ b/src/audio/dai.c @@ -870,6 +870,8 @@ static void dai_cache(struct comp_dev *dev, int cmd) dma_sg_cache_wb_inv(&dd->config.elem_array); + dcache_writeback_invalidate_region(dd->dma_buffer, + sizeof(*dd->dma_buffer)); dcache_writeback_invalidate_region(dd->dai, sizeof(*dd->dai)); dcache_writeback_invalidate_region(dd->dma, sizeof(*dd->dma)); dcache_writeback_invalidate_region(dd, sizeof(*dd)); @@ -885,6 +887,8 @@ static void dai_cache(struct comp_dev *dev, int cmd) dcache_invalidate_region(dd, sizeof(*dd)); dcache_invalidate_region(dd->dma, sizeof(*dd->dma)); dcache_invalidate_region(dd->dai, sizeof(*dd->dai)); + dcache_invalidate_region(dd->dma_buffer, + sizeof(*dd->dma_buffer)); dma_sg_cache_inv(&dd->config.elem_array); break; diff --git a/src/audio/host.c b/src/audio/host.c index b75ca4f2b59e..f4d0841e60df 100644 --- a/src/audio/host.c +++ b/src/audio/host.c @@ -800,6 +800,8 @@ static void host_cache(struct comp_dev *dev, int cmd) dma_sg_cache_wb_inv(&hd->config.elem_array); dma_sg_cache_wb_inv(&hd->local.elem_array); + dcache_writeback_invalidate_region(hd->dma_buffer, + sizeof(*hd->dma_buffer)); dcache_writeback_invalidate_region(hd->dma, sizeof(*hd->dma)); dcache_writeback_invalidate_region(hd, sizeof(*hd)); dcache_writeback_invalidate_region(dev, sizeof(*dev)); @@ -814,6 +816,8 @@ static void host_cache(struct comp_dev *dev, int cmd) dcache_invalidate_region(hd, sizeof(*hd)); dcache_invalidate_region(hd->dma, sizeof(*hd->dma)); + dcache_invalidate_region(hd->dma_buffer, + sizeof(*hd->dma_buffer)); dma_sg_cache_inv(&hd->local.elem_array); dma_sg_cache_inv(&hd->config.elem_array);