hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/gpu/drm/nouveau/dispnv50/head.h
....@@ -1,78 +1,98 @@
11 #ifndef __NV50_KMS_HEAD_H__
22 #define __NV50_KMS_HEAD_H__
33 #define nv50_head(c) container_of((c), struct nv50_head, base.base)
4
+#include <linux/workqueue.h>
5
+
46 #include "disp.h"
57 #include "atom.h"
8
+#include "crc.h"
69 #include "lut.h"
710
811 #include "nouveau_crtc.h"
12
+#include "nouveau_encoder.h"
913
1014 struct nv50_head {
1115 const struct nv50_head_func *func;
1216 struct nouveau_crtc base;
17
+ struct nv50_crc crc;
1318 struct nv50_lut olut;
19
+ struct nv50_msto *msto;
1420 };
1521
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);
1927
2028 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 *);
2636 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 *);
2939 int (*curs_layout)(struct nv50_head *, struct nv50_wndw_atom *,
3040 struct nv50_head_atom *);
3141 int (*curs_format)(struct nv50_head *, struct nv50_wndw_atom *,
3242 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 *);
4051 };
4152
4253 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);
4657 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 *);
4859 int head507d_curs_layout(struct nv50_head *, struct nv50_wndw_atom *,
4960 struct nv50_head_atom *);
5061 int head507d_curs_format(struct nv50_head *, struct nv50_wndw_atom *,
5162 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 *);
5667
5768 extern const struct nv50_head_func head827d;
5869
5970 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 *);
7283
7384 extern const struct nv50_head_func head917d;
7485 int head917d_curs_layout(struct nv50_head *, struct nv50_wndw_atom *,
7586 struct nv50_head_atom *);
7687
7788 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;
7898 #endif