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