From 628ee34f75efa73f3d96262719c7f27d86da392d Mon Sep 17 00:00:00 2001 From: Ameya Palande Date: Wed, 2 Jun 2010 15:04:01 +0300 Subject: [PATCH] gpu: pvr: compilation fixes for kernel > 2.6.33 Signed-off-by: Ameya Palande --- pvr/bridged_pvr_bridge.c | 6 ++---- pvr/mm.c | 10 ++++++++-- pvr/resman.c | 2 +- pvr/sgxinit.c | 1 + 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/pvr/bridged_pvr_bridge.c b/pvr/bridged_pvr_bridge.c index abbf7f1..fa1a371 100644 --- a/pvr/bridged_pvr_bridge.c +++ b/pvr/bridged_pvr_bridge.c @@ -667,8 +667,7 @@ static int FlushCacheDRI(u32 ui32Type, u32 ui32Virt, u32 ui32Length) "DRM_PVR2D_CFLUSH_FROM_GPU 0x%08x, length 0x%08x\n", ui32Virt, ui32Length); #ifdef CONFIG_ARM - dmac_inv_range((const void *)ui32Virt, - (const void *)(ui32Virt + ui32Length)); + dmac_map_area((const void *)ui32Virt, ui32Length, DMA_FROM_DEVICE); #endif return 0; case DRM_PVR2D_CFLUSH_TO_GPU: @@ -676,8 +675,7 @@ static int FlushCacheDRI(u32 ui32Type, u32 ui32Virt, u32 ui32Length) "DRM_PVR2D_CFLUSH_TO_GPU 0x%08x, length 0x%08x\n", ui32Virt, ui32Length); #ifdef CONFIG_ARM - dmac_clean_range((const void *)ui32Virt, - (const void *)(ui32Virt + ui32Length)); + dmac_map_area((const void *)ui32Virt, ui32Length, DMA_TO_DEVICE); #endif return 0; default: diff --git a/pvr/mm.c b/pvr/mm.c index cf579e5..29bdd93 100644 --- a/pvr/mm.c +++ b/pvr/mm.c @@ -1142,6 +1142,9 @@ static void inv_cache_vmalloc(const struct LinuxMemArea *mem_area) u32 pg_ofs; u32 vaddr, vaddr_end; + extern void ___dma_single_dev_to_cpu(const void *, size_t, + enum dma_data_direction); + vaddr = (u32)mem_area->uData.sVmalloc.pvVmallocAddress; vaddr_end = vaddr + mem_area->ui32ByteSize; pg_cnt = (PAGE_ALIGN(vaddr_end) - (vaddr & PAGE_MASK)) / PAGE_SIZE; @@ -1152,7 +1155,7 @@ static void inv_cache_vmalloc(const struct LinuxMemArea *mem_area) pg_ofs = vaddr & ~PAGE_MASK; kaddr += pg_ofs; chunk = min_t(ssize_t, vaddr_end - vaddr, PAGE_SIZE - pg_ofs); - dma_cache_maint(kaddr, chunk, DMA_FROM_DEVICE); + ___dma_single_dev_to_cpu(kaddr, chunk, DMA_FROM_DEVICE); vaddr += chunk; } } @@ -1162,10 +1165,13 @@ static void inv_cache_page_list(const struct LinuxMemArea *mem_area) u32 pg_cnt; struct page **pg_list; + extern void ___dma_single_dev_to_cpu(const void *, size_t, + enum dma_data_direction); + pg_cnt = RANGE_TO_PAGES(mem_area->ui32ByteSize); pg_list = mem_area->uData.sPageList.pvPageList; while (pg_cnt--) - dma_cache_maint(page_address(*pg_list++), PAGE_SIZE, + ___dma_single_dev_to_cpu(page_address(*pg_list++), PAGE_SIZE, DMA_FROM_DEVICE); } diff --git a/pvr/resman.c b/pvr/resman.c index 5b9766f..ef104e6 100644 --- a/pvr/resman.c +++ b/pvr/resman.c @@ -33,7 +33,7 @@ #include "services_headers.h" #include "resman.h" -static DECLARE_MUTEX(lock); +static DEFINE_SEMAPHORE(lock); #define ACQUIRE_SYNC_OBJ do { \ if (in_interrupt()) { \ diff --git a/pvr/sgxinit.c b/pvr/sgxinit.c index 71815f0..3d09250 100644 --- a/pvr/sgxinit.c +++ b/pvr/sgxinit.c @@ -28,6 +28,7 @@ #include #include +#include #include "sgxdefs.h" #include "sgxmmu.h" -- 2.39.5