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)
6 struct nv50_disp_dmac
{
7 const struct nv50_disp_dmac_func
*func
;
8 struct nv50_disp_chan base
;
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
);
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
**);
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
;
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
*);
33 extern const struct nv50_disp_dmac_func gp104_disp_dmac_func
;
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
;
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
**);
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
;
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
;
71 extern const struct nv50_disp_dmac_oclass g94_disp_core_oclass
;
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
;
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
;
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
;
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
;
89 extern const struct nv50_disp_dmac_oclass gk110_disp_core_oclass
;
90 extern const struct nv50_disp_dmac_oclass gk110_disp_base_oclass
;
92 extern const struct nv50_disp_dmac_oclass gm107_disp_core_oclass
;
94 extern const struct nv50_disp_dmac_oclass gm200_disp_core_oclass
;
96 extern const struct nv50_disp_dmac_oclass gp100_disp_core_oclass
;
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
;