]> git.kernelconcepts.de Git - karo-tx-uboot.git/blob - arch/avr32/include/asm/dma-mapping.h
avr32: use dlmalloc for DMA buffers
[karo-tx-uboot.git] / arch / avr32 / include / asm / dma-mapping.h
1 /*
2  * Copyright (C) 2006 Atmel Corporation
3  *
4  * SPDX-License-Identifier:     GPL-2.0+
5  */
6 #ifndef __ASM_AVR32_DMA_MAPPING_H
7 #define __ASM_AVR32_DMA_MAPPING_H
8
9 #include <asm/io.h>
10 #include <asm/arch/cacheflush.h>
11
12 enum dma_data_direction {
13         DMA_BIDIRECTIONAL       = 0,
14         DMA_TO_DEVICE           = 1,
15         DMA_FROM_DEVICE         = 2,
16 };
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 }
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:
31                 flush_dcache_range((unsigned long)vaddr,
32                                    (unsigned long)vaddr + len);
33                 break;
34         case DMA_TO_DEVICE:
35                 dcache_clean_range(vaddr, len);
36                 break;
37         case DMA_FROM_DEVICE:
38                 invalidate_dcache_range((unsigned long)vaddr,
39                                         (unsigned long)vaddr + len);
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 */