Skip to content

Commit

Permalink
Don't set up a sg dma address if we have no page address for some rea…
Browse files Browse the repository at this point in the history
…son.

Code cleanup.

Signed-off-by: Thiemo Seufer <ths@networkno.de>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
  • Loading branch information
Thiemo Seufer authored and Ralf Baechle committed Oct 29, 2005
1 parent 98e316d commit 424cada
Showing 1 changed file with 8 additions and 38 deletions.
46 changes: 8 additions & 38 deletions arch/mips/mm/dma-noncoherent.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand All @@ -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);
Expand All @@ -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;
Expand Down Expand Up @@ -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);
}
}

Expand Down

0 comments on commit 424cada

Please sign in to comment.