]> git.kernelconcepts.de Git - karo-tx-linux.git/blob - drivers/gpu/drm/nouveau/nvkm/engine/disp/dmacnv50.h
Merge tag 'driver-core-4.13-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git...
[karo-tx-linux.git] / drivers / gpu / drm / nouveau / nvkm / engine / disp / dmacnv50.h
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
6 struct nv50_disp_dmac {
7         const struct nv50_disp_dmac_func *func;
8         struct nv50_disp_chan base;
9         u32 push;
10 };
11
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);
16 };
17
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 **);
22
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;
26
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 *);
32
33 extern const struct nv50_disp_dmac_func gp102_disp_dmac_func;
34
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;
44         int chid;
45 };
46
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 **);
62
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;
66
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;
70
71 extern const struct nv50_disp_dmac_oclass g94_disp_core_oclass;
72
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;
76
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;
80
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;
84
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;
88
89 extern const struct nv50_disp_dmac_oclass gk110_disp_core_oclass;
90 extern const struct nv50_disp_dmac_oclass gk110_disp_base_oclass;
91
92 extern const struct nv50_disp_dmac_oclass gm107_disp_core_oclass;
93
94 extern const struct nv50_disp_dmac_oclass gm200_disp_core_oclass;
95
96 extern const struct nv50_disp_dmac_oclass gp100_disp_core_oclass;
97
98 extern const struct nv50_disp_dmac_oclass gp102_disp_core_oclass;
99 extern const struct nv50_disp_dmac_oclass gp102_disp_base_oclass;
100 extern const struct nv50_disp_dmac_oclass gp102_disp_ovly_oclass;
101 #endif