diff options
author | wu guoxing <b39297@freescale.com> | 2011-12-16 12:15:05 +0800 |
---|---|---|
committer | Jason Liu <r64343@freescale.com> | 2012-01-09 21:11:16 +0800 |
commit | d5ced8687fe46c8bb78003408c954746727c92f0 (patch) | |
tree | 24d2aaf63f0acdaaf4669e902206aef4f6d83db9 /drivers/mxc | |
parent | dc338dcc5b5d1278e932b00a0a4592a81a58acad (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.c | 26 |
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]); } |