xref: /openbmc/linux/drivers/gpu/drm/nouveau/nvkm/engine/fifo/runl.h (revision 6de125383a5cce5f0d9235a6d3a9ae83dc5d299e)
1 #ifndef __NVKM_RUNL_H__
2 #define __NVKM_RUNL_H__
3 #include <core/os.h>
4 struct nvkm_cgrp;
5 struct nvkm_memory;
6 enum nvkm_subdev_type;
7 
8 struct nvkm_engn {
9 	const struct nvkm_engn_func {
10 	} *func;
11 	struct nvkm_runl *runl;
12 	int id;
13 
14 	struct nvkm_engine *engine;
15 
16 	struct list_head head;
17 };
18 
19 #define ENGN_PRINT(e,l,p,f,a...)                                                           \
20 	RUNL_PRINT((e)->runl, l, p, "%02d[%8s]:"f, (e)->id, (e)->engine->subdev.name, ##a)
21 #define ENGN_DEBUG(e,f,a...) ENGN_PRINT((e), DEBUG,   info, " "f"\n", ##a)
22 
23 struct nvkm_runl {
24 	const struct nvkm_runl_func {
25 	} *func;
26 	struct nvkm_fifo *fifo;
27 	int id;
28 	u32 addr;
29 
30 	struct nvkm_chid *cgid;
31 	struct nvkm_chid *chid;
32 
33 	struct list_head engns;
34 
35 	struct nvkm_runq *runq[2];
36 	int runq_nr;
37 
38 	struct list_head head;
39 };
40 
41 struct nvkm_runl *nvkm_runl_new(struct nvkm_fifo *, int runi, u32 addr, int id_nr);
42 struct nvkm_runl *nvkm_runl_get(struct nvkm_fifo *, int runi, u32 addr);
43 struct nvkm_engn *nvkm_runl_add(struct nvkm_runl *, int engi, const struct nvkm_engn_func *,
44 				enum nvkm_subdev_type, int inst);
45 void nvkm_runl_del(struct nvkm_runl *);
46 
47 #define nvkm_runl_foreach(runl,fifo) list_for_each_entry((runl), &(fifo)->runls, head)
48 #define nvkm_runl_foreach_engn(engn,runl) list_for_each_entry((engn), &(runl)->engns, head)
49 
50 #define RUNL_PRINT(r,l,p,f,a...)                                                          \
51 	nvkm_printk__(&(r)->fifo->engine.subdev, NV_DBG_##l, p, "%06x:"f, (r)->addr, ##a)
52 #define RUNL_ERROR(r,f,a...) RUNL_PRINT((r), ERROR,    err, " "f"\n", ##a)
53 #define RUNL_DEBUG(r,f,a...) RUNL_PRINT((r), DEBUG,   info, " "f"\n", ##a)
54 #define RUNL_TRACE(r,f,a...) RUNL_PRINT((r), TRACE,   info, " "f"\n", ##a)
55 #endif
56