1#ifndef __NVKM_SW_NV50_H__
2#define __NVKM_SW_NV50_H__
3
4#include <engine/software.h>
5
6struct nv50_software_oclass {
7 struct nouveau_oclass base;
8 struct nouveau_oclass *cclass;
9 struct nouveau_oclass *sclass;
10};
11
12struct nv50_software_priv {
13 struct nouveau_software base;
14};
15
16int nv50_software_ctor(struct nouveau_object *, struct nouveau_object *,
17 struct nouveau_oclass *, void *, u32,
18 struct nouveau_object **);
19
20struct nv50_software_cclass {
21 struct nouveau_oclass base;
22 int (*vblank)(void *, int);
23};
24
25struct nv50_software_chan {
26 struct nouveau_software_chan base;
27 struct {
28 struct nouveau_eventh **event;
29 int nr_event;
30 u32 channel;
31 u32 ctxdma;
32 u64 offset;
33 u32 value;
34 } vblank;
35};
36
37int nv50_software_context_ctor(struct nouveau_object *,
38 struct nouveau_object *,
39 struct nouveau_oclass *, void *, u32,
40 struct nouveau_object **);
41void nv50_software_context_dtor(struct nouveau_object *);
42
43int nv50_software_mthd_vblsem_value(struct nouveau_object *, u32, void *, u32);
44int nv50_software_mthd_vblsem_release(struct nouveau_object *, u32, void *, u32);
45int nv50_software_mthd_flip(struct nouveau_object *, u32, void *, u32);
46
47#endif
48