From 08e694b006410f8da05ffb58ece244cb710f507b Mon Sep 17 00:00:00 2001 From: Matt Sealey Date: Mon, 3 Dec 2012 15:24:14 -0600 Subject: [PATCH] amd-gpu: cut down the "hal" by moving some single-use functions move kgsl_hal_alloc/freephysical to where they get used.. --- drivers/mxc/amd-gpu/kgsl_hal.c | 35 ---------------------- drivers/mxc/amd-gpu/kgsl_hal.h | 2 -- drivers/mxc/amd-gpu/kgsl_sharedmem.c | 45 ++++++++++++++++++++++++---- 3 files changed, 39 insertions(+), 43 deletions(-) diff --git a/drivers/mxc/amd-gpu/kgsl_hal.c b/drivers/mxc/amd-gpu/kgsl_hal.c index 202ce530d79..e3bc40eb47b 100644 --- a/drivers/mxc/amd-gpu/kgsl_hal.c +++ b/drivers/mxc/amd-gpu/kgsl_hal.c @@ -63,41 +63,6 @@ extern int gpu_2d_irq, gpu_3d_irq; extern int enable_mmu; -KGSLHAL_API int -kgsl_hal_allocphysical(unsigned int virtaddr, unsigned int numpages, unsigned int scattergatterlist[]) -{ - /* allocate physically contiguous memory */ - - int i; - void *va; - - va = kgsl_mem_entry_alloc(virtaddr, numpages*PAGE_SIZE); - - if (!va) - return GSL_FAILURE_OUTOFMEM; - - for (i = 0; i < numpages; i++) { - scattergatterlist[i] = page_to_phys(vmalloc_to_page(va)); - va += PAGE_SIZE; - } - - return GSL_SUCCESS; -} - -/* --------------------------------------------------------------------------- */ - -KGSLHAL_API int -kgsl_hal_freephysical(unsigned int virtaddr, unsigned int numpages, unsigned int scattergatterlist[]) -{ - /* free physical memory */ - - kgsl_mem_entry_free(virtaddr); - - return GSL_SUCCESS; -} - -/* ---------------------------------------------------------------------------- */ - KGSLHAL_API int kgsl_hal_init(void) { diff --git a/drivers/mxc/amd-gpu/kgsl_hal.h b/drivers/mxc/amd-gpu/kgsl_hal.h index 1f7ae5044ab..368eecf673d 100644 --- a/drivers/mxc/amd-gpu/kgsl_hal.h +++ b/drivers/mxc/amd-gpu/kgsl_hal.h @@ -114,8 +114,6 @@ KGSLHAL_API int kgsl_hal_getshmemconfig(gsl_shmemconfig_t *config); KGSLHAL_API int kgsl_hal_getdevconfig(unsigned int device_id, struct kgsl_devconfig *config); KGSLHAL_API int kgsl_hal_setpowerstate(unsigned int device_id, int state, unsigned int value); KGSLHAL_API unsigned int kgsl_hal_getchipid(unsigned int device_id); -KGSLHAL_API int kgsl_hal_allocphysical(unsigned int virtaddr, unsigned int numpages, unsigned int scattergatterlist[]); -KGSLHAL_API int kgsl_hal_freephysical(unsigned int virtaddr, unsigned int numpages, unsigned int scattergatterlist[]); #ifdef __cplusplus } diff --git a/drivers/mxc/amd-gpu/kgsl_sharedmem.c b/drivers/mxc/amd-gpu/kgsl_sharedmem.c index af29029f779..9b4fd5f366f 100644 --- a/drivers/mxc/amd-gpu/kgsl_sharedmem.c +++ b/drivers/mxc/amd-gpu/kgsl_sharedmem.c @@ -18,6 +18,7 @@ #include #include +#include #include #include @@ -70,6 +71,10 @@ ((memdesc->priv & GSL_EXTALLOC_MASK) >> GSL_EXTALLOC_SHIFT) + + + + ////////////////////////////////////////////////////////////////////////////// // aperture index in shared memory object ////////////////////////////////////////////////////////////////////////////// @@ -209,7 +214,37 @@ kgsl_sharedmem_close(struct kgsl_sharedmem *shmem) return (result); } -//---------------------------------------------------------------------------- + +int kgsl_sharedmem_allocphysical(unsigned int virtaddr, unsigned int numpages, unsigned int scattergatterlist[]) +{ + /* allocate physically contiguous memory */ + + int i; + void *va; + + va = kgsl_mem_entry_alloc(virtaddr, numpages*PAGE_SIZE); + + if (!va) + return GSL_FAILURE_OUTOFMEM; + + for (i = 0; i < numpages; i++) { + scattergatterlist[i] = page_to_phys(vmalloc_to_page(va)); + va += PAGE_SIZE; + } + + return GSL_SUCCESS; +} + +int kgsl_sharedmem_freephysical(unsigned int virtaddr, unsigned int numpages, unsigned int scattergatterlist[]) +{ + /* free physical memory */ + + kgsl_mem_entry_free(virtaddr); + + return GSL_SUCCESS; +} + + int kgsl_sharedmem_alloc0(unsigned int device_id, unsigned int flags, int sizebytes, struct kgsl_memdesc *memdesc) @@ -361,13 +396,13 @@ KGSL_MEM_VDBG( "--> int kgsl_sharedmem_alloc(unsigned int dev if (scatterlist.pages) { // allocate physical pages - result = kgsl_hal_allocphysical(memdesc->gpuaddr, scatterlist.num, scatterlist.pages); + result = kgsl_sharedmem_allocphysical(memdesc->gpuaddr, scatterlist.num, scatterlist.pages); if (result == GSL_SUCCESS) { result = kgsl_mmu_map(mmu, memdesc->gpuaddr, &scatterlist, flags, current->tgid); if (result != GSL_SUCCESS) { - kgsl_hal_freephysical(memdesc->gpuaddr, scatterlist.num, scatterlist.pages); + kgsl_sharedmem_freephysical(memdesc->gpuaddr, scatterlist.num, scatterlist.pages); } } @@ -402,8 +437,6 @@ kgsl_sharedmem_alloc(unsigned int device_id, unsigned int flags, int sizebytes, return status; } -//---------------------------------------------------------------------------- - int kgsl_sharedmem_free0(struct kgsl_memdesc *memdesc, unsigned int pid) { @@ -427,7 +460,7 @@ kgsl_sharedmem_free0(struct kgsl_memdesc *memdesc, unsigned int pid) if (!GSL_MEMDESC_EXTALLOC_ISMARKED(memdesc)) { - status |= kgsl_hal_freephysical(memdesc->gpuaddr, memdesc->size / PAGE_SIZE, NULL); + status |= kgsl_sharedmem_freephysical(memdesc->gpuaddr, memdesc->size / PAGE_SIZE, NULL); } }