1 #ifndef __NV50_DISP_DMAC_H__ 2 #define __NV50_DISP_DMAC_H__ 3 #define nv50_disp_dmac(p) container_of((p), struct nv50_disp_dmac, base) 4 #include "channv50.h" 5 6 struct nv50_disp_dmac { 7 const struct nv50_disp_dmac_func *func; 8 struct nv50_disp_chan base; 9 u32 push; 10 }; 11 12 struct nv50_disp_dmac_func { 13 int (*init)(struct nv50_disp_dmac *); 14 void (*fini)(struct nv50_disp_dmac *); 15 int (*bind)(struct nv50_disp_dmac *, struct nvkm_object *, u32 handle); 16 }; 17 18 int nv50_disp_dmac_new_(const struct nv50_disp_dmac_func *, 19 const struct nv50_disp_chan_mthd *, 20 struct nv50_disp_root *, int chid, int head, u64 push, 21 const struct nvkm_oclass *, struct nvkm_object **); 22 23 extern const struct nv50_disp_dmac_func nv50_disp_dmac_func; 24 int nv50_disp_dmac_bind(struct nv50_disp_dmac *, struct nvkm_object *, u32); 25 extern const struct nv50_disp_dmac_func nv50_disp_core_func; 26 27 extern const struct nv50_disp_dmac_func gf119_disp_dmac_func; 28 int gf119_disp_dmac_bind(struct nv50_disp_dmac *, struct nvkm_object *, u32); 29 extern const struct nv50_disp_dmac_func gf119_disp_core_func; 30 31 struct nv50_disp_dmac_oclass { 32 int (*ctor)(const struct nv50_disp_dmac_func *, 33 const struct nv50_disp_chan_mthd *, 34 struct nv50_disp_root *, int chid, 35 const struct nvkm_oclass *, void *data, u32 size, 36 struct nvkm_object **); 37 struct nvkm_sclass base; 38 const struct nv50_disp_dmac_func *func; 39 const struct nv50_disp_chan_mthd *mthd; 40 int chid; 41 }; 42 43 int nv50_disp_core_new(const struct nv50_disp_dmac_func *, 44 const struct nv50_disp_chan_mthd *, 45 struct nv50_disp_root *, int chid, 46 const struct nvkm_oclass *oclass, void *data, u32 size, 47 struct nvkm_object **); 48 int nv50_disp_base_new(const struct nv50_disp_dmac_func *, 49 const struct nv50_disp_chan_mthd *, 50 struct nv50_disp_root *, int chid, 51 const struct nvkm_oclass *oclass, void *data, u32 size, 52 struct nvkm_object **); 53 int nv50_disp_ovly_new(const struct nv50_disp_dmac_func *, 54 const struct nv50_disp_chan_mthd *, 55 struct nv50_disp_root *, int chid, 56 const struct nvkm_oclass *oclass, void *data, u32 size, 57 struct nvkm_object **); 58 59 extern const struct nv50_disp_dmac_oclass nv50_disp_core_oclass; 60 extern const struct nv50_disp_dmac_oclass nv50_disp_base_oclass; 61 extern const struct nv50_disp_dmac_oclass nv50_disp_ovly_oclass; 62 63 extern const struct nv50_disp_dmac_oclass g84_disp_core_oclass; 64 extern const struct nv50_disp_dmac_oclass g84_disp_base_oclass; 65 extern const struct nv50_disp_dmac_oclass g84_disp_ovly_oclass; 66 67 extern const struct nv50_disp_dmac_oclass g94_disp_core_oclass; 68 69 extern const struct nv50_disp_dmac_oclass gt200_disp_core_oclass; 70 extern const struct nv50_disp_dmac_oclass gt200_disp_base_oclass; 71 extern const struct nv50_disp_dmac_oclass gt200_disp_ovly_oclass; 72 73 extern const struct nv50_disp_dmac_oclass gt215_disp_core_oclass; 74 extern const struct nv50_disp_dmac_oclass gt215_disp_base_oclass; 75 extern const struct nv50_disp_dmac_oclass gt215_disp_ovly_oclass; 76 77 extern const struct nv50_disp_dmac_oclass gf119_disp_core_oclass; 78 extern const struct nv50_disp_dmac_oclass gf119_disp_base_oclass; 79 extern const struct nv50_disp_dmac_oclass gf119_disp_ovly_oclass; 80 81 extern const struct nv50_disp_dmac_oclass gk104_disp_core_oclass; 82 extern const struct nv50_disp_dmac_oclass gk104_disp_base_oclass; 83 extern const struct nv50_disp_dmac_oclass gk104_disp_ovly_oclass; 84 85 extern const struct nv50_disp_dmac_oclass gk110_disp_core_oclass; 86 extern const struct nv50_disp_dmac_oclass gk110_disp_base_oclass; 87 88 extern const struct nv50_disp_dmac_oclass gm107_disp_core_oclass; 89 90 extern const struct nv50_disp_dmac_oclass gm204_disp_core_oclass; 91 #endif 92