1 #ifndef __NOUVEAU_CHAN_H__
2 #define __NOUVEAU_CHAN_H__
3 
4 struct nouveau_cli;
5 
6 struct nouveau_channel {
7 	struct nouveau_cli *cli;
8 	struct nouveau_drm *drm;
9 
10 	u32 handle;
11 	u32 vram;
12 	u32 gart;
13 
14 	struct {
15 		struct nouveau_bo *buffer;
16 		struct nouveau_vma vma;
17 		u32 handle;
18 	} push;
19 
20 	/* TODO: this will be reworked in the near future */
21 	bool accel_done;
22 	void *fence;
23 	struct {
24 		int max;
25 		int free;
26 		int cur;
27 		int put;
28 		int ib_base;
29 		int ib_max;
30 		int ib_free;
31 		int ib_put;
32 	} dma;
33 	u32 user_get_hi;
34 	u32 user_get;
35 	u32 user_put;
36 
37 	struct nouveau_object *object;
38 };
39 
40 
41 int  nouveau_channel_new(struct nouveau_drm *, struct nouveau_cli *,
42 			 u32 parent, u32 handle, u32 arg0, u32 arg1,
43 			 struct nouveau_channel **);
44 void nouveau_channel_del(struct nouveau_channel **);
45 int  nouveau_channel_idle(struct nouveau_channel *);
46 
47 #endif
48