Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 93f1d629 authored by Russell King's avatar Russell King
Browse files

ARM: dma-mapping: simplify dma_cache_maint_page



dma_cache_maint_contiguous is now simple enough to live inside
dma_cache_maint_page, so move it there.

Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
Tested-By: default avatarSantosh Shilimkar <santosh.shilimkar@ti.com>
parent 65af191a
Loading
Loading
Loading
Loading
+18 −24
Original line number Diff line number Diff line
@@ -446,24 +446,6 @@ void ___dma_single_dev_to_cpu(const void *kaddr, size_t size,
}
EXPORT_SYMBOL(___dma_single_dev_to_cpu);

static void dma_cache_maint_contiguous(struct page *page, unsigned long offset,
		       size_t size, void (*op)(const void *, const void *))
{
	void *vaddr;

	if (!PageHighMem(page)) {
		vaddr = page_address(page) + offset;
		op(vaddr, vaddr + size);
	} else {
		vaddr = kmap_high_get(page);
		if (vaddr) {
			vaddr += offset;
			op(vaddr, vaddr + size);
			kunmap_high(page);
		}
	}
}

static void dma_cache_maint_page(struct page *page, unsigned long offset,
	size_t size, void (*op)(const void *, const void *))
{
@@ -476,14 +458,26 @@ static void dma_cache_maint_page(struct page *page, unsigned long offset,
	size_t left = size;
	do {
		size_t len = left;
		if (PageHighMem(page) && len + offset > PAGE_SIZE) {
		void *vaddr;

		if (PageHighMem(page)) {
			if (len + offset > PAGE_SIZE) {
				if (offset >= PAGE_SIZE) {
					page += offset / PAGE_SIZE;
					offset %= PAGE_SIZE;
				}
				len = PAGE_SIZE - offset;
			}
		dma_cache_maint_contiguous(page, offset, len, op);
			vaddr = kmap_high_get(page);
			if (vaddr) {
				vaddr += offset;
				op(vaddr, vaddr + len);
				kunmap_high(page);
			}
		} else {
			vaddr = page_address(page) + offset;
			op(vaddr, vaddr + len);
		}
		offset = 0;
		page++;
		left -= len;