1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef __NV50_DISP_DMAC_H__
3 #define __NV50_DISP_DMAC_H__
4 #define nv50_disp_dmac(p) container_of((p), struct nv50_disp_dmac, base)
7 struct nv50_disp_dmac
{
8 const struct nv50_disp_dmac_func
*func
;
9 struct nv50_disp_chan base
;
13 struct nv50_disp_dmac_func
{
14 int (*init
)(struct nv50_disp_dmac
*);
15 void (*fini
)(struct nv50_disp_dmac
*);
16 int (*bind
)(struct nv50_disp_dmac
*, struct nvkm_object
*, u32 handle
);
19 int nv50_disp_dmac_new_(const struct nv50_disp_dmac_func
*,
20 const struct nv50_disp_chan_mthd
*,
21 struct nv50_disp_root
*, int chid
, int head
, u64 push
,
22 const struct nvkm_oclass
*, struct nvkm_object
**);
24 extern const struct nv50_disp_dmac_func nv50_disp_dmac_func
;
25 int nv50_disp_dmac_bind(struct nv50_disp_dmac
*, struct nvkm_object
*, u32
);
26 extern const struct nv50_disp_dmac_func nv50_disp_core_func
;
28 extern const struct nv50_disp_dmac_func gf119_disp_dmac_func
;
29 void gf119_disp_dmac_fini(struct nv50_disp_dmac
*);
30 int gf119_disp_dmac_bind(struct nv50_disp_dmac
*, struct nvkm_object
*, u32
);
31 extern const struct nv50_disp_dmac_func gf119_disp_core_func
;
32 void gf119_disp_core_fini(struct nv50_disp_dmac
*);
34 extern const struct nv50_disp_dmac_func gp102_disp_dmac_func
;
36 struct nv50_disp_dmac_oclass
{
37 int (*ctor
)(const struct nv50_disp_dmac_func
*,
38 const struct nv50_disp_chan_mthd
*,
39 struct nv50_disp_root
*, int chid
,
40 const struct nvkm_oclass
*, void *data
, u32 size
,
41 struct nvkm_object
**);
42 struct nvkm_sclass base
;
43 const struct nv50_disp_dmac_func
*func
;
44 const struct nv50_disp_chan_mthd
*mthd
;
48 int nv50_disp_core_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_base_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 int nv50_disp_ovly_new(const struct nv50_disp_dmac_func
*,
59 const struct nv50_disp_chan_mthd
*,
60 struct nv50_disp_root
*, int chid
,
61 const struct nvkm_oclass
*oclass
, void *data
, u32 size
,
62 struct nvkm_object
**);
64 extern const struct nv50_disp_dmac_oclass nv50_disp_core_oclass
;
65 extern const struct nv50_disp_dmac_oclass nv50_disp_base_oclass
;
66 extern const struct nv50_disp_dmac_oclass nv50_disp_ovly_oclass
;
68 extern const struct nv50_disp_dmac_oclass g84_disp_core_oclass
;
69 extern const struct nv50_disp_dmac_oclass g84_disp_base_oclass
;
70 extern const struct nv50_disp_dmac_oclass g84_disp_ovly_oclass
;
72 extern const struct nv50_disp_dmac_oclass g94_disp_core_oclass
;
74 extern const struct nv50_disp_dmac_oclass gt200_disp_core_oclass
;
75 extern const struct nv50_disp_dmac_oclass gt200_disp_base_oclass
;
76 extern const struct nv50_disp_dmac_oclass gt200_disp_ovly_oclass
;
78 extern const struct nv50_disp_dmac_oclass gt215_disp_core_oclass
;
79 extern const struct nv50_disp_dmac_oclass gt215_disp_base_oclass
;
80 extern const struct nv50_disp_dmac_oclass gt215_disp_ovly_oclass
;
82 extern const struct nv50_disp_dmac_oclass gf119_disp_core_oclass
;
83 extern const struct nv50_disp_dmac_oclass gf119_disp_base_oclass
;
84 extern const struct nv50_disp_dmac_oclass gf119_disp_ovly_oclass
;
86 extern const struct nv50_disp_dmac_oclass gk104_disp_core_oclass
;
87 extern const struct nv50_disp_dmac_oclass gk104_disp_base_oclass
;
88 extern const struct nv50_disp_dmac_oclass gk104_disp_ovly_oclass
;
90 extern const struct nv50_disp_dmac_oclass gk110_disp_core_oclass
;
91 extern const struct nv50_disp_dmac_oclass gk110_disp_base_oclass
;
93 extern const struct nv50_disp_dmac_oclass gm107_disp_core_oclass
;
95 extern const struct nv50_disp_dmac_oclass gm200_disp_core_oclass
;
97 extern const struct nv50_disp_dmac_oclass gp100_disp_core_oclass
;
99 extern const struct nv50_disp_dmac_oclass gp102_disp_core_oclass
;
100 extern const struct nv50_disp_dmac_oclass gp102_disp_base_oclass
;
101 extern const struct nv50_disp_dmac_oclass gp102_disp_ovly_oclass
;