]>
Commit | Line | Data |
---|---|---|
70cabe4a BS |
1 | #ifndef __NV50_DISP_H__ |
2 | #define __NV50_DISP_H__ | |
0ce41e3c | 3 | #define nv50_disp(p) container_of((p), struct nv50_disp, base) |
a8f8b489 | 4 | #include "priv.h" |
af85389c | 5 | #include "dp.h" |
327c5581 | 6 | struct nvkm_head; |
a8f8b489 | 7 | |
fd166a18 | 8 | struct nv50_disp { |
70aa8670 | 9 | const struct nv50_disp_func *func; |
878da15a | 10 | struct nvkm_disp base; |
5cc027f6 | 11 | |
3607bfd3 | 12 | struct workqueue_struct *wq; |
5cc027f6 BS |
13 | struct work_struct supervisor; |
14 | u32 super; | |
15 | ||
b38a2322 BS |
16 | struct nvkm_event uevent; |
17 | ||
70cabe4a | 18 | struct { |
4a230fa6 | 19 | u32 lvdsconf; |
70cabe4a | 20 | } sor; |
70aa8670 | 21 | |
a2bc283f | 22 | struct { |
a2bc283f | 23 | u8 type[3]; |
a2bc283f | 24 | } pior; |
0ce41e3c BS |
25 | |
26 | struct nv50_disp_chan *chan[17]; | |
70cabe4a BS |
27 | }; |
28 | ||
29c0ca73 | 29 | void nv50_disp_super_1(struct nv50_disp *); |
327c5581 | 30 | void nv50_disp_super_1_0(struct nv50_disp *, struct nvkm_head *); |
d52e948c | 31 | void nv50_disp_super_2_0(struct nv50_disp *, struct nvkm_head *); |
1f0c9eaf | 32 | void nv50_disp_super_2_1(struct nv50_disp *, struct nvkm_head *); |
29c0ca73 | 33 | |
70aa8670 BS |
34 | int nv50_disp_new_(const struct nv50_disp_func *, struct nvkm_device *, |
35 | int index, int heads, struct nvkm_disp **); | |
36 | int gf119_disp_new_(const struct nv50_disp_func *, struct nvkm_device *, | |
37 | int index, struct nvkm_disp **); | |
38 | ||
70aa8670 BS |
39 | struct nv50_disp_func { |
40 | void (*intr)(struct nv50_disp *); | |
fd47877f | 41 | void (*intr_error)(struct nv50_disp *, int chid); |
70aa8670 BS |
42 | |
43 | const struct nvkm_event_func *uevent; | |
44 | void (*super)(struct work_struct *); | |
45 | ||
46 | const struct nvkm_disp_oclass *root; | |
47 | ||
48 | struct { | |
a1c93078 | 49 | int (*new)(struct nvkm_disp *, int id); |
70aa8670 BS |
50 | } head; |
51 | ||
70aa8670 BS |
52 | struct { |
53 | int nr; | |
78f1ad6f | 54 | int (*new)(struct nvkm_disp *, int id); |
70aa8670 BS |
55 | } dac; |
56 | ||
57 | struct { | |
58 | int nr; | |
78f1ad6f | 59 | int (*new)(struct nvkm_disp *, int id); |
70aa8670 BS |
60 | } sor; |
61 | ||
62 | struct { | |
63 | int nr; | |
78f1ad6f | 64 | int (*new)(struct nvkm_disp *, int id); |
70aa8670 BS |
65 | } pior; |
66 | }; | |
67 | ||
70aa8670 | 68 | void nv50_disp_intr(struct nv50_disp *); |
af85389c | 69 | void nv50_disp_super(struct work_struct *); |
70cabe4a | 70 | |
70aa8670 | 71 | void gf119_disp_intr(struct nv50_disp *); |
af85389c | 72 | void gf119_disp_super(struct work_struct *); |
fd47877f | 73 | void gf119_disp_intr_error(struct nv50_disp *, int); |
af85389c BS |
74 | |
75 | void nv50_disp_dptmds_war_2(struct nv50_disp *, struct dcb_output *); | |
76 | void nv50_disp_dptmds_war_3(struct nv50_disp *, struct dcb_output *); | |
77 | void nv50_disp_update_sppll1(struct nv50_disp *); | |
70cabe4a | 78 | #endif |