]> git.ipfire.org Git - people/ms/u-boot.git/blob - arch/avr32/include/asm/dma-mapping.h
Merge remote-tracking branch 'u-boot-samsung/master'
[people/ms/u-boot.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 extern void *dma_alloc_coherent(size_t len, unsigned long *handle);
18
19 static inline unsigned long dma_map_single(volatile void *vaddr, size_t len,
20 enum dma_data_direction dir)
21 {
22 extern void __bad_dma_data_direction(void);
23
24 switch (dir) {
25 case DMA_BIDIRECTIONAL:
26 flush_dcache_range((unsigned long)vaddr,
27 (unsigned long)vaddr + len);
28 break;
29 case DMA_TO_DEVICE:
30 dcache_clean_range(vaddr, len);
31 break;
32 case DMA_FROM_DEVICE:
33 invalidate_dcache_range((unsigned long)vaddr,
34 (unsigned long)vaddr + len);
35 break;
36 default:
37 /* This will cause a linker error */
38 __bad_dma_data_direction();
39 }
40
41 return virt_to_phys(vaddr);
42 }
43
44 static inline void dma_unmap_single(volatile void *vaddr, size_t len,
45 unsigned long paddr)
46 {
47
48 }
49
50 #endif /* __ASM_AVR32_DMA_MAPPING_H */