Don't set up a sg dma address if we have no page address for some reason.
authorThiemo Seufer <ths@networkno.de>
Fri, 9 Sep 2005 17:09:18 +0000 (17:09 +0000)
committerRalf Baechle <ralf@linux-mips.org>
Sat, 29 Oct 2005 18:32:17 +0000 (19:32 +0100)
Code cleanup.

Signed-off-by: Thiemo Seufer <ths@networkno.de>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/mm/dma-noncoherent.c

index 4ce02028a292cb4e3d9f5f3d1fbdcea3b02813c1..cd4ea8474f89377fd3c7fef67e5ba85563d02178 100644 (file)
@@ -105,22 +105,7 @@ dma_addr_t dma_map_single(struct device *dev, void *ptr, size_t size,
 {
        unsigned long addr = (unsigned long) ptr;
 
-       switch (direction) {
-       case DMA_TO_DEVICE:
-               dma_cache_wback(addr, size);
-               break;
-
-       case DMA_FROM_DEVICE:
-               dma_cache_inv(addr, size);
-               break;
-
-       case DMA_BIDIRECTIONAL:
-               dma_cache_wback_inv(addr, size);
-               break;
-
-       default:
-               BUG();
-       }
+       __dma_sync(addr, size, direction);
 
        return virt_to_phys(ptr);
 }
@@ -133,22 +118,7 @@ void dma_unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size,
        unsigned long addr;
        addr = dma_addr + PAGE_OFFSET;
 
-       switch (direction) {
-       case DMA_TO_DEVICE:
-               //dma_cache_wback(addr, size);
-               break;
-
-       case DMA_FROM_DEVICE:
-               //dma_cache_inv(addr, size);
-               break;
-
-       case DMA_BIDIRECTIONAL:
-               //dma_cache_wback_inv(addr, size);
-               break;
-
-       default:
-               BUG();
-       }
+       //__dma_sync(addr, size, direction);
 }
 
 EXPORT_SYMBOL(dma_unmap_single);
@@ -164,10 +134,11 @@ int dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
                unsigned long addr;
 
                addr = (unsigned long) page_address(sg->page);
-               if (addr)
+               if (addr) {
                        __dma_sync(addr + sg->offset, sg->length, direction);
-               sg->dma_address = (dma_addr_t)
-                       (page_to_phys(sg->page) + sg->offset);
+                       sg->dma_address = (dma_addr_t)page_to_phys(sg->page)
+                                         + sg->offset;
+               }
        }
 
        return nents;
@@ -218,9 +189,8 @@ void dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nhwentries,
 
        for (i = 0; i < nhwentries; i++, sg++) {
                addr = (unsigned long) page_address(sg->page);
-               if (!addr)
-                       continue;
-               dma_cache_wback_inv(addr + sg->offset, sg->length);
+               if (addr)
+                       __dma_sync(addr + sg->offset, sg->length, direction);
        }
 }