1 #ifndef __NVKM_FALCON_H__
2 #define __NVKM_FALCON_H__
3 #define nvkm_falcon(p) container_of((p), struct nvkm_falcon, engine)
4 #include <core/engine.h>
7 struct nvkm_falcon_data {
12 struct nvkm_engine engine;
13 const struct nvkm_falcon_func *func;
19 struct nvkm_memory *core;
35 struct nvkm_falcon_func {
36 void (*intr)(struct nvkm_falcon *, struct nvkm_fifo_chan *);
37 struct nvkm_sclass sclass[];
40 #define nv_falcon(priv) ((struct nvkm_falcon *)priv)
42 #define nvkm_falcon_create(a,p,e,c,b,d,i,f,r) \
43 nvkm_falcon_create_((a), (p), (e), (c), (b), (d), (i), (f), \
44 sizeof(**r),(void **)r)
45 #define nvkm_falcon_destroy(p) \
46 nvkm_engine_destroy(&(p)->engine)
47 #define nvkm_falcon_init(p) ({ \
48 struct nvkm_falcon *_falcon = (p); \
49 _nvkm_falcon_init(nv_object(_falcon)); \
51 #define nvkm_falcon_fini(p,s) ({ \
52 struct nvkm_falcon *_falcon = (p); \
53 _nvkm_falcon_fini(nv_object(_falcon), (s)); \
56 int nvkm_falcon_create_(const struct nvkm_falcon_func *,
57 struct nvkm_object *, struct nvkm_object *,
58 struct nvkm_oclass *, u32, bool, const char *,
59 const char *, int, void **);
60 #define _nvkm_falcon_dtor _nvkm_engine_dtor
61 int _nvkm_falcon_init(struct nvkm_object *);
62 int _nvkm_falcon_fini(struct nvkm_object *, bool);