hc
2024-10-22 8ac6c7a54ed1b98d142dce24b11c6de6a1e239a5
kernel/drivers/gpu/drm/drm_internal.h
....@@ -21,20 +21,62 @@
2121 * OTHER DEALINGS IN THE SOFTWARE.
2222 */
2323
24
+#include <linux/kthread.h>
25
+
26
+#include <drm/drm_ioctl.h>
27
+#include <drm/drm_vblank.h>
28
+
2429 #define DRM_IF_MAJOR 1
2530 #define DRM_IF_MINOR 4
2631
32
+#define DRM_IF_VERSION(maj, min) (maj << 16 | min)
33
+
34
+struct dentry;
35
+struct dma_buf;
36
+struct drm_connector;
37
+struct drm_crtc;
38
+struct drm_framebuffer;
39
+struct drm_gem_object;
40
+struct drm_master;
41
+struct drm_minor;
42
+struct drm_prime_file_private;
43
+struct drm_printer;
44
+struct drm_vblank_crtc;
45
+
2746 /* drm_file.c */
2847 extern struct mutex drm_global_mutex;
48
+bool drm_dev_needs_global_mutex(struct drm_device *dev);
2949 struct drm_file *drm_file_alloc(struct drm_minor *minor);
3050 void drm_file_free(struct drm_file *file);
3151 void drm_lastclose(struct drm_device *dev);
52
+
53
+#ifdef CONFIG_PCI
3254
3355 /* drm_pci.c */
3456 int drm_irq_by_busid(struct drm_device *dev, void *data,
3557 struct drm_file *file_priv);
3658 void drm_pci_agp_destroy(struct drm_device *dev);
3759 int drm_pci_set_busid(struct drm_device *dev, struct drm_master *master);
60
+
61
+#else
62
+
63
+static inline int drm_irq_by_busid(struct drm_device *dev, void *data,
64
+ struct drm_file *file_priv)
65
+{
66
+ return -EINVAL;
67
+}
68
+
69
+static inline void drm_pci_agp_destroy(struct drm_device *dev)
70
+{
71
+}
72
+
73
+static inline int drm_pci_set_busid(struct drm_device *dev,
74
+ struct drm_master *master)
75
+{
76
+ return -EINVAL;
77
+}
78
+
79
+#endif
3880
3981 /* drm_prime.c */
4082 int drm_prime_handle_to_fd_ioctl(struct drm_device *dev, void *data,
....@@ -51,14 +93,36 @@
5193 struct drm_minor *drm_minor_acquire(unsigned int minor_id);
5294 void drm_minor_release(struct drm_minor *minor);
5395
54
-/* drm_info.c */
55
-int drm_name_info(struct seq_file *m, void *data);
56
-int drm_clients_info(struct seq_file *m, void* data);
57
-int drm_gem_name_info(struct seq_file *m, void *data);
96
+/* drm_managed.c */
97
+void drm_managed_release(struct drm_device *dev);
98
+void drmm_add_final_kfree(struct drm_device *dev, void *container);
5899
59100 /* drm_vblank.c */
101
+static inline bool drm_vblank_passed(u64 seq, u64 ref)
102
+{
103
+ return (seq - ref) <= (1 << 23);
104
+}
105
+
60106 void drm_vblank_disable_and_save(struct drm_device *dev, unsigned int pipe);
61
-void drm_vblank_cleanup(struct drm_device *dev);
107
+int drm_vblank_get(struct drm_device *dev, unsigned int pipe);
108
+void drm_vblank_put(struct drm_device *dev, unsigned int pipe);
109
+u64 drm_vblank_count(struct drm_device *dev, unsigned int pipe);
110
+
111
+/* drm_vblank_work.c */
112
+static inline void drm_vblank_flush_worker(struct drm_vblank_crtc *vblank)
113
+{
114
+ kthread_flush_worker(vblank->worker);
115
+}
116
+
117
+static inline void drm_vblank_destroy_worker(struct drm_vblank_crtc *vblank)
118
+{
119
+ if (vblank->worker)
120
+ kthread_destroy_worker(vblank->worker);
121
+}
122
+
123
+int drm_vblank_worker_init(struct drm_vblank_crtc *vblank);
124
+void drm_vblank_cancel_pending_works(struct drm_vblank_crtc *vblank);
125
+void drm_handle_vblank_works(struct drm_vblank_crtc *vblank);
62126
63127 /* IOCTLS */
64128 int drm_wait_vblank_ioctl(struct drm_device *dev, void *data,
....@@ -69,8 +133,10 @@
69133 /* drm_irq.c */
70134
71135 /* IOCTLS */
136
+#if IS_ENABLED(CONFIG_DRM_LEGACY)
72137 int drm_legacy_irq_control(struct drm_device *dev, void *data,
73138 struct drm_file *file_priv);
139
+#endif
74140
75141 int drm_crtc_get_sequence_ioctl(struct drm_device *dev, void *data,
76142 struct drm_file *filp);
....@@ -89,6 +155,8 @@
89155 struct drm_file *file_priv);
90156 int drm_master_open(struct drm_file *file_priv);
91157 void drm_master_release(struct drm_file *file_priv);
158
+bool drm_master_internal_acquire(struct drm_device *dev);
159
+void drm_master_internal_release(struct drm_device *dev);
92160
93161 /* drm_sysfs.c */
94162 extern struct class *drm_class;
....@@ -102,8 +170,8 @@
102170 void drm_sysfs_lease_event(struct drm_device *dev);
103171
104172 /* drm_gem.c */
173
+struct drm_gem_object;
105174 int drm_gem_init(struct drm_device *dev);
106
-void drm_gem_destroy(struct drm_device *dev);
107175 int drm_gem_handle_create_tail(struct drm_file *file_priv,
108176 struct drm_gem_object *obj,
109177 u32 *handlep);
....@@ -118,20 +186,21 @@
118186 void drm_gem_print_info(struct drm_printer *p, unsigned int indent,
119187 const struct drm_gem_object *obj);
120188
189
+int drm_gem_pin(struct drm_gem_object *obj);
190
+void drm_gem_unpin(struct drm_gem_object *obj);
191
+void *drm_gem_vmap(struct drm_gem_object *obj);
192
+void drm_gem_vunmap(struct drm_gem_object *obj, void *vaddr);
193
+
121194 /* drm_debugfs.c drm_debugfs_crc.c */
122195 #if defined(CONFIG_DEBUG_FS)
123196 int drm_debugfs_init(struct drm_minor *minor, int minor_id,
124197 struct dentry *root);
125
-int drm_debugfs_cleanup(struct drm_minor *minor);
126
-int drm_debugfs_connector_add(struct drm_connector *connector);
198
+void drm_debugfs_cleanup(struct drm_minor *minor);
199
+void drm_debugfs_connector_add(struct drm_connector *connector);
127200 void drm_debugfs_connector_remove(struct drm_connector *connector);
128
-int drm_debugfs_crtc_add(struct drm_crtc *crtc);
201
+void drm_debugfs_crtc_add(struct drm_crtc *crtc);
129202 void drm_debugfs_crtc_remove(struct drm_crtc *crtc);
130
-int drm_debugfs_crtc_crc_add(struct drm_crtc *crtc);
131
-#if defined(CONFIG_ROCKCHIP_DRM_DEBUG)
132
-int drm_debugfs_vop_add(struct drm_crtc *crtc, struct dentry *root);
133
-int vop_plane_dump(struct vop_dump_info *dump_info, int frame_count);
134
-#endif
203
+void drm_debugfs_crtc_crc_add(struct drm_crtc *crtc);
135204 #else
136205 static inline int drm_debugfs_init(struct drm_minor *minor, int minor_id,
137206 struct dentry *root)
....@@ -139,43 +208,27 @@
139208 return 0;
140209 }
141210
142
-static inline int drm_debugfs_cleanup(struct drm_minor *minor)
211
+static inline void drm_debugfs_cleanup(struct drm_minor *minor)
143212 {
144
- return 0;
145213 }
146214
147
-static inline int drm_debugfs_connector_add(struct drm_connector *connector)
215
+static inline void drm_debugfs_connector_add(struct drm_connector *connector)
148216 {
149
- return 0;
150217 }
151218 static inline void drm_debugfs_connector_remove(struct drm_connector *connector)
152219 {
153220 }
154221
155
-static inline int drm_debugfs_crtc_add(struct drm_crtc *crtc)
222
+static inline void drm_debugfs_crtc_add(struct drm_crtc *crtc)
156223 {
157
- return 0;
158224 }
159225 static inline void drm_debugfs_crtc_remove(struct drm_crtc *crtc)
160226 {
161227 }
162228
163
-static inline int drm_debugfs_crtc_crc_add(struct drm_crtc *crtc)
229
+static inline void drm_debugfs_crtc_crc_add(struct drm_crtc *crtc)
164230 {
165
- return 0;
166231 }
167
-
168
-#if defined(CONFIG_ROCKCHIP_DRM_DEBUG)
169
-static inline int drm_debugfs_vop_add(struct drm_crtc *crtc, struct dentry *root)
170
-{
171
- return 0;
172
-}
173
-
174
-static inline int vop_plane_dump(struct vop_dump_info *dump_info, int frame_count)
175
-{
176
- return 0;
177
-}
178
-#endif
179232
180233 #endif
181234
....@@ -194,14 +247,22 @@
194247 struct drm_file *file_private);
195248 int drm_syncobj_fd_to_handle_ioctl(struct drm_device *dev, void *data,
196249 struct drm_file *file_private);
250
+int drm_syncobj_transfer_ioctl(struct drm_device *dev, void *data,
251
+ struct drm_file *file_private);
197252 int drm_syncobj_wait_ioctl(struct drm_device *dev, void *data,
198253 struct drm_file *file_private);
254
+int drm_syncobj_timeline_wait_ioctl(struct drm_device *dev, void *data,
255
+ struct drm_file *file_private);
199256 int drm_syncobj_reset_ioctl(struct drm_device *dev, void *data,
200257 struct drm_file *file_private);
201258 int drm_syncobj_signal_ioctl(struct drm_device *dev, void *data,
202259 struct drm_file *file_private);
260
+int drm_syncobj_timeline_signal_ioctl(struct drm_device *dev, void *data,
261
+ struct drm_file *file_private);
262
+int drm_syncobj_query_ioctl(struct drm_device *dev, void *data,
263
+ struct drm_file *file_private);
203264
204265 /* drm_framebuffer.c */
205266 void drm_framebuffer_print_info(struct drm_printer *p, unsigned int indent,
206267 const struct drm_framebuffer *fb);
207
-int drm_framebuffer_debugfs_init(struct drm_minor *minor);
268
+void drm_framebuffer_debugfs_init(struct drm_minor *minor);