forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-05-11 04dd17822334871b23ea2862f7798fb0e0007777
kernel/drivers/gpu/drm/sti/sti_drv.c
....@@ -4,24 +4,23 @@
44 * Author: Benjamin Gaignard <benjamin.gaignard@st.com> for STMicroelectronics.
55 */
66
7
-#include <drm/drmP.h>
8
-
97 #include <linux/component.h>
10
-#include <linux/debugfs.h>
8
+#include <linux/dma-mapping.h>
119 #include <linux/kernel.h>
1210 #include <linux/module.h>
1311 #include <linux/of_platform.h>
1412
1513 #include <drm/drm_atomic.h>
1614 #include <drm/drm_atomic_helper.h>
17
-#include <drm/drm_crtc_helper.h>
15
+#include <drm/drm_debugfs.h>
16
+#include <drm/drm_drv.h>
17
+#include <drm/drm_fb_cma_helper.h>
18
+#include <drm/drm_fb_helper.h>
1819 #include <drm/drm_gem_cma_helper.h>
1920 #include <drm/drm_gem_framebuffer_helper.h>
20
-#include <drm/drm_fb_helper.h>
21
-#include <drm/drm_fb_cma_helper.h>
2221 #include <drm/drm_of.h>
22
+#include <drm/drm_probe_helper.h>
2323
24
-#include "sti_crtc.h"
2524 #include "sti_drv.h"
2625 #include "sti_plane.h"
2726
....@@ -93,35 +92,20 @@
9392 {"fps_get", sti_drm_fps_dbg_show, 0},
9493 };
9594
96
-static int sti_drm_dbg_init(struct drm_minor *minor)
95
+static void sti_drm_dbg_init(struct drm_minor *minor)
9796 {
98
- struct dentry *dentry;
99
- int ret;
97
+ drm_debugfs_create_files(sti_drm_dbg_list,
98
+ ARRAY_SIZE(sti_drm_dbg_list),
99
+ minor->debugfs_root, minor);
100100
101
- ret = drm_debugfs_create_files(sti_drm_dbg_list,
102
- ARRAY_SIZE(sti_drm_dbg_list),
103
- minor->debugfs_root, minor);
104
- if (ret)
105
- goto err;
106
-
107
- dentry = debugfs_create_file("fps_show", S_IRUGO | S_IWUSR,
108
- minor->debugfs_root, minor->dev,
109
- &sti_drm_fps_fops);
110
- if (!dentry) {
111
- ret = -ENOMEM;
112
- goto err;
113
- }
101
+ debugfs_create_file("fps_show", S_IRUGO | S_IWUSR, minor->debugfs_root,
102
+ minor->dev, &sti_drm_fps_fops);
114103
115104 DRM_INFO("%s: debugfs installed\n", DRIVER_NAME);
116
- return 0;
117
-err:
118
- DRM_ERROR("%s: cannot install debugfs\n", DRIVER_NAME);
119
- return ret;
120105 }
121106
122107 static const struct drm_mode_config_funcs sti_mode_config_funcs = {
123108 .fb_create = drm_gem_fb_create,
124
- .output_poll_changed = drm_fb_helper_output_poll_changed,
125109 .atomic_check = drm_atomic_helper_check,
126110 .atomic_commit = drm_atomic_helper_commit,
127111 };
....@@ -147,25 +131,9 @@
147131 DEFINE_DRM_GEM_CMA_FOPS(sti_driver_fops);
148132
149133 static struct drm_driver sti_driver = {
150
- .driver_features = DRIVER_MODESET |
151
- DRIVER_GEM | DRIVER_PRIME | DRIVER_ATOMIC,
152
- .gem_free_object_unlocked = drm_gem_cma_free_object,
153
- .gem_vm_ops = &drm_gem_cma_vm_ops,
154
- .dumb_create = drm_gem_cma_dumb_create,
134
+ .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
155135 .fops = &sti_driver_fops,
156
-
157
- .enable_vblank = sti_crtc_enable_vblank,
158
- .disable_vblank = sti_crtc_disable_vblank,
159
-
160
- .prime_handle_to_fd = drm_gem_prime_handle_to_fd,
161
- .prime_fd_to_handle = drm_gem_prime_fd_to_handle,
162
- .gem_prime_export = drm_gem_prime_export,
163
- .gem_prime_import = drm_gem_prime_import,
164
- .gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table,
165
- .gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table,
166
- .gem_prime_vmap = drm_gem_cma_prime_vmap,
167
- .gem_prime_vunmap = drm_gem_cma_prime_vunmap,
168
- .gem_prime_mmap = drm_gem_cma_prime_mmap,
136
+ DRM_GEM_CMA_DRIVER_OPS,
169137
170138 .debugfs_init = sti_drm_dbg_init,
171139
....@@ -206,8 +174,9 @@
206174 {
207175 struct sti_private *private = ddev->dev_private;
208176
209
- drm_fb_cma_fbdev_fini(ddev);
210177 drm_kms_helper_poll_fini(ddev);
178
+ drm_atomic_helper_shutdown(ddev);
179
+ drm_mode_config_cleanup(ddev);
211180 component_unbind_all(ddev->dev, ddev);
212181 kfree(private);
213182 ddev->dev_private = NULL;
....@@ -232,20 +201,14 @@
232201
233202 ret = drm_dev_register(ddev, 0);
234203 if (ret)
235
- goto err_register;
204
+ goto err_cleanup;
236205
237206 drm_mode_config_reset(ddev);
238207
239
- if (ddev->mode_config.num_connector) {
240
- ret = drm_fb_cma_fbdev_init(ddev, 32, 0);
241
- if (ret)
242
- DRM_DEBUG_DRIVER("Warning: fails to create fbdev\n");
243
- }
208
+ drm_fbdev_generic_setup(ddev, 32);
244209
245210 return 0;
246211
247
-err_register:
248
- drm_mode_config_cleanup(ddev);
249212 err_cleanup:
250213 sti_cleanup(ddev);
251214 err_drm_dev_put: