License cleanup: add SPDX GPL-2.0 license identifier to files with no license
[linux-block.git] / drivers / gpu / drm / nouveau / nvkm / engine / disp / dmacnv50.h
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"
6
7 struct nv50_disp_dmac {
8         const struct nv50_disp_dmac_func *func;
9         struct nv50_disp_chan base;
10         u32 push;
11 };
12
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);
17 };
18
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 **);
23
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;
27
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 *);
33
34 extern const struct nv50_disp_dmac_func gp102_disp_dmac_func;
35
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;
46 };
47
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 **);
63
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;
67
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;
71
72 extern const struct nv50_disp_dmac_oclass g94_disp_core_oclass;
73
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;
77
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;
81
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;
85
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;
89
90 extern const struct nv50_disp_dmac_oclass gk110_disp_core_oclass;
91 extern const struct nv50_disp_dmac_oclass gk110_disp_base_oclass;
92
93 extern const struct nv50_disp_dmac_oclass gm107_disp_core_oclass;
94
95 extern const struct nv50_disp_dmac_oclass gm200_disp_core_oclass;
96
97 extern const struct nv50_disp_dmac_oclass gp100_disp_core_oclass;
98
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