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 #include #include @@ -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);