1 #ifndef __NVKM_XTENSA_H__
2 #define __NVKM_XTENSA_H__
3 #define nvkm_xtensa(p) container_of((p), struct nvkm_xtensa, engine)
4 #include <core/engine.h>
5 
6 struct nvkm_xtensa {
7 	struct nvkm_engine engine;
8 	const struct nvkm_xtensa_func *func;
9 
10 	u32 addr;
11 	struct nvkm_memory *gpu_fw;
12 	u32 fifo_val;
13 	u32 unkd28;
14 };
15 
16 struct nvkm_xtensa_func {
17 	void (*init)(struct nvkm_xtensa *);
18 	struct nvkm_sclass sclass[];
19 };
20 
21 #define nvkm_xtensa_create(p,e,c,b,d,i,f,r)				\
22 	nvkm_xtensa_create_((p), (e), (c), (b), (d), (i), (f),	\
23 			       sizeof(**r),(void **)r)
24 
25 int nvkm_xtensa_create_(struct nvkm_object *,
26 			   struct nvkm_object *,
27 			   struct nvkm_oclass *, u32, bool,
28 			   const char *, const char *,
29 			   int, void **);
30 #define _nvkm_xtensa_dtor _nvkm_engine_dtor
31 int _nvkm_xtensa_init(struct nvkm_object *);
32 int _nvkm_xtensa_fini(struct nvkm_object *, bool);
33 #endif
34