dect
/
linux-2.6
Archived
13
0
Fork 0

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: Russell King <rmk+kernel@arm.linux.org.uk>
Tested-By: Santosh Shilimkar <santosh.shilimkar@ti.com>
This commit is contained in:
Russell King 2009-11-24 14:41:01 +00:00
parent 65af191a04
commit 93f1d629e2
1 changed files with 18 additions and 24 deletions

View File

@ -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) {
if (offset >= PAGE_SIZE) {
page += offset / PAGE_SIZE;
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;
}
len = PAGE_SIZE - offset;
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);
}
dma_cache_maint_contiguous(page, offset, len, op);
offset = 0;
page++;
left -= len;