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 6struct nv50_disp_dmac { 7 const struct nv50_disp_dmac_func *func; 8 struct nv50_disp_chan base; 9 u32 push; 10}; 11 12struct 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 18int 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 23extern const struct nv50_disp_dmac_func nv50_disp_dmac_func; 24int nv50_disp_dmac_bind(struct nv50_disp_dmac *, struct nvkm_object *, u32); 25extern const struct nv50_disp_dmac_func nv50_disp_core_func; 26 27extern const struct nv50_disp_dmac_func gf119_disp_dmac_func; 28void gf119_disp_dmac_fini(struct nv50_disp_dmac *); 29int gf119_disp_dmac_bind(struct nv50_disp_dmac *, struct nvkm_object *, u32); 30extern const struct nv50_disp_dmac_func gf119_disp_core_func; 31void gf119_disp_core_fini(struct nv50_disp_dmac *); 32 33extern const struct nv50_disp_dmac_func gp104_disp_dmac_func; 34 35struct 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 47int 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 **); 52int 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 **); 57int 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 63extern const struct nv50_disp_dmac_oclass nv50_disp_core_oclass; 64extern const struct nv50_disp_dmac_oclass nv50_disp_base_oclass; 65extern const struct nv50_disp_dmac_oclass nv50_disp_ovly_oclass; 66 67extern const struct nv50_disp_dmac_oclass g84_disp_core_oclass; 68extern const struct nv50_disp_dmac_oclass g84_disp_base_oclass; 69extern const struct nv50_disp_dmac_oclass g84_disp_ovly_oclass; 70 71extern const struct nv50_disp_dmac_oclass g94_disp_core_oclass; 72 73extern const struct nv50_disp_dmac_oclass gt200_disp_core_oclass; 74extern const struct nv50_disp_dmac_oclass gt200_disp_base_oclass; 75extern const struct nv50_disp_dmac_oclass gt200_disp_ovly_oclass; 76 77extern const struct nv50_disp_dmac_oclass gt215_disp_core_oclass; 78extern const struct nv50_disp_dmac_oclass gt215_disp_base_oclass; 79extern const struct nv50_disp_dmac_oclass gt215_disp_ovly_oclass; 80 81extern const struct nv50_disp_dmac_oclass gf119_disp_core_oclass; 82extern const struct nv50_disp_dmac_oclass gf119_disp_base_oclass; 83extern const struct nv50_disp_dmac_oclass gf119_disp_ovly_oclass; 84 85extern const struct nv50_disp_dmac_oclass gk104_disp_core_oclass; 86extern const struct nv50_disp_dmac_oclass gk104_disp_base_oclass; 87extern const struct nv50_disp_dmac_oclass gk104_disp_ovly_oclass; 88 89extern const struct nv50_disp_dmac_oclass gk110_disp_core_oclass; 90extern const struct nv50_disp_dmac_oclass gk110_disp_base_oclass; 91 92extern const struct nv50_disp_dmac_oclass gm107_disp_core_oclass; 93 94extern const struct nv50_disp_dmac_oclass gm200_disp_core_oclass; 95 96extern const struct nv50_disp_dmac_oclass gp100_disp_core_oclass; 97 98extern const struct nv50_disp_dmac_oclass gp104_disp_core_oclass; 99extern const struct nv50_disp_dmac_oclass gp104_disp_base_oclass; 100extern const struct nv50_disp_dmac_oclass gp104_disp_ovly_oclass; 101#endif 102