diff options
Diffstat (limited to 'drivers/gpu/drm/nouveau/nvkm/engine/sw/chan.h')
-rw-r--r-- | drivers/gpu/drm/nouveau/nvkm/engine/sw/chan.h | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/sw/chan.h b/drivers/gpu/drm/nouveau/nvkm/engine/sw/chan.h index b5cf4c517a95..edebd9c30c0c 100644 --- a/drivers/gpu/drm/nouveau/nvkm/engine/sw/chan.h +++ b/drivers/gpu/drm/nouveau/nvkm/engine/sw/chan.h @@ -6,12 +6,22 @@ struct nvkm_sw_chan { struct nvkm_engctx base; + const struct nvkm_sw_chan_func *func; + struct nvkm_fifo_chan *fifo; + struct list_head head; struct nvkm_event event; }; -#define nvkm_sw_context_create(p,e,c,d) \ - nvkm_sw_chan_ctor((p), (e), (c), sizeof(**d), (void **)d) -int nvkm_sw_chan_ctor(struct nvkm_object *, struct nvkm_object *, +struct nvkm_sw_chan_func { + bool (*mthd)(struct nvkm_sw_chan *, int subc, u32 mthd, u32 data); +}; + +bool nvkm_sw_chan_mthd(struct nvkm_sw_chan *, int subc, u32 mthd, u32 data); + +#define nvkm_sw_context_create(f,p,e,c,d) \ + nvkm_sw_chan_ctor((f), (p), (e), (c), sizeof(**d), (void **)d) +int nvkm_sw_chan_ctor(const struct nvkm_sw_chan_func *, + struct nvkm_object *, struct nvkm_object *, struct nvkm_oclass *, int, void **); void nvkm_sw_chan_dtor(struct nvkm_object *); #define nvkm_sw_context_init(d) \ |