aboutsummaryrefslogtreecommitdiffstats
path: root/package/madwifi/patches/326-soc_dma.patch
blob: a5075c4684aed1d5fbbeb3ba23feea06d2fed374 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
Index: madwifi-trunk-r3280/ath/if_ath_ahb.c
===================================================================
--- madwifi-trunk-r3280.orig/ath/if_ath_ahb.c	2008-01-28 20:00:18.552163264 +0100
+++ madwifi-trunk-r3280/ath/if_ath_ahb.c	2008-01-28 20:00:18.612166683 +0100
@@ -69,27 +69,13 @@
 void *
 bus_alloc_consistent(void *hwdev, size_t size, dma_addr_t *dma_handle)
 {
-	void *ret;
-
-	ret = (void *) __get_free_pages(GFP_ATOMIC, get_order(size));
-
-	if (ret != NULL) {
-		memset(ret, 0, size);
-		*dma_handle = __pa(ret);
-		dma_cache_wback_inv((unsigned long) ret, size);
-		ret = UNCAC_ADDR(ret);
-	}
-
-	return ret;
+	return dma_alloc_coherent(hwdev, size, dma_handle, GFP_ATOMIC);
 }
 
 void
 bus_free_consistent(void *hwdev, size_t size, void *vaddr, dma_addr_t dma_handle)
 {
-	unsigned long addr = (unsigned long) vaddr;
-
-	addr = CAC_ADDR(addr);
-	free_pages(addr, get_order(size));
+	dma_free_coherent(hwdev, size, vaddr, dma_handle);
 }
 
 static int
Index: madwifi-trunk-r3280/ath/if_ath_ahb.h
===================================================================
--- madwifi-trunk-r3280.orig/ath/if_ath_ahb.h	2008-01-28 19:52:49.442569967 +0100
+++ madwifi-trunk-r3280/ath/if_ath_ahb.h	2008-01-28 21:55:51.325773888 +0100
@@ -8,6 +8,7 @@
 #ifndef _DEV_ATH_AHB_H_
 #define _DEV_ATH_AHB_H_
 
+#include <linux/dma-mapping.h>
 #include <asm/io.h>
 #include <asm/uaccess.h>
 
@@ -89,8 +90,8 @@
 #define AR531X_RADIO1_MASK	0x000c
 #define AR531X_RADIO1_S		2
 
-#define BUS_DMA_FROMDEVICE	0
-#define BUS_DMA_TODEVICE	1
+#define BUS_DMA_FROMDEVICE	DMA_FROM_DEVICE
+#define BUS_DMA_TODEVICE	DMA_TO_DEVICE
 
 #define AR531X_APBBASE		0xbc000000
 #define AR531X_RESETTMR		(AR531X_APBBASE  + 0x3000)
@@ -115,29 +116,19 @@
 static __inline void bus_dma_sync_single(void *hwdev, dma_addr_t dma_handle,
 	size_t size, int direction)
 {
-	unsigned long addr;
-
-	addr = (unsigned long) __va(dma_handle);
-	dma_cache_wback_inv(addr, size);
+	dma_sync_single(hwdev, dma_handle, size, direction);
 }
 
 static __inline dma_addr_t bus_map_single(void *hwdev, void *ptr,
 	size_t size, int direction)
 {
-	dma_cache_wback_inv((unsigned long) ptr, size);
-
-	return __pa(ptr);
+	return dma_map_single(hwdev, ptr, size, direction);
 }
 
 static __inline void bus_unmap_single(void *hwdev, dma_addr_t dma_addr,
 	size_t size, int direction)
 {
-	if (direction != BUS_DMA_TODEVICE) {
-		unsigned long addr;
-
-		addr = (unsigned long)__va(dma_addr);
-		dma_cache_wback_inv(addr, size);
-	}
+	dma_unmap_single(hwdev, dma_addr, size, direction);
 }
 void *bus_alloc_consistent(void *, size_t, dma_addr_t *);
 void bus_free_consistent(void *, size_t, void *, dma_addr_t);