.. | .. |
---|
18 | 18 | #include <linux/cache.h> |
---|
19 | 19 | #include <asm/cacheflush.h> |
---|
20 | 20 | |
---|
21 | | -void arch_sync_dma_for_device(struct device *dev, phys_addr_t paddr, |
---|
22 | | - size_t size, enum dma_data_direction dir) |
---|
| 21 | +void arch_sync_dma_for_device(phys_addr_t paddr, size_t size, |
---|
| 22 | + enum dma_data_direction dir) |
---|
23 | 23 | { |
---|
24 | 24 | void *vaddr = phys_to_virt(paddr); |
---|
25 | 25 | |
---|
.. | .. |
---|
42 | 42 | } |
---|
43 | 43 | } |
---|
44 | 44 | |
---|
45 | | -void arch_sync_dma_for_cpu(struct device *dev, phys_addr_t paddr, |
---|
46 | | - size_t size, enum dma_data_direction dir) |
---|
| 45 | +void arch_sync_dma_for_cpu(phys_addr_t paddr, size_t size, |
---|
| 46 | + enum dma_data_direction dir) |
---|
47 | 47 | { |
---|
48 | 48 | void *vaddr = phys_to_virt(paddr); |
---|
49 | 49 | |
---|
.. | .. |
---|
60 | 60 | } |
---|
61 | 61 | } |
---|
62 | 62 | |
---|
63 | | -void *arch_dma_alloc(struct device *dev, size_t size, dma_addr_t *dma_handle, |
---|
64 | | - gfp_t gfp, unsigned long attrs) |
---|
| 63 | +void arch_dma_prep_coherent(struct page *page, size_t size) |
---|
65 | 64 | { |
---|
66 | | - void *ret; |
---|
| 65 | + unsigned long start = (unsigned long)page_address(page); |
---|
67 | 66 | |
---|
68 | | - /* optimized page clearing */ |
---|
69 | | - gfp |= __GFP_ZERO; |
---|
70 | | - |
---|
71 | | - if (dev == NULL || (dev->coherent_dma_mask < 0xffffffff)) |
---|
72 | | - gfp |= GFP_DMA; |
---|
73 | | - |
---|
74 | | - ret = (void *) __get_free_pages(gfp, get_order(size)); |
---|
75 | | - if (ret != NULL) { |
---|
76 | | - *dma_handle = virt_to_phys(ret); |
---|
77 | | - flush_dcache_range((unsigned long) ret, |
---|
78 | | - (unsigned long) ret + size); |
---|
79 | | - ret = UNCAC_ADDR(ret); |
---|
80 | | - } |
---|
81 | | - |
---|
82 | | - return ret; |
---|
| 67 | + flush_dcache_range(start, start + size); |
---|
83 | 68 | } |
---|
84 | 69 | |
---|
85 | | -void arch_dma_free(struct device *dev, size_t size, void *vaddr, |
---|
86 | | - dma_addr_t dma_handle, unsigned long attrs) |
---|
| 70 | +void *arch_dma_set_uncached(void *ptr, size_t size) |
---|
87 | 71 | { |
---|
88 | | - unsigned long addr = (unsigned long) CAC_ADDR((unsigned long) vaddr); |
---|
| 72 | + unsigned long addr = (unsigned long)ptr; |
---|
89 | 73 | |
---|
90 | | - free_pages(addr, get_order(size)); |
---|
| 74 | + addr |= CONFIG_NIOS2_IO_REGION_BASE; |
---|
| 75 | + |
---|
| 76 | + return (void *)ptr; |
---|
91 | 77 | } |
---|