Commit 424cadae authored by Thiemo Seufer's avatar Thiemo Seufer Committed by Ralf Baechle
Browse files

Don't set up a sg dma address if we have no page address for some reason.


Code cleanup.

Signed-off-by: default avatarThiemo Seufer <ths@networkno.de>
Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent 98e316d4
Loading
Loading
Loading
Loading
+8 −38
Original line number Diff line number Diff line
@@ -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);
	}
}