summaryrefslogtreecommitdiff
path: root/drivers/mxc
diff options
context:
space:
mode:
authorwu guoxing <b39297@freescale.com>2011-12-16 12:15:05 +0800
committerJason Liu <r64343@freescale.com>2012-01-09 21:11:16 +0800
commitd5ced8687fe46c8bb78003408c954746727c92f0 (patch)
tree24d2aaf63f0acdaaf4669e902206aef4f6d83db9 /drivers/mxc
parentdc338dcc5b5d1278e932b00a0a4592a81a58acad (diff)
ENGR00170452: gpu-viv: change from dma_sync_single_for_device to outer_clean_range
dma_sync_single_for_device can only used for kernel physical memory, while in gpu, we will also clean user physical memory for pixmap, direct texture, etc. outer_clean_range can operate on both. Signed-off-by: Wu Guoxing <b39297@freescale.com> Acked-by: Lily Zhang <r58066@freescale.com>
Diffstat (limited to 'drivers/mxc')
-rw-r--r--drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c26
1 files changed, 8 insertions, 18 deletions
diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c
index c22aa460d2f4..eacee2791b93 100644
--- a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c
+++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c
@@ -4957,16 +4957,8 @@ OnError:
for (i = 0; i < pageCount; i++)
{
- /* Flush(clean) the data cache. */
-#if !defined(ANDROID)
- dma_sync_single_for_device(
- gcvNULL,
- page_to_phys(pages[i]),
- PAGE_SIZE,
- DMA_TO_DEVICE);
-#else
- flush_dcache_page(pages[i]);
-#endif
+ unsigned long paddr = page_to_phys(pages[i]);
+ outer_clean_range(paddr, paddr + PAGE_SIZE);
}
#if gcdENABLE_VG
@@ -5267,6 +5259,8 @@ OnError:
/* Release the page cache. */
for (i = 0; i < pageCount; i++)
{
+ unsigned long paddr = page_to_phys(pages[i]);
+
gcmkTRACE_ZONE(
gcvLEVEL_INFO, gcvZONE_OS,
"%s(%d): pages[%d]: 0x%X.",
@@ -5279,14 +5273,10 @@ OnError:
SetPageDirty(pages[i]);
}
-#if !defined(ANDROID)
- /* Invalidate the data cache. */
- dma_sync_single_for_device(
- gcvNULL,
- page_to_phys(pages[i]),
- PAGE_SIZE,
- DMA_FROM_DEVICE);
-#endif
+ flush_dcache_page(pages[i]);
+
+ outer_inv_range(paddr, paddr + PAGE_SIZE);
+
page_cache_release(pages[i]);
}