summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/msm/msm_drv.c
diff options
context:
space:
mode:
authorLucas Stach <l.stach@pengutronix.de>2013-09-13 16:19:37 +0200
committerLucas Stach <l.stach@pengutronix.de>2013-09-17 08:45:17 +0200
commitf64f0f4bf4b45f21027026a48ec6c2f3aa96345e (patch)
treef91c1b84328fdf77ee97694946f01436d15cc1a9 /drivers/gpu/drm/msm/msm_drv.c
parent8924b399eb5a9547495581a228e6b175006c042f (diff)
downloadlinux-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.c51
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;