1 #ifndef __NVKM_SW_NV50_H__
2 #define __NVKM_SW_NV50_H__
3 #define nv50_sw_chan(p) container_of((p), struct nv50_sw_chan, base)
4 #include "priv.h"
5 #include "chan.h"
6 #include "nvsw.h"
7 #include <core/notify.h>
8 
9 struct nv50_sw_oclass {
10 	struct nvkm_oclass base;
11 	const struct nvkm_sw_func *func;
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 	const struct nvkm_sw_chan_func *chan;
22 };
23 
24 struct nv50_sw_chan {
25 	struct nvkm_sw_chan base;
26 	struct {
27 		struct nvkm_notify notify[4];
28 		u32 ctxdma;
29 		u64 offset;
30 		u32 value;
31 	} vblank;
32 };
33 
34 void *nv50_sw_chan_dtor(struct nvkm_sw_chan *);
35 #endif
36