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