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