Commit | Line | Data |
---|---|---|
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 | ||
7 | struct 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 |
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; | |
fd47877f | 29 | void gf119_disp_dmac_fini(struct nv50_disp_dmac *); |
0ce41e3c BS |
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; | |
fd47877f BS |
32 | void gf119_disp_core_fini(struct nv50_disp_dmac *); |
33 | ||
ed828666 | 34 | extern const struct nv50_disp_dmac_func gp102_disp_dmac_func; |
0ce41e3c BS |
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 | ||
db1eb528 | 95 | extern const struct nv50_disp_dmac_oclass gm200_disp_core_oclass; |
f9d5cbb3 BS |
96 | |
97 | extern const struct nv50_disp_dmac_oclass gp100_disp_core_oclass; | |
fd47877f | 98 | |
ed828666 BS |
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; | |
2a7909c0 | 102 | #endif |