diff options
Diffstat (limited to 'arch/mips/mm/dma-noncoherent.c')
| -rw-r--r-- | arch/mips/mm/dma-noncoherent.c | 46 |
1 files changed, 8 insertions, 38 deletions
diff --git a/arch/mips/mm/dma-noncoherent.c b/arch/mips/mm/dma-noncoherent.c index 4ce02028a292..cd4ea8474f89 100644 --- a/arch/mips/mm/dma-noncoherent.c +++ b/arch/mips/mm/dma-noncoherent.c | |||
| @@ -105,22 +105,7 @@ dma_addr_t dma_map_single(struct device *dev, void *ptr, size_t size, | |||
| 105 | { | 105 | { |
| 106 | unsigned long addr = (unsigned long) ptr; | 106 | unsigned long addr = (unsigned long) ptr; |
| 107 | 107 | ||
| 108 | switch (direction) { | 108 | __dma_sync(addr, size, direction); |
| 109 | case DMA_TO_DEVICE: | ||
| 110 | dma_cache_wback(addr, size); | ||
| 111 | break; | ||
| 112 | |||
| 113 | case DMA_FROM_DEVICE: | ||
| 114 | dma_cache_inv(addr, size); | ||
| 115 | break; | ||
| 116 | |||
| 117 | case DMA_BIDIRECTIONAL: | ||
| 118 | dma_cache_wback_inv(addr, size); | ||
| 119 | break; | ||
| 120 | |||
| 121 | default: | ||
| 122 | BUG(); | ||
| 123 | } | ||
| 124 | 109 | ||
| 125 | return virt_to_phys(ptr); | 110 | return virt_to_phys(ptr); |
| 126 | } | 111 | } |
| @@ -133,22 +118,7 @@ void dma_unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size, | |||
| 133 | unsigned long addr; | 118 | unsigned long addr; |
| 134 | addr = dma_addr + PAGE_OFFSET; | 119 | addr = dma_addr + PAGE_OFFSET; |
| 135 | 120 | ||
| 136 | switch (direction) { | 121 | //__dma_sync(addr, size, direction); |
| 137 | case DMA_TO_DEVICE: | ||
| 138 | //dma_cache_wback(addr, size); | ||
| 139 | break; | ||
| 140 | |||
| 141 | case DMA_FROM_DEVICE: | ||
| 142 | //dma_cache_inv(addr, size); | ||
| 143 | break; | ||
| 144 | |||
| 145 | case DMA_BIDIRECTIONAL: | ||
| 146 | //dma_cache_wback_inv(addr, size); | ||
| 147 | break; | ||
| 148 | |||
| 149 | default: | ||
| 150 | BUG(); | ||
| 151 | } | ||
| 152 | } | 122 | } |
| 153 | 123 | ||
| 154 | EXPORT_SYMBOL(dma_unmap_single); | 124 | EXPORT_SYMBOL(dma_unmap_single); |
| @@ -164,10 +134,11 @@ int dma_map_sg(struct device *dev, struct scatterlist *sg, int nents, | |||
| 164 | unsigned long addr; | 134 | unsigned long addr; |
| 165 | 135 | ||
| 166 | addr = (unsigned long) page_address(sg->page); | 136 | addr = (unsigned long) page_address(sg->page); |
| 167 | if (addr) | 137 | if (addr) { |
| 168 | __dma_sync(addr + sg->offset, sg->length, direction); | 138 | __dma_sync(addr + sg->offset, sg->length, direction); |
| 169 | sg->dma_address = (dma_addr_t) | 139 | sg->dma_address = (dma_addr_t)page_to_phys(sg->page) |
| 170 | (page_to_phys(sg->page) + sg->offset); | 140 | + sg->offset; |
| 141 | } | ||
| 171 | } | 142 | } |
| 172 | 143 | ||
| 173 | return nents; | 144 | return nents; |
| @@ -218,9 +189,8 @@ void dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nhwentries, | |||
| 218 | 189 | ||
| 219 | for (i = 0; i < nhwentries; i++, sg++) { | 190 | for (i = 0; i < nhwentries; i++, sg++) { |
| 220 | addr = (unsigned long) page_address(sg->page); | 191 | addr = (unsigned long) page_address(sg->page); |
| 221 | if (!addr) | 192 | if (addr) |
| 222 | continue; | 193 | __dma_sync(addr + sg->offset, sg->length, direction); |
| 223 | dma_cache_wback_inv(addr + sg->offset, sg->length); | ||
| 224 | } | 194 | } |
| 225 | } | 195 | } |
| 226 | 196 | ||
