1 /* $NetBSD: chan.h,v 1.3 2021/12/18 23:45:37 riastradh Exp $ */ 2 3 /* SPDX-License-Identifier: MIT */ 4 #ifndef __NVKM_SW_CHAN_H__ 5 #define __NVKM_SW_CHAN_H__ 6 #define nvkm_sw_chan(p) container_of((p), struct nvkm_sw_chan, object) 7 #include <core/object.h> 8 #include <core/event.h> 9 10 #include "priv.h" 11 12 struct nvkm_sw_chan { 13 const struct nvkm_sw_chan_func *func; 14 struct nvkm_object object; 15 struct nvkm_sw *sw; 16 struct nvkm_fifo_chan *fifo; 17 struct list_head head; 18 19 struct nvkm_event event; 20 }; 21 22 struct nvkm_sw_chan_func { 23 void *(*dtor)(struct nvkm_sw_chan *); 24 bool (*mthd)(struct nvkm_sw_chan *, int subc, u32 mthd, u32 data); 25 }; 26 27 int nvkm_sw_chan_ctor(const struct nvkm_sw_chan_func *, struct nvkm_sw *, 28 struct nvkm_fifo_chan *, const struct nvkm_oclass *, 29 struct nvkm_sw_chan *); 30 bool nvkm_sw_chan_mthd(struct nvkm_sw_chan *, int subc, u32 mthd, u32 data); 31 #endif 32