Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost
[cris-mirror.git] / drivers / gpu / drm / nouveau / nvkm / engine / disp / dmacnv50.h
blobf9b98211da6a69be1fff7ec29ed37d0b55d9f419
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)
5 #include "channv50.h"
7 struct nv50_disp_dmac {
8 const struct nv50_disp_dmac_func *func;
9 struct nv50_disp_chan base;
10 u32 push;
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;
45 int chid;
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;
102 #endif