• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef __NOUVEAU_DMAOBJ_H__
2 #define __NOUVEAU_DMAOBJ_H__
3 
4 #include <core/object.h>
5 #include <core/engine.h>
6 
7 struct nouveau_gpuobj;
8 
9 struct nouveau_dmaobj {
10 	struct nouveau_object base;
11 	u32 target;
12 	u32 access;
13 	u64 start;
14 	u64 limit;
15 	u32 conf0;
16 };
17 
18 struct nouveau_dmaeng {
19 	struct nouveau_engine base;
20 
21 	/* creates a "physical" dma object from a struct nouveau_dmaobj */
22 	int (*bind)(struct nouveau_dmaeng *dmaeng,
23 		    struct nouveau_object *parent,
24 		    struct nouveau_dmaobj *dmaobj,
25 		    struct nouveau_gpuobj **);
26 };
27 
28 #define nouveau_dmaeng_create(p,e,c,d)                                         \
29 	nouveau_engine_create((p), (e), (c), true, "DMAOBJ", "dmaobj", (d))
30 #define nouveau_dmaeng_destroy(p)                                              \
31 	nouveau_engine_destroy(&(p)->base)
32 #define nouveau_dmaeng_init(p)                                                 \
33 	nouveau_engine_init(&(p)->base)
34 #define nouveau_dmaeng_fini(p,s)                                               \
35 	nouveau_engine_fini(&(p)->base, (s))
36 
37 #define _nouveau_dmaeng_dtor _nouveau_engine_dtor
38 #define _nouveau_dmaeng_init _nouveau_engine_init
39 #define _nouveau_dmaeng_fini _nouveau_engine_fini
40 
41 extern struct nouveau_oclass nv04_dmaeng_oclass;
42 extern struct nouveau_oclass nv50_dmaeng_oclass;
43 extern struct nouveau_oclass nvc0_dmaeng_oclass;
44 extern struct nouveau_oclass nvd0_dmaeng_oclass;
45 
46 extern struct nouveau_oclass nouveau_dmaobj_sclass[];
47 
48 #endif
49