{
        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);
 }
        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);
                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;
 
        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);
        }
 }