From a19509d922fed36838c7b26dc58de3a3eb88bef4 Mon Sep 17 00:00:00 2001 From: Lucas Stach Date: Mon, 16 Sep 2013 18:55:19 +0200 Subject: WIP: finally turn all interfaces around Signed-off-by: Lucas Stach --- drivers/gpu/drm/msm/adreno/a3xx_gpu.c | 19 ++++++++++--------- drivers/gpu/drm/msm/adreno/adreno_gpu.c | 13 +------------ drivers/gpu/drm/msm/adreno/adreno_gpu.h | 15 +++++++++++---- 3 files changed, 22 insertions(+), 25 deletions(-) (limited to 'drivers/gpu/drm/msm/adreno') diff --git a/drivers/gpu/drm/msm/adreno/a3xx_gpu.c b/drivers/gpu/drm/msm/adreno/a3xx_gpu.c index c97f8f41b159..7ac734d14d6f 100644 --- a/drivers/gpu/drm/msm/adreno/a3xx_gpu.c +++ b/drivers/gpu/drm/msm/adreno/a3xx_gpu.c @@ -365,7 +365,7 @@ static void a3xx_show(struct adreno_gpu *gpu, struct seq_file *m) } #endif -static const struct adreno_gpu_funcs funcs = { +static struct adreno_gpu_funcs a3xx_gpu_funcs = { .get_param = adreno_get_param, .hw_init = a3xx_hw_init, .pm_suspend = a3xx_gpu_pm_suspend, @@ -386,11 +386,12 @@ static const char *clk_names[] = { "src_clk", "core_clk", "iface_clk", "mem_clk", "mem_iface_clk", }; -struct msm_gpu *a3xx_gpu_init(struct drm_device *dev, struct adreno_gem *gem, - struct workqueue_struct *wq, int reglog) +int a3xx_gpu_init(struct drm_device *dev, + const struct adreno_gem *gem, struct workqueue_struct *wq, + int reglog, struct adreno_gpu **gpu, + struct adreno_gpu_funcs **funcs) { struct a3xx_gpu *a3xx_gpu = NULL; - struct msm_gpu *gpu; struct platform_device *pdev = a3xx_pdev; struct adreno_platform_config *config; int i, ret; @@ -408,8 +409,6 @@ struct msm_gpu *a3xx_gpu_init(struct drm_device *dev, struct adreno_gem *gem, goto fail; } - gpu = &a3xx_gpu->base.base; - get_device(&pdev->dev); a3xx_gpu->base.pdev = pdev; @@ -450,17 +449,19 @@ struct msm_gpu *a3xx_gpu_init(struct drm_device *dev, struct adreno_gem *gem, adreno_reglog = reglog; ret = adreno_gpu_init(dev, pdev, &a3xx_gpu->base, - &funcs, gem, wq, config->rev); + &a3xx_gpu_funcs, gem, wq, config->rev); if (ret) goto fail; - return &a3xx_gpu->base.base; + *gpu = &a3xx_gpu->base; + *funcs = &a3xx_gpu_funcs; + return 0; fail: if (a3xx_gpu) a3xx_destroy(&a3xx_gpu->base); - return ERR_PTR(ret); + return ret; } /* diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.c b/drivers/gpu/drm/msm/adreno/adreno_gpu.c index f5abcc131639..92f25e6405be 100644 --- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c @@ -349,7 +349,7 @@ static void __iomem *adreno_ioremap(struct platform_device *pdev, int adreno_gpu_init(struct drm_device *drm, struct platform_device *pdev, struct adreno_gpu *gpu, const struct adreno_gpu_funcs *funcs, - struct adreno_gem *gem, struct workqueue_struct *wq, + const struct adreno_gem *gem, struct workqueue_struct *wq, struct adreno_rev rev) { int i, ret; @@ -382,10 +382,6 @@ int adreno_gpu_init(struct drm_device *drm, struct platform_device *pdev, gpu->shared_wq = wq; gpu->rev = rev; - /* XXX: urgh - pointers to self are fun! */ - gpu->gem->priv = &gpu->base; - gpu->base.gpu = gpu; - ret = request_firmware(&gpu->pm4, gpu->info->pm4fw, drm->dev); if (ret) { dev_err(drm->dev, "failed to load %s PM4 firmware: %d\n", @@ -421,12 +417,6 @@ int adreno_gpu_init(struct drm_device *drm, struct platform_device *pdev, return ret; } - ret = msm_gpu_init(drm, pdev, &gpu->base, funcs, - "kgsl_3d0_reg_memory", "kgsl_3d0_irq", - RB_SIZE); - if (ret) - return ret; - gpu->memptrs_bo = gpu->gem->gem_new(gpu->gem->priv, sizeof(*gpu->memptrs), MSM_BO_UNCACHED); if (IS_ERR(gpu->memptrs_bo)) { @@ -491,5 +481,4 @@ void adreno_gpu_cleanup(struct adreno_gpu *gpu) release_firmware(gpu->pm4); if (gpu->pfp) release_firmware(gpu->pfp); - msm_gpu_cleanup(&gpu->base); } diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.h b/drivers/gpu/drm/msm/adreno/adreno_gpu.h index 17c5628de8a8..335c6a5fdca8 100644 --- a/drivers/gpu/drm/msm/adreno/adreno_gpu.h +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.h @@ -19,9 +19,11 @@ #define __ADRENO_GPU_H__ #include +#include +#include #include +#include -#include "msm_gpu.h" #include "adreno_ringbuffer.h" #include "adreno_common.xml.h" @@ -48,14 +50,13 @@ struct adreno_rbmemptrs { }; struct adreno_gpu { - struct msm_gpu base; struct platform_device *pdev; struct drm_device *drm; struct adreno_rev rev; const struct adreno_info *info; uint32_t revn; /* numeric revision name */ const struct adreno_gpu_funcs *funcs; - struct adreno_gem *gem; + const struct adreno_gem *gem; struct workqueue_struct *shared_wq; /* firmware: */ @@ -130,7 +131,7 @@ void adreno_wait_ring(struct adreno_gpu *gpu, uint32_t ndwords); int adreno_gpu_init(struct drm_device *drm, struct platform_device *pdev, struct adreno_gpu *gpu, const struct adreno_gpu_funcs *funcs, - struct adreno_gem *gem, struct workqueue_struct *wq, + const struct adreno_gem *gem, struct workqueue_struct *wq, struct adreno_rev rev); void adreno_gpu_cleanup(struct adreno_gpu *gpu); @@ -181,5 +182,11 @@ OUT_PKT3(struct adreno_ringbuffer *ring, uint8_t opcode, uint16_t cnt) OUT_RING(ring, CP_TYPE3_PKT | ((cnt-1) << 16) | ((opcode & 0xFF) << 8)); } +/* for the generated headers: */ +#define INVALID_IDX(idx) ({BUG(); 0;}) +#define fui(x) ({BUG(); 0;}) +#define util_float_to_half(x) ({BUG(); 0;}) + +#define DBG(fmt, ...) DRM_DEBUG(fmt"\n", ##__VA_ARGS__) #endif /* __ADRENO_GPU_H__ */ -- cgit v1.2.3