diff options
Diffstat (limited to 'arch/mips')
-rw-r--r-- | arch/mips/mm/dma-default.c | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/arch/mips/mm/dma-default.c b/arch/mips/mm/dma-default.c index 609d1241b0c4..eeaf0245c3b1 100644 --- a/arch/mips/mm/dma-default.c +++ b/arch/mips/mm/dma-default.c | |||
@@ -262,12 +262,13 @@ static void mips_dma_unmap_page(struct device *dev, dma_addr_t dma_addr, | |||
262 | plat_unmap_dma_mem(dev, dma_addr, size, direction); | 262 | plat_unmap_dma_mem(dev, dma_addr, size, direction); |
263 | } | 263 | } |
264 | 264 | ||
265 | static int mips_dma_map_sg(struct device *dev, struct scatterlist *sg, | 265 | static int mips_dma_map_sg(struct device *dev, struct scatterlist *sglist, |
266 | int nents, enum dma_data_direction direction, struct dma_attrs *attrs) | 266 | int nents, enum dma_data_direction direction, struct dma_attrs *attrs) |
267 | { | 267 | { |
268 | int i; | 268 | int i; |
269 | struct scatterlist *sg; | ||
269 | 270 | ||
270 | for (i = 0; i < nents; i++, sg++) { | 271 | for_each_sg(sglist, sg, nents, i) { |
271 | if (!plat_device_is_coherent(dev)) | 272 | if (!plat_device_is_coherent(dev)) |
272 | __dma_sync(sg_page(sg), sg->offset, sg->length, | 273 | __dma_sync(sg_page(sg), sg->offset, sg->length, |
273 | direction); | 274 | direction); |
@@ -291,13 +292,14 @@ static dma_addr_t mips_dma_map_page(struct device *dev, struct page *page, | |||
291 | return plat_map_dma_mem_page(dev, page) + offset; | 292 | return plat_map_dma_mem_page(dev, page) + offset; |
292 | } | 293 | } |
293 | 294 | ||
294 | static void mips_dma_unmap_sg(struct device *dev, struct scatterlist *sg, | 295 | static void mips_dma_unmap_sg(struct device *dev, struct scatterlist *sglist, |
295 | int nhwentries, enum dma_data_direction direction, | 296 | int nhwentries, enum dma_data_direction direction, |
296 | struct dma_attrs *attrs) | 297 | struct dma_attrs *attrs) |
297 | { | 298 | { |
298 | int i; | 299 | int i; |
300 | struct scatterlist *sg; | ||
299 | 301 | ||
300 | for (i = 0; i < nhwentries; i++, sg++) { | 302 | for_each_sg(sglist, sg, nhwentries, i) { |
301 | if (!plat_device_is_coherent(dev) && | 303 | if (!plat_device_is_coherent(dev) && |
302 | direction != DMA_TO_DEVICE) | 304 | direction != DMA_TO_DEVICE) |
303 | __dma_sync(sg_page(sg), sg->offset, sg->length, | 305 | __dma_sync(sg_page(sg), sg->offset, sg->length, |
@@ -324,26 +326,34 @@ static void mips_dma_sync_single_for_device(struct device *dev, | |||
324 | } | 326 | } |
325 | 327 | ||
326 | static void mips_dma_sync_sg_for_cpu(struct device *dev, | 328 | static void mips_dma_sync_sg_for_cpu(struct device *dev, |
327 | struct scatterlist *sg, int nelems, enum dma_data_direction direction) | 329 | struct scatterlist *sglist, int nelems, |
330 | enum dma_data_direction direction) | ||
328 | { | 331 | { |
329 | int i; | 332 | int i; |
333 | struct scatterlist *sg; | ||
330 | 334 | ||
331 | if (cpu_needs_post_dma_flush(dev)) | 335 | if (cpu_needs_post_dma_flush(dev)) { |
332 | for (i = 0; i < nelems; i++, sg++) | 336 | for_each_sg(sglist, sg, nelems, i) { |
333 | __dma_sync(sg_page(sg), sg->offset, sg->length, | 337 | __dma_sync(sg_page(sg), sg->offset, sg->length, |
334 | direction); | 338 | direction); |
339 | } | ||
340 | } | ||
335 | plat_post_dma_flush(dev); | 341 | plat_post_dma_flush(dev); |
336 | } | 342 | } |
337 | 343 | ||
338 | static void mips_dma_sync_sg_for_device(struct device *dev, | 344 | static void mips_dma_sync_sg_for_device(struct device *dev, |
339 | struct scatterlist *sg, int nelems, enum dma_data_direction direction) | 345 | struct scatterlist *sglist, int nelems, |
346 | enum dma_data_direction direction) | ||
340 | { | 347 | { |
341 | int i; | 348 | int i; |
349 | struct scatterlist *sg; | ||
342 | 350 | ||
343 | if (!plat_device_is_coherent(dev)) | 351 | if (!plat_device_is_coherent(dev)) { |
344 | for (i = 0; i < nelems; i++, sg++) | 352 | for_each_sg(sglist, sg, nelems, i) { |
345 | __dma_sync(sg_page(sg), sg->offset, sg->length, | 353 | __dma_sync(sg_page(sg), sg->offset, sg->length, |
346 | direction); | 354 | direction); |
355 | } | ||
356 | } | ||
347 | } | 357 | } |
348 | 358 | ||
349 | int mips_dma_mapping_error(struct device *dev, dma_addr_t dma_addr) | 359 | int mips_dma_mapping_error(struct device *dev, dma_addr_t dma_addr) |