hc
2024-05-10 cde9070d9970eef1f7ec2360586c802a16230ad8
kernel/drivers/gpu/drm/arm/hdlcd_drv.c
....@@ -14,21 +14,26 @@
1414 #include <linux/clk.h>
1515 #include <linux/component.h>
1616 #include <linux/console.h>
17
+#include <linux/dma-mapping.h>
1718 #include <linux/list.h>
1819 #include <linux/of_graph.h>
1920 #include <linux/of_reserved_mem.h>
21
+#include <linux/platform_device.h>
2022 #include <linux/pm_runtime.h>
2123
22
-#include <drm/drmP.h>
2324 #include <drm/drm_atomic_helper.h>
2425 #include <drm/drm_crtc.h>
25
-#include <drm/drm_crtc_helper.h>
26
-#include <drm/drm_fb_helper.h>
26
+#include <drm/drm_debugfs.h>
27
+#include <drm/drm_drv.h>
2728 #include <drm/drm_fb_cma_helper.h>
29
+#include <drm/drm_fb_helper.h>
2830 #include <drm/drm_gem_cma_helper.h>
2931 #include <drm/drm_gem_framebuffer_helper.h>
32
+#include <drm/drm_irq.h>
3033 #include <drm/drm_modeset_helper.h>
3134 #include <drm/drm_of.h>
35
+#include <drm/drm_probe_helper.h>
36
+#include <drm/drm_vblank.h>
3237
3338 #include "hdlcd_drv.h"
3439 #include "hdlcd_regs.h"
....@@ -103,7 +108,6 @@
103108
104109 static const struct drm_mode_config_funcs hdlcd_mode_config_funcs = {
105110 .fb_create = drm_gem_fb_create,
106
- .output_poll_changed = drm_fb_helper_output_poll_changed,
107111 .atomic_check = drm_atomic_helper_check,
108112 .atomic_commit = drm_atomic_helper_commit,
109113 };
....@@ -220,37 +224,23 @@
220224 { "clocks", hdlcd_show_pxlclock, 0 },
221225 };
222226
223
-static int hdlcd_debugfs_init(struct drm_minor *minor)
227
+static void hdlcd_debugfs_init(struct drm_minor *minor)
224228 {
225
- return drm_debugfs_create_files(hdlcd_debugfs_list,
226
- ARRAY_SIZE(hdlcd_debugfs_list), minor->debugfs_root, minor);
229
+ drm_debugfs_create_files(hdlcd_debugfs_list,
230
+ ARRAY_SIZE(hdlcd_debugfs_list),
231
+ minor->debugfs_root, minor);
227232 }
228233 #endif
229234
230235 DEFINE_DRM_GEM_CMA_FOPS(fops);
231236
232237 static struct drm_driver hdlcd_driver = {
233
- .driver_features = DRIVER_HAVE_IRQ | DRIVER_GEM |
234
- DRIVER_MODESET | DRIVER_PRIME |
235
- DRIVER_ATOMIC,
236
- .lastclose = drm_fb_helper_lastclose,
238
+ .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
237239 .irq_handler = hdlcd_irq,
238240 .irq_preinstall = hdlcd_irq_preinstall,
239241 .irq_postinstall = hdlcd_irq_postinstall,
240242 .irq_uninstall = hdlcd_irq_uninstall,
241
- .gem_free_object_unlocked = drm_gem_cma_free_object,
242
- .gem_print_info = drm_gem_cma_print_info,
243
- .gem_vm_ops = &drm_gem_cma_vm_ops,
244
- .dumb_create = drm_gem_cma_dumb_create,
245
- .prime_handle_to_fd = drm_gem_prime_handle_to_fd,
246
- .prime_fd_to_handle = drm_gem_prime_fd_to_handle,
247
- .gem_prime_export = drm_gem_prime_export,
248
- .gem_prime_import = drm_gem_prime_import,
249
- .gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table,
250
- .gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table,
251
- .gem_prime_vmap = drm_gem_cma_prime_vmap,
252
- .gem_prime_vunmap = drm_gem_cma_prime_vunmap,
253
- .gem_prime_mmap = drm_gem_cma_prime_mmap,
243
+ DRM_GEM_CMA_DRIVER_OPS,
254244 #ifdef CONFIG_DEBUG_FS
255245 .debugfs_init = hdlcd_debugfs_init,
256246 #endif
....@@ -308,19 +298,15 @@
308298 drm_mode_config_reset(drm);
309299 drm_kms_helper_poll_init(drm);
310300
311
- ret = drm_fb_cma_fbdev_init(drm, 32, 0);
312
- if (ret)
313
- goto err_fbdev;
314
-
315301 ret = drm_dev_register(drm, 0);
316302 if (ret)
317303 goto err_register;
318304
305
+ drm_fbdev_generic_setup(drm, 32);
306
+
319307 return 0;
320308
321309 err_register:
322
- drm_fb_cma_fbdev_fini(drm);
323
-err_fbdev:
324310 drm_kms_helper_poll_fini(drm);
325311 err_vblank:
326312 pm_runtime_disable(drm->dev);
....@@ -346,15 +332,13 @@
346332 struct hdlcd_drm_private *hdlcd = drm->dev_private;
347333
348334 drm_dev_unregister(drm);
349
- drm_fb_cma_fbdev_fini(drm);
350335 drm_kms_helper_poll_fini(drm);
351336 component_unbind_all(dev, drm);
352337 of_node_put(hdlcd->crtc.port);
353338 hdlcd->crtc.port = NULL;
354339 pm_runtime_get_sync(dev);
355
- drm_crtc_vblank_off(&hdlcd->crtc);
356
- drm_irq_uninstall(drm);
357340 drm_atomic_helper_shutdown(drm);
341
+ drm_irq_uninstall(drm);
358342 pm_runtime_put(dev);
359343 if (pm_runtime_enabled(dev))
360344 pm_runtime_disable(dev);