diff options
author | Felix Fietkau <nbd@openwrt.org> | 2011-05-01 15:53:56 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2011-05-01 15:53:56 +0000 |
commit | f9a92812cfd65ac266f75970a00e2af7d225f353 (patch) | |
tree | 35a12e8b8a42778e097d9f9afbbbcefc3830344c /target/linux/cns3xxx/patches-2.6.31/300-flush_cache_on_dma_cache_sync_for_cpu.patch | |
parent | ebcc60cf355d1e0499a5e9d01a1058508946256e (diff) | |
download | upstream-f9a92812cfd65ac266f75970a00e2af7d225f353.tar.gz upstream-f9a92812cfd65ac266f75970a00e2af7d225f353.tar.bz2 upstream-f9a92812cfd65ac266f75970a00e2af7d225f353.zip |
cns3xxx: fix missing and incomplete cache flushes on DMA cache sync for cpu - fixes some issues with ath9k
SVN-Revision: 26797
Diffstat (limited to 'target/linux/cns3xxx/patches-2.6.31/300-flush_cache_on_dma_cache_sync_for_cpu.patch')
-rw-r--r-- | target/linux/cns3xxx/patches-2.6.31/300-flush_cache_on_dma_cache_sync_for_cpu.patch | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/target/linux/cns3xxx/patches-2.6.31/300-flush_cache_on_dma_cache_sync_for_cpu.patch b/target/linux/cns3xxx/patches-2.6.31/300-flush_cache_on_dma_cache_sync_for_cpu.patch new file mode 100644 index 0000000000..d9051cd621 --- /dev/null +++ b/target/linux/cns3xxx/patches-2.6.31/300-flush_cache_on_dma_cache_sync_for_cpu.patch @@ -0,0 +1,21 @@ +--- a/arch/arm/include/asm/dma-mapping.h ++++ b/arch/arm/include/asm/dma-mapping.h +@@ -350,7 +350,8 @@ static inline dma_addr_t dma_map_page(st + static inline void dma_unmap_single(struct device *dev, dma_addr_t handle, + size_t size, enum dma_data_direction dir) + { +- /* nothing to do */ ++ if (dir != DMA_TO_DEVICE) ++ dma_cache_maint(dma_to_virt(dev, handle), size, DMA_FROM_DEVICE); + } + #endif /* CONFIG_DMABOUNCE */ + +@@ -398,6 +399,8 @@ static inline void dma_sync_single_range + { + BUG_ON(!valid_dma_direction(dir)); + ++ if (dir != DMA_TO_DEVICE) ++ dma_cache_maint(dma_to_virt(dev, handle) + offset, size, DMA_FROM_DEVICE); + dmabounce_sync_for_cpu(dev, handle, offset, size, dir); + } + |