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