summaryrefslogtreecommitdiffstats
path: root/arch/arm/cpu/dma_32.c
blob: 842ea7033a65962f5617dde0cad3a71464b1b881 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <dma.h>
#include <asm/mmu.h>

void arch_sync_dma_for_device(void *vaddr, size_t size,
			      enum dma_data_direction dir)
{
	unsigned long start = (unsigned long)vaddr;
	unsigned long end = start + size;

	if (dir == DMA_FROM_DEVICE) {
		__dma_inv_range(start, end);
		if (outer_cache.inv_range)
			outer_cache.inv_range(start, end);
	} else {
		__dma_clean_range(start, end);
		if (outer_cache.clean_range)
			outer_cache.clean_range(start, end);
	}
}