1 #ifndef __NV50_DISP_CHAN_H__
2 #define __NV50_DISP_CHAN_H__
3 #define nv50_disp_chan(p) container_of((p), struct nv50_disp_chan, object)
6 struct nv50_disp_chan
{
7 const struct nv50_disp_chan_func
*func
;
8 const struct nv50_disp_chan_mthd
*mthd
;
9 struct nv50_disp_root
*root
;
13 struct nvkm_object object
;
16 struct nv50_disp_chan_func
{
17 void *(*dtor
)(struct nv50_disp_chan
*);
18 int (*init
)(struct nv50_disp_chan
*);
19 void (*fini
)(struct nv50_disp_chan
*);
20 int (*child_get
)(struct nv50_disp_chan
*, int index
,
21 struct nvkm_oclass
*);
22 int (*child_new
)(struct nv50_disp_chan
*, const struct nvkm_oclass
*,
23 void *data
, u32 size
, struct nvkm_object
**);
26 int nv50_disp_chan_ctor(const struct nv50_disp_chan_func
*,
27 const struct nv50_disp_chan_mthd
*,
28 struct nv50_disp_root
*, int chid
, int head
,
29 const struct nvkm_oclass
*, struct nv50_disp_chan
*);
30 int nv50_disp_chan_new_(const struct nv50_disp_chan_func
*,
31 const struct nv50_disp_chan_mthd
*,
32 struct nv50_disp_root
*, int chid
, int head
,
33 const struct nvkm_oclass
*, struct nvkm_object
**);
35 extern const struct nv50_disp_chan_func nv50_disp_pioc_func
;
36 extern const struct nv50_disp_chan_func gf119_disp_pioc_func
;
38 extern const struct nvkm_event_func nv50_disp_chan_uevent
;
39 int nv50_disp_chan_uevent_ctor(struct nvkm_object
*, void *, u32
,
40 struct nvkm_notify
*);
41 void nv50_disp_chan_uevent_send(struct nv50_disp
*, int);
43 extern const struct nvkm_event_func gf119_disp_chan_uevent
;
45 struct nv50_disp_mthd_list
{
55 struct nv50_disp_chan_mthd
{
62 const struct nv50_disp_mthd_list
*mthd
;
66 void nv50_disp_chan_mthd(struct nv50_disp_chan
*, int debug
);
68 extern const struct nv50_disp_mthd_list nv50_disp_core_mthd_base
;
69 extern const struct nv50_disp_mthd_list nv50_disp_core_mthd_sor
;
70 extern const struct nv50_disp_mthd_list nv50_disp_core_mthd_pior
;
71 extern const struct nv50_disp_mthd_list nv50_disp_base_mthd_image
;
73 extern const struct nv50_disp_chan_mthd g84_disp_core_chan_mthd
;
74 extern const struct nv50_disp_mthd_list g84_disp_core_mthd_dac
;
75 extern const struct nv50_disp_mthd_list g84_disp_core_mthd_head
;
76 extern const struct nv50_disp_chan_mthd g84_disp_base_chan_mthd
;
77 extern const struct nv50_disp_chan_mthd g84_disp_ovly_chan_mthd
;
79 extern const struct nv50_disp_chan_mthd g94_disp_core_chan_mthd
;
81 extern const struct nv50_disp_mthd_list gf119_disp_core_mthd_base
;
82 extern const struct nv50_disp_mthd_list gf119_disp_core_mthd_dac
;
83 extern const struct nv50_disp_mthd_list gf119_disp_core_mthd_sor
;
84 extern const struct nv50_disp_mthd_list gf119_disp_core_mthd_pior
;
85 extern const struct nv50_disp_chan_mthd gf119_disp_base_chan_mthd
;
87 extern const struct nv50_disp_chan_mthd gk104_disp_core_chan_mthd
;
89 struct nv50_disp_pioc_oclass
{
90 int (*ctor
)(const struct nv50_disp_chan_func
*,
91 const struct nv50_disp_chan_mthd
*,
92 struct nv50_disp_root
*, int chid
,
93 const struct nvkm_oclass
*, void *data
, u32 size
,
94 struct nvkm_object
**);
95 struct nvkm_sclass base
;
96 const struct nv50_disp_chan_func
*func
;
97 const struct nv50_disp_chan_mthd
*mthd
;
101 extern const struct nv50_disp_pioc_oclass nv50_disp_oimm_oclass
;
102 extern const struct nv50_disp_pioc_oclass nv50_disp_curs_oclass
;
104 extern const struct nv50_disp_pioc_oclass g84_disp_oimm_oclass
;
105 extern const struct nv50_disp_pioc_oclass g84_disp_curs_oclass
;
107 extern const struct nv50_disp_pioc_oclass gt215_disp_oimm_oclass
;
108 extern const struct nv50_disp_pioc_oclass gt215_disp_curs_oclass
;
110 extern const struct nv50_disp_pioc_oclass gf119_disp_oimm_oclass
;
111 extern const struct nv50_disp_pioc_oclass gf119_disp_curs_oclass
;
113 extern const struct nv50_disp_pioc_oclass gk104_disp_oimm_oclass
;
114 extern const struct nv50_disp_pioc_oclass gk104_disp_curs_oclass
;
117 int nv50_disp_curs_new(const struct nv50_disp_chan_func
*,
118 const struct nv50_disp_chan_mthd
*,
119 struct nv50_disp_root
*, int chid
,
120 const struct nvkm_oclass
*, void *data
, u32 size
,
121 struct nvkm_object
**);
122 int nv50_disp_oimm_new(const struct nv50_disp_chan_func
*,
123 const struct nv50_disp_chan_mthd
*,
124 struct nv50_disp_root
*, int chid
,
125 const struct nvkm_oclass
*, void *data
, u32 size
,
126 struct nvkm_object
**);