[MIPS] Make dma_map_sg handle sg elements which are longer than one page
authorThomas Bogendoerfer <tsbogend@alpha.franken.de>
Fri, 18 May 2007 12:32:36 +0000 (14:32 +0200)
committerRalf Baechle <ralf@linux-mips.org>
Wed, 6 Jun 2007 18:34:32 +0000 (19:34 +0100)
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/mm/dma-default.c

index f0eb29917d9aa3443a44c404f7ca3b5762eb0a99..76903c7276475145fa1661ae8d08df5bde458747 100644 (file)
@@ -168,8 +168,9 @@ int dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
                addr = (unsigned long) page_address(sg->page);
                if (!plat_device_is_coherent(dev) && addr)
                        __dma_sync(addr + sg->offset, sg->length, direction);
-               sg->dma_address = plat_map_dma_mem_page(dev, sg->page) +
-                                 sg->offset;
+               sg->dma_address = plat_map_dma_mem(dev,
+                                                  (void *)(addr + sg->offset),
+                                                  sg->length);
        }
 
        return nents;