2 * Copyright (C) 2006 Atmel Corporation
4 * SPDX-License-Identifier: GPL-2.0+
6 #ifndef __ASM_AVR32_DMA_MAPPING_H
7 #define __ASM_AVR32_DMA_MAPPING_H
10 #include <asm/arch/cacheflush.h>
12 enum dma_data_direction {
13 DMA_BIDIRECTIONAL = 0,
18 static inline void *dma_alloc_coherent(size_t len, unsigned long *handle)
20 *handle = (unsigned long)memalign(ARCH_DMA_MINALIGN, len);
21 return (void *)*handle;
24 static inline unsigned long dma_map_single(volatile void *vaddr, size_t len,
25 enum dma_data_direction dir)
27 extern void __bad_dma_data_direction(void);
30 case DMA_BIDIRECTIONAL:
31 flush_dcache_range((unsigned long)vaddr,
32 (unsigned long)vaddr + len);
35 dcache_clean_range(vaddr, len);
38 invalidate_dcache_range((unsigned long)vaddr,
39 (unsigned long)vaddr + len);
42 /* This will cause a linker error */
43 __bad_dma_data_direction();
46 return virt_to_phys(vaddr);
49 static inline void dma_unmap_single(volatile void *vaddr, size_t len,
55 #endif /* __ASM_AVR32_DMA_MAPPING_H */