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