License cleanup: add SPDX GPL-2.0 license identifier to files with no license
[linux-2.6-block.git] / drivers / gpu / drm / nouveau / nvkm / engine / disp / dmacnv50.h
CommitLineData
b2441318 1/* SPDX-License-Identifier: GPL-2.0 */
2a7909c0
BS
2#ifndef __NV50_DISP_DMAC_H__
3#define __NV50_DISP_DMAC_H__
0ce41e3c 4#define nv50_disp_dmac(p) container_of((p), struct nv50_disp_dmac, base)
2a7909c0
BS
5#include "channv50.h"
6
7struct nv50_disp_dmac {
0ce41e3c 8 const struct nv50_disp_dmac_func *func;
2a7909c0
BS
9 struct nv50_disp_chan base;
10 u32 push;
11};
12
0ce41e3c
BS
13struct 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
19int 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
24extern const struct nv50_disp_dmac_func nv50_disp_dmac_func;
25int nv50_disp_dmac_bind(struct nv50_disp_dmac *, struct nvkm_object *, u32);
26extern const struct nv50_disp_dmac_func nv50_disp_core_func;
27
28extern const struct nv50_disp_dmac_func gf119_disp_dmac_func;
fd47877f 29void gf119_disp_dmac_fini(struct nv50_disp_dmac *);
0ce41e3c
BS
30int gf119_disp_dmac_bind(struct nv50_disp_dmac *, struct nvkm_object *, u32);
31extern const struct nv50_disp_dmac_func gf119_disp_core_func;
fd47877f
BS
32void gf119_disp_core_fini(struct nv50_disp_dmac *);
33
ed828666 34extern const struct nv50_disp_dmac_func gp102_disp_dmac_func;
0ce41e3c
BS
35
36struct 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
48int 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 **);
53int 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 **);
58int 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
64extern const struct nv50_disp_dmac_oclass nv50_disp_core_oclass;
65extern const struct nv50_disp_dmac_oclass nv50_disp_base_oclass;
66extern const struct nv50_disp_dmac_oclass nv50_disp_ovly_oclass;
67
68extern const struct nv50_disp_dmac_oclass g84_disp_core_oclass;
69extern const struct nv50_disp_dmac_oclass g84_disp_base_oclass;
70extern const struct nv50_disp_dmac_oclass g84_disp_ovly_oclass;
71
72extern const struct nv50_disp_dmac_oclass g94_disp_core_oclass;
73
74extern const struct nv50_disp_dmac_oclass gt200_disp_core_oclass;
75extern const struct nv50_disp_dmac_oclass gt200_disp_base_oclass;
76extern const struct nv50_disp_dmac_oclass gt200_disp_ovly_oclass;
77
78extern const struct nv50_disp_dmac_oclass gt215_disp_core_oclass;
79extern const struct nv50_disp_dmac_oclass gt215_disp_base_oclass;
80extern const struct nv50_disp_dmac_oclass gt215_disp_ovly_oclass;
81
82extern const struct nv50_disp_dmac_oclass gf119_disp_core_oclass;
83extern const struct nv50_disp_dmac_oclass gf119_disp_base_oclass;
84extern const struct nv50_disp_dmac_oclass gf119_disp_ovly_oclass;
85
86extern const struct nv50_disp_dmac_oclass gk104_disp_core_oclass;
87extern const struct nv50_disp_dmac_oclass gk104_disp_base_oclass;
88extern const struct nv50_disp_dmac_oclass gk104_disp_ovly_oclass;
89
90extern const struct nv50_disp_dmac_oclass gk110_disp_core_oclass;
91extern const struct nv50_disp_dmac_oclass gk110_disp_base_oclass;
92
93extern const struct nv50_disp_dmac_oclass gm107_disp_core_oclass;
94
db1eb528 95extern const struct nv50_disp_dmac_oclass gm200_disp_core_oclass;
f9d5cbb3
BS
96
97extern const struct nv50_disp_dmac_oclass gp100_disp_core_oclass;
fd47877f 98
ed828666
BS
99extern const struct nv50_disp_dmac_oclass gp102_disp_core_oclass;
100extern const struct nv50_disp_dmac_oclass gp102_disp_base_oclass;
101extern const struct nv50_disp_dmac_oclass gp102_disp_ovly_oclass;
2a7909c0 102#endif