]>
Commit | Line | Data |
---|---|---|
7b64fef3 WD |
1 | /* |
2 | * Copyright (C) 2006 Atmel Corporation | |
3 | * | |
1a459660 | 4 | * SPDX-License-Identifier: GPL-2.0+ |
7b64fef3 WD |
5 | */ |
6 | #ifndef __ASM_AVR32_DMA_MAPPING_H | |
7 | #define __ASM_AVR32_DMA_MAPPING_H | |
8 | ||
9 | #include <asm/io.h> | |
d8f2aa32 | 10 | #include <asm/arch/cacheflush.h> |
7b64fef3 WD |
11 | |
12 | enum dma_data_direction { | |
13 | DMA_BIDIRECTIONAL = 0, | |
14 | DMA_TO_DEVICE = 1, | |
15 | DMA_FROM_DEVICE = 2, | |
16 | }; | |
dbdb5abd AB |
17 | |
18 | static inline void *dma_alloc_coherent(size_t len, unsigned long *handle) | |
19 | { | |
20 | *handle = (unsigned long)memalign(ARCH_DMA_MINALIGN, len); | |
21 | return (void *)*handle; | |
22 | } | |
7b64fef3 WD |
23 | |
24 | static inline unsigned long dma_map_single(volatile void *vaddr, size_t len, | |
25 | enum dma_data_direction dir) | |
26 | { | |
27 | extern void __bad_dma_data_direction(void); | |
28 | ||
29 | switch (dir) { | |
30 | case DMA_BIDIRECTIONAL: | |
0e055435 AB |
31 | flush_dcache_range((unsigned long)vaddr, |
32 | (unsigned long)vaddr + len); | |
7b64fef3 WD |
33 | break; |
34 | case DMA_TO_DEVICE: | |
35 | dcache_clean_range(vaddr, len); | |
36 | break; | |
37 | case DMA_FROM_DEVICE: | |
0e055435 AB |
38 | invalidate_dcache_range((unsigned long)vaddr, |
39 | (unsigned long)vaddr + len); | |
7b64fef3 WD |
40 | break; |
41 | default: | |
42 | /* This will cause a linker error */ | |
43 | __bad_dma_data_direction(); | |
44 | } | |
45 | ||
46 | return virt_to_phys(vaddr); | |
47 | } | |
48 | ||
49 | static inline void dma_unmap_single(volatile void *vaddr, size_t len, | |
50 | unsigned long paddr) | |
51 | { | |
52 | ||
53 | } | |
54 | ||
55 | #endif /* __ASM_AVR32_DMA_MAPPING_H */ |