|
15 | 15 | #include <linux/bug.h>
|
16 | 16 | #include <asm/cacheflush.h>
|
17 | 17 |
|
18 |
| -#define NOT_COHERENT_CACHE |
19 |
| - |
20 | 18 | static void *dma_nommu_alloc_coherent(struct device *dev, size_t size,
|
21 | 19 | dma_addr_t *dma_handle, gfp_t flag,
|
22 | 20 | unsigned long attrs)
|
23 | 21 | {
|
24 |
| -#ifdef NOT_COHERENT_CACHE |
25 | 22 | return consistent_alloc(flag, size, dma_handle);
|
26 |
| -#else |
27 |
| - void *ret; |
28 |
| - struct page *page; |
29 |
| - int node = dev_to_node(dev); |
30 |
| - |
31 |
| - /* ignore region specifiers */ |
32 |
| - flag &= ~(__GFP_HIGHMEM); |
33 |
| - |
34 |
| - page = alloc_pages_node(node, flag, get_order(size)); |
35 |
| - if (page == NULL) |
36 |
| - return NULL; |
37 |
| - ret = page_address(page); |
38 |
| - memset(ret, 0, size); |
39 |
| - *dma_handle = virt_to_phys(ret); |
40 |
| - |
41 |
| - return ret; |
42 |
| -#endif |
43 | 23 | }
|
44 | 24 |
|
45 | 25 | static void dma_nommu_free_coherent(struct device *dev, size_t size,
|
46 | 26 | void *vaddr, dma_addr_t dma_handle,
|
47 | 27 | unsigned long attrs)
|
48 | 28 | {
|
49 |
| -#ifdef NOT_COHERENT_CACHE |
50 | 29 | consistent_free(size, vaddr);
|
51 |
| -#else |
52 |
| - free_pages((unsigned long)vaddr, get_order(size)); |
53 |
| -#endif |
54 | 30 | }
|
55 | 31 |
|
56 | 32 | static inline void __dma_sync(unsigned long paddr,
|
@@ -186,12 +162,8 @@ int dma_nommu_mmap_coherent(struct device *dev, struct vm_area_struct *vma,
|
186 | 162 | if (off >= count || user_count > (count - off))
|
187 | 163 | return -ENXIO;
|
188 | 164 |
|
189 |
| -#ifdef NOT_COHERENT_CACHE |
190 | 165 | vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
191 | 166 | pfn = consistent_virt_to_pfn(cpu_addr);
|
192 |
| -#else |
193 |
| - pfn = virt_to_pfn(cpu_addr); |
194 |
| -#endif |
195 | 167 | return remap_pfn_range(vma, vma->vm_start, pfn + off,
|
196 | 168 | vma->vm_end - vma->vm_start, vma->vm_page_prot);
|
197 | 169 | #else
|
|
0 commit comments