diff options
author | Lucas Stach <l.stach@pengutronix.de> | 2013-09-13 16:19:37 +0200 |
---|---|---|
committer | Lucas Stach <l.stach@pengutronix.de> | 2013-09-17 08:45:17 +0200 |
commit | f64f0f4bf4b45f21027026a48ec6c2f3aa96345e (patch) | |
tree | f91c1b84328fdf77ee97694946f01436d15cc1a9 /drivers/gpu/drm/msm/msm_drv.c | |
parent | 8924b399eb5a9547495581a228e6b175006c042f (diff) | |
download | linux-f64f0f4bf4b45f21027026a48ec6c2f3aa96345e.tar.gz linux-f64f0f4bf4b45f21027026a48ec6c2f3aa96345e.tar.xz |
WIP: adreno: don't call direcly into msm gem function, but use interface
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Diffstat (limited to 'drivers/gpu/drm/msm/msm_drv.c')
-rw-r--r-- | drivers/gpu/drm/msm/msm_drv.c | 51 |
1 files changed, 50 insertions, 1 deletions
diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c index aa9513408658..2f58c5908732 100644 --- a/drivers/gpu/drm/msm/msm_drv.c +++ b/drivers/gpu/drm/msm/msm_drv.c @@ -249,6 +249,55 @@ fail: return ret; } +/* Urgh... this should all move a level down - when we got the init seq right */ +static struct drm_gem_object * +gem_new(void *gem_priv, uint32_t size, uint32_t flags) +{ + struct msm_gpu *gpu = gem_priv; + return msm_gem_new(gpu->dev, size, flags); +} + +static int +gem_get_iova_locked(void *gem_priv, struct drm_gem_object *obj, uint32_t *iova) +{ + struct msm_gpu *gpu = gem_priv; + return msm_gem_get_iova_locked(obj, gpu->id, iova); +} + +static int +gem_get_iova(void *gem_priv, struct drm_gem_object *obj, uint32_t *iova) +{ + struct msm_gpu *gpu = gem_priv; + return msm_gem_get_iova(obj, gpu->id, iova); +} + +static void +gem_put_iova(void *gem_priv, struct drm_gem_object *obj) +{ + struct msm_gpu *gpu = gem_priv; + return msm_gem_put_iova(obj, gpu->id); +} + +static void * +gem_vaddr_locked(void *gem_priv, struct drm_gem_object *obj) +{ + return msm_gem_vaddr_locked(obj); +} + +static void * +gem_vaddr(void *gem_priv, struct drm_gem_object *obj) +{ + return msm_gem_vaddr(obj); +} +static struct adreno_gem msm_gem_funcs = { + .gem_new = gem_new, + .gem_get_iova = gem_get_iova, + .gem_get_iova_locked = gem_get_iova_locked, + .gem_put_iova = gem_put_iova, + .gem_vaddr = gem_vaddr, + .gem_vaddr_locked = gem_vaddr_locked +}; + static void load_gpu(struct drm_device *dev) { struct msm_drm_private *priv = dev->dev_private; @@ -258,7 +307,7 @@ static void load_gpu(struct drm_device *dev) return; mutex_lock(&dev->struct_mutex); - gpu = a3xx_gpu_init(dev); + gpu = a3xx_gpu_init(dev, &msm_gem_funcs); if (IS_ERR(gpu)) { dev_warn(dev->dev, "failed to load a3xx gpu\n"); gpu = NULL; |