From: Andrew Davis Date: Fri, 6 Jan 2023 18:02:50 +0000 (-0600) Subject: common: bouncebuf: Use dma-mapping for cache ops X-Git-Url: http://git.dujemihanovic.xyz/img/sics.gif?a=commitdiff_plain;h=b75ca26b227a6fef9d5fffb9738655cbcbd8379b;p=u-boot.git common: bouncebuf: Use dma-mapping for cache ops This matches how this would be done in Linux and these functions do the alignment for us which makes the code look cleaner. Signed-off-by: Andrew Davis Reviewed-by: Simon Glass --- diff --git a/common/bouncebuf.c b/common/bouncebuf.c index 6d98920de6..93a35668cc 100644 --- a/common/bouncebuf.c +++ b/common/bouncebuf.c @@ -12,6 +12,7 @@ #include #include #include +#include static int addr_aligned(struct bounce_buffer *state) { @@ -59,9 +60,9 @@ int bounce_buffer_start_extalign(struct bounce_buffer *state, void *data, * Flush data to RAM so DMA reads can pick it up, * and any CPU writebacks don't race with DMA writes */ - flush_dcache_range((unsigned long)state->bounce_buffer, - (unsigned long)(state->bounce_buffer) + - state->len_aligned); + dma_map_single(state->bounce_buffer, + state->len_aligned, + DMA_BIDIRECTIONAL); return 0; } @@ -78,9 +79,9 @@ int bounce_buffer_stop(struct bounce_buffer *state) { if (state->flags & GEN_BB_WRITE) { /* Invalidate cache so that CPU can see any newly DMA'd data */ - invalidate_dcache_range((unsigned long)state->bounce_buffer, - (unsigned long)(state->bounce_buffer) + - state->len_aligned); + dma_unmap_single((dma_addr_t)state->bounce_buffer, + state->len_aligned, + DMA_BIDIRECTIONAL); } if (state->bounce_buffer == state->user_buffer)