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