.. | .. |
---|
1 | 1 | #ifndef __NV50_KMS_HEAD_H__ |
---|
2 | 2 | #define __NV50_KMS_HEAD_H__ |
---|
3 | 3 | #define nv50_head(c) container_of((c), struct nv50_head, base.base) |
---|
| 4 | +#include <linux/workqueue.h> |
---|
| 5 | + |
---|
4 | 6 | #include "disp.h" |
---|
5 | 7 | #include "atom.h" |
---|
| 8 | +#include "crc.h" |
---|
6 | 9 | #include "lut.h" |
---|
7 | 10 | |
---|
8 | 11 | #include "nouveau_crtc.h" |
---|
| 12 | +#include "nouveau_encoder.h" |
---|
9 | 13 | |
---|
10 | 14 | struct nv50_head { |
---|
11 | 15 | const struct nv50_head_func *func; |
---|
12 | 16 | struct nouveau_crtc base; |
---|
| 17 | + struct nv50_crc crc; |
---|
13 | 18 | struct nv50_lut olut; |
---|
| 19 | + struct nv50_msto *msto; |
---|
14 | 20 | }; |
---|
15 | 21 | |
---|
16 | | -int nv50_head_create(struct drm_device *, int index); |
---|
17 | | -void nv50_head_flush_set(struct nv50_head *, struct nv50_head_atom *); |
---|
18 | | -void nv50_head_flush_clr(struct nv50_head *, struct nv50_head_atom *, bool y); |
---|
| 22 | +struct nv50_head *nv50_head_create(struct drm_device *, int index); |
---|
| 23 | +void nv50_head_flush_set(struct nv50_head *head, struct nv50_head_atom *asyh); |
---|
| 24 | +void nv50_head_flush_set_wndw(struct nv50_head *head, struct nv50_head_atom *asyh); |
---|
| 25 | +void nv50_head_flush_clr(struct nv50_head *head, |
---|
| 26 | + struct nv50_head_atom *asyh, bool flush); |
---|
19 | 27 | |
---|
20 | 28 | struct nv50_head_func { |
---|
21 | | - void (*view)(struct nv50_head *, struct nv50_head_atom *); |
---|
22 | | - void (*mode)(struct nv50_head *, struct nv50_head_atom *); |
---|
23 | | - void (*olut)(struct nv50_head *, struct nv50_head_atom *); |
---|
24 | | - void (*olut_set)(struct nv50_head *, struct nv50_head_atom *); |
---|
25 | | - void (*olut_clr)(struct nv50_head *); |
---|
| 29 | + int (*view)(struct nv50_head *, struct nv50_head_atom *); |
---|
| 30 | + int (*mode)(struct nv50_head *, struct nv50_head_atom *); |
---|
| 31 | + bool (*olut)(struct nv50_head *, struct nv50_head_atom *, int); |
---|
| 32 | + bool olut_identity; |
---|
| 33 | + int olut_size; |
---|
| 34 | + int (*olut_set)(struct nv50_head *, struct nv50_head_atom *); |
---|
| 35 | + int (*olut_clr)(struct nv50_head *); |
---|
26 | 36 | void (*core_calc)(struct nv50_head *, struct nv50_head_atom *); |
---|
27 | | - void (*core_set)(struct nv50_head *, struct nv50_head_atom *); |
---|
28 | | - void (*core_clr)(struct nv50_head *); |
---|
| 37 | + int (*core_set)(struct nv50_head *, struct nv50_head_atom *); |
---|
| 38 | + int (*core_clr)(struct nv50_head *); |
---|
29 | 39 | int (*curs_layout)(struct nv50_head *, struct nv50_wndw_atom *, |
---|
30 | 40 | struct nv50_head_atom *); |
---|
31 | 41 | int (*curs_format)(struct nv50_head *, struct nv50_wndw_atom *, |
---|
32 | 42 | struct nv50_head_atom *); |
---|
33 | | - void (*curs_set)(struct nv50_head *, struct nv50_head_atom *); |
---|
34 | | - void (*curs_clr)(struct nv50_head *); |
---|
35 | | - void (*base)(struct nv50_head *, struct nv50_head_atom *); |
---|
36 | | - void (*ovly)(struct nv50_head *, struct nv50_head_atom *); |
---|
37 | | - void (*dither)(struct nv50_head *, struct nv50_head_atom *); |
---|
38 | | - void (*procamp)(struct nv50_head *, struct nv50_head_atom *); |
---|
39 | | - void (*or)(struct nv50_head *, struct nv50_head_atom *); |
---|
| 43 | + int (*curs_set)(struct nv50_head *, struct nv50_head_atom *); |
---|
| 44 | + int (*curs_clr)(struct nv50_head *); |
---|
| 45 | + int (*base)(struct nv50_head *, struct nv50_head_atom *); |
---|
| 46 | + int (*ovly)(struct nv50_head *, struct nv50_head_atom *); |
---|
| 47 | + int (*dither)(struct nv50_head *, struct nv50_head_atom *); |
---|
| 48 | + int (*procamp)(struct nv50_head *, struct nv50_head_atom *); |
---|
| 49 | + int (*or)(struct nv50_head *, struct nv50_head_atom *); |
---|
| 50 | + void (*static_wndw_map)(struct nv50_head *, struct nv50_head_atom *); |
---|
40 | 51 | }; |
---|
41 | 52 | |
---|
42 | 53 | extern const struct nv50_head_func head507d; |
---|
43 | | -void head507d_view(struct nv50_head *, struct nv50_head_atom *); |
---|
44 | | -void head507d_mode(struct nv50_head *, struct nv50_head_atom *); |
---|
45 | | -void head507d_olut(struct nv50_head *, struct nv50_head_atom *); |
---|
| 54 | +int head507d_view(struct nv50_head *, struct nv50_head_atom *); |
---|
| 55 | +int head507d_mode(struct nv50_head *, struct nv50_head_atom *); |
---|
| 56 | +bool head507d_olut(struct nv50_head *, struct nv50_head_atom *, int); |
---|
46 | 57 | void head507d_core_calc(struct nv50_head *, struct nv50_head_atom *); |
---|
47 | | -void head507d_core_clr(struct nv50_head *); |
---|
| 58 | +int head507d_core_clr(struct nv50_head *); |
---|
48 | 59 | int head507d_curs_layout(struct nv50_head *, struct nv50_wndw_atom *, |
---|
49 | 60 | struct nv50_head_atom *); |
---|
50 | 61 | int head507d_curs_format(struct nv50_head *, struct nv50_wndw_atom *, |
---|
51 | 62 | struct nv50_head_atom *); |
---|
52 | | -void head507d_base(struct nv50_head *, struct nv50_head_atom *); |
---|
53 | | -void head507d_ovly(struct nv50_head *, struct nv50_head_atom *); |
---|
54 | | -void head507d_dither(struct nv50_head *, struct nv50_head_atom *); |
---|
55 | | -void head507d_procamp(struct nv50_head *, struct nv50_head_atom *); |
---|
| 63 | +int head507d_base(struct nv50_head *, struct nv50_head_atom *); |
---|
| 64 | +int head507d_ovly(struct nv50_head *, struct nv50_head_atom *); |
---|
| 65 | +int head507d_dither(struct nv50_head *, struct nv50_head_atom *); |
---|
| 66 | +int head507d_procamp(struct nv50_head *, struct nv50_head_atom *); |
---|
56 | 67 | |
---|
57 | 68 | extern const struct nv50_head_func head827d; |
---|
58 | 69 | |
---|
59 | 70 | extern const struct nv50_head_func head907d; |
---|
60 | | -void head907d_view(struct nv50_head *, struct nv50_head_atom *); |
---|
61 | | -void head907d_mode(struct nv50_head *, struct nv50_head_atom *); |
---|
62 | | -void head907d_olut(struct nv50_head *, struct nv50_head_atom *); |
---|
63 | | -void head907d_olut_set(struct nv50_head *, struct nv50_head_atom *); |
---|
64 | | -void head907d_olut_clr(struct nv50_head *); |
---|
65 | | -void head907d_core_set(struct nv50_head *, struct nv50_head_atom *); |
---|
66 | | -void head907d_core_clr(struct nv50_head *); |
---|
67 | | -void head907d_curs_set(struct nv50_head *, struct nv50_head_atom *); |
---|
68 | | -void head907d_curs_clr(struct nv50_head *); |
---|
69 | | -void head907d_ovly(struct nv50_head *, struct nv50_head_atom *); |
---|
70 | | -void head907d_procamp(struct nv50_head *, struct nv50_head_atom *); |
---|
71 | | -void head907d_or(struct nv50_head *, struct nv50_head_atom *); |
---|
| 71 | +int head907d_view(struct nv50_head *, struct nv50_head_atom *); |
---|
| 72 | +int head907d_mode(struct nv50_head *, struct nv50_head_atom *); |
---|
| 73 | +bool head907d_olut(struct nv50_head *, struct nv50_head_atom *, int); |
---|
| 74 | +int head907d_olut_set(struct nv50_head *, struct nv50_head_atom *); |
---|
| 75 | +int head907d_olut_clr(struct nv50_head *); |
---|
| 76 | +int head907d_core_set(struct nv50_head *, struct nv50_head_atom *); |
---|
| 77 | +int head907d_core_clr(struct nv50_head *); |
---|
| 78 | +int head907d_curs_set(struct nv50_head *, struct nv50_head_atom *); |
---|
| 79 | +int head907d_curs_clr(struct nv50_head *); |
---|
| 80 | +int head907d_ovly(struct nv50_head *, struct nv50_head_atom *); |
---|
| 81 | +int head907d_procamp(struct nv50_head *, struct nv50_head_atom *); |
---|
| 82 | +int head907d_or(struct nv50_head *, struct nv50_head_atom *); |
---|
72 | 83 | |
---|
73 | 84 | extern const struct nv50_head_func head917d; |
---|
74 | 85 | int head917d_curs_layout(struct nv50_head *, struct nv50_wndw_atom *, |
---|
75 | 86 | struct nv50_head_atom *); |
---|
76 | 87 | |
---|
77 | 88 | extern const struct nv50_head_func headc37d; |
---|
| 89 | +int headc37d_view(struct nv50_head *, struct nv50_head_atom *); |
---|
| 90 | +int headc37d_curs_format(struct nv50_head *, struct nv50_wndw_atom *, |
---|
| 91 | + struct nv50_head_atom *); |
---|
| 92 | +int headc37d_curs_set(struct nv50_head *, struct nv50_head_atom *); |
---|
| 93 | +int headc37d_curs_clr(struct nv50_head *); |
---|
| 94 | +int headc37d_dither(struct nv50_head *, struct nv50_head_atom *); |
---|
| 95 | +void headc37d_static_wndw_map(struct nv50_head *, struct nv50_head_atom *); |
---|
| 96 | + |
---|
| 97 | +extern const struct nv50_head_func headc57d; |
---|
78 | 98 | #endif |
---|