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 void gf119_disp_dmac_fini(struct nv50_disp_dmac *); 29 int gf119_disp_dmac_bind(struct nv50_disp_dmac *, struct nvkm_object *, u32); 30 extern const struct nv50_disp_dmac_func gf119_disp_core_func; 31 void gf119_disp_core_fini(struct nv50_disp_dmac *); 32 33 extern const struct nv50_disp_dmac_func gp104_disp_dmac_func; 34 35 struct nv50_disp_dmac_oclass { 36 int (*ctor)(const struct nv50_disp_dmac_func *, 37 const struct nv50_disp_chan_mthd *, 38 struct nv50_disp_root *, int chid, 39 const struct nvkm_oclass *, void *data, u32 size, 40 struct nvkm_object **); 41 struct nvkm_sclass base; 42 const struct nv50_disp_dmac_func *func; 43 const struct nv50_disp_chan_mthd *mthd; 44 int chid; 45 }; 46 47 int nv50_disp_core_new(const struct nv50_disp_dmac_func *, 48 const struct nv50_disp_chan_mthd *, 49 struct nv50_disp_root *, int chid, 50 const struct nvkm_oclass *oclass, void *data, u32 size, 51 struct nvkm_object **); 52 int nv50_disp_base_new(const struct nv50_disp_dmac_func *, 53 const struct nv50_disp_chan_mthd *, 54 struct nv50_disp_root *, int chid, 55 const struct nvkm_oclass *oclass, void *data, u32 size, 56 struct nvkm_object **); 57 int nv50_disp_ovly_new(const struct nv50_disp_dmac_func *, 58 const struct nv50_disp_chan_mthd *, 59 struct nv50_disp_root *, int chid, 60 const struct nvkm_oclass *oclass, void *data, u32 size, 61 struct nvkm_object **); 62 63 extern const struct nv50_disp_dmac_oclass nv50_disp_core_oclass; 64 extern const struct nv50_disp_dmac_oclass nv50_disp_base_oclass; 65 extern const struct nv50_disp_dmac_oclass nv50_disp_ovly_oclass; 66 67 extern const struct nv50_disp_dmac_oclass g84_disp_core_oclass; 68 extern const struct nv50_disp_dmac_oclass g84_disp_base_oclass; 69 extern const struct nv50_disp_dmac_oclass g84_disp_ovly_oclass; 70 71 extern const struct nv50_disp_dmac_oclass g94_disp_core_oclass; 72 73 extern const struct nv50_disp_dmac_oclass gt200_disp_core_oclass; 74 extern const struct nv50_disp_dmac_oclass gt200_disp_base_oclass; 75 extern const struct nv50_disp_dmac_oclass gt200_disp_ovly_oclass; 76 77 extern const struct nv50_disp_dmac_oclass gt215_disp_core_oclass; 78 extern const struct nv50_disp_dmac_oclass gt215_disp_base_oclass; 79 extern const struct nv50_disp_dmac_oclass gt215_disp_ovly_oclass; 80 81 extern const struct nv50_disp_dmac_oclass gf119_disp_core_oclass; 82 extern const struct nv50_disp_dmac_oclass gf119_disp_base_oclass; 83 extern const struct nv50_disp_dmac_oclass gf119_disp_ovly_oclass; 84 85 extern const struct nv50_disp_dmac_oclass gk104_disp_core_oclass; 86 extern const struct nv50_disp_dmac_oclass gk104_disp_base_oclass; 87 extern const struct nv50_disp_dmac_oclass gk104_disp_ovly_oclass; 88 89 extern const struct nv50_disp_dmac_oclass gk110_disp_core_oclass; 90 extern const struct nv50_disp_dmac_oclass gk110_disp_base_oclass; 91 92 extern const struct nv50_disp_dmac_oclass gm107_disp_core_oclass; 93 94 extern const struct nv50_disp_dmac_oclass gm200_disp_core_oclass; 95 96 extern const struct nv50_disp_dmac_oclass gp100_disp_core_oclass; 97 98 extern const struct nv50_disp_dmac_oclass gp104_disp_core_oclass; 99 extern const struct nv50_disp_dmac_oclass gp104_disp_base_oclass; 100 extern const struct nv50_disp_dmac_oclass gp104_disp_ovly_oclass; 101 #endif 102