summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/nouveau/include
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2015-08-20 07:54:18 +0300
committerBen Skeggs <bskeggs@redhat.com>2015-08-28 05:40:38 +0300
commita83d8872fc8a482e47f7375ab66006e1f8c1fd59 (patch)
treeae2559ef6c74c0667e4deee1225b5ef6b7664372 /drivers/gpu/drm/nouveau/include
parent344c2d429dd86b1b0113177e18f15adb74e9d936 (diff)
downloadlinux-a83d8872fc8a482e47f7375ab66006e1f8c1fd59.tar.xz
drm/nouveau/falcon: remove dependence on namedb/engctx lookup
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/include')
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/engine/ce.h4
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/engine/falcon.h20
2 files changed, 14 insertions, 10 deletions
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/engine/ce.h b/drivers/gpu/drm/nouveau/include/nvkm/engine/ce.h
index e832f729e1b4..43c18abd4034 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/engine/ce.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/engine/ce.h
@@ -1,8 +1,8 @@
#ifndef __NVKM_CE_H__
#define __NVKM_CE_H__
-#include <core/engine.h>
+#include <engine/falcon.h>
-void gt215_ce_intr(struct nvkm_subdev *);
+void gt215_ce_intr(struct nvkm_falcon *, struct nvkm_fifo_chan *);
extern struct nvkm_oclass gt215_ce_oclass;
extern struct nvkm_oclass gf100_ce0_oclass;
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/engine/falcon.h b/drivers/gpu/drm/nouveau/include/nvkm/engine/falcon.h
index 5e6f1f518ea5..bdadc8b60281 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/engine/falcon.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/engine/falcon.h
@@ -1,6 +1,7 @@
#ifndef __NVKM_FALCON_H__
#define __NVKM_FALCON_H__
#include <core/engctx.h>
+struct nvkm_fifo_chan;
struct nvkm_falcon_chan {
struct nvkm_engctx base;
@@ -30,6 +31,7 @@ struct nvkm_falcon_data {
struct nvkm_falcon {
struct nvkm_engine engine;
+ const struct nvkm_falcon_func *func;
u32 addr;
u8 version;
@@ -51,10 +53,14 @@ struct nvkm_falcon {
} data;
};
+struct nvkm_falcon_func {
+ void (*intr)(struct nvkm_falcon *, struct nvkm_fifo_chan *);
+};
+
#define nv_falcon(priv) ((struct nvkm_falcon *)priv)
-#define nvkm_falcon_create(p,e,c,b,d,i,f,r) \
- nvkm_falcon_create_((p), (e), (c), (b), (d), (i), (f), \
+#define nvkm_falcon_create(a,p,e,c,b,d,i,f,r) \
+ nvkm_falcon_create_((a), (p), (e), (c), (b), (d), (i), (f), \
sizeof(**r),(void **)r)
#define nvkm_falcon_destroy(p) \
nvkm_engine_destroy(&(p)->engine)
@@ -67,12 +73,10 @@ struct nvkm_falcon {
_nvkm_falcon_fini(nv_object(_falcon), (s)); \
})
-int nvkm_falcon_create_(struct nvkm_object *, struct nvkm_object *,
- struct nvkm_oclass *, u32, bool, const char *,
- const char *, int, void **);
-
-void nvkm_falcon_intr(struct nvkm_subdev *subdev);
-
+int nvkm_falcon_create_(const struct nvkm_falcon_func *,
+ struct nvkm_object *, struct nvkm_object *,
+ struct nvkm_oclass *, u32, bool, const char *,
+ const char *, int, void **);
#define _nvkm_falcon_dtor _nvkm_engine_dtor
int _nvkm_falcon_init(struct nvkm_object *);
int _nvkm_falcon_fini(struct nvkm_object *, bool);