1 #ifndef __NVKM_SW_NV50_H__ 2 #define __NVKM_SW_NV50_H__ 3 #include "priv.h" 4 #include "chan.h" 5 #include "nvsw.h" 6 #include <core/notify.h> 7 8 struct nv50_sw_oclass { 9 struct nvkm_oclass base; 10 struct nvkm_oclass *cclass; 11 struct nvkm_oclass *sclass; 12 }; 13 14 int nv50_sw_ctor(struct nvkm_object *, struct nvkm_object *, 15 struct nvkm_oclass *, void *, u32, 16 struct nvkm_object **); 17 18 struct nv50_sw_cclass { 19 struct nvkm_oclass base; 20 int (*vblank)(struct nvkm_notify *); 21 }; 22 23 struct nv50_sw_chan { 24 struct nvkm_sw_chan base; 25 struct { 26 struct nvkm_notify notify[4]; 27 u32 channel; 28 u32 ctxdma; 29 u64 offset; 30 u32 value; 31 } vblank; 32 }; 33 34 int nv50_sw_context_ctor(struct nvkm_object *, 35 struct nvkm_object *, 36 struct nvkm_oclass *, void *, u32, 37 struct nvkm_object **); 38 void nv50_sw_context_dtor(struct nvkm_object *); 39 40 int nv50_sw_mthd_vblsem_value(struct nvkm_object *, u32, void *, u32); 41 int nv50_sw_mthd_vblsem_release(struct nvkm_object *, u32, void *, u32); 42 int nv50_sw_mthd_flip(struct nvkm_object *, u32, void *, u32); 43 #endif 44