.. | .. |
---|
4 | 4 | * Author: Benjamin Gaignard <benjamin.gaignard@st.com> for STMicroelectronics. |
---|
5 | 5 | */ |
---|
6 | 6 | |
---|
7 | | -#include <drm/drmP.h> |
---|
8 | | - |
---|
9 | 7 | #include <linux/component.h> |
---|
10 | | -#include <linux/debugfs.h> |
---|
| 8 | +#include <linux/dma-mapping.h> |
---|
11 | 9 | #include <linux/kernel.h> |
---|
12 | 10 | #include <linux/module.h> |
---|
13 | 11 | #include <linux/of_platform.h> |
---|
14 | 12 | |
---|
15 | 13 | #include <drm/drm_atomic.h> |
---|
16 | 14 | #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> |
---|
18 | 19 | #include <drm/drm_gem_cma_helper.h> |
---|
19 | 20 | #include <drm/drm_gem_framebuffer_helper.h> |
---|
20 | | -#include <drm/drm_fb_helper.h> |
---|
21 | | -#include <drm/drm_fb_cma_helper.h> |
---|
22 | 21 | #include <drm/drm_of.h> |
---|
| 22 | +#include <drm/drm_probe_helper.h> |
---|
23 | 23 | |
---|
24 | | -#include "sti_crtc.h" |
---|
25 | 24 | #include "sti_drv.h" |
---|
26 | 25 | #include "sti_plane.h" |
---|
27 | 26 | |
---|
.. | .. |
---|
93 | 92 | {"fps_get", sti_drm_fps_dbg_show, 0}, |
---|
94 | 93 | }; |
---|
95 | 94 | |
---|
96 | | -static int sti_drm_dbg_init(struct drm_minor *minor) |
---|
| 95 | +static void sti_drm_dbg_init(struct drm_minor *minor) |
---|
97 | 96 | { |
---|
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); |
---|
100 | 100 | |
---|
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); |
---|
114 | 103 | |
---|
115 | 104 | 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; |
---|
120 | 105 | } |
---|
121 | 106 | |
---|
122 | 107 | static const struct drm_mode_config_funcs sti_mode_config_funcs = { |
---|
123 | 108 | .fb_create = drm_gem_fb_create, |
---|
124 | | - .output_poll_changed = drm_fb_helper_output_poll_changed, |
---|
125 | 109 | .atomic_check = drm_atomic_helper_check, |
---|
126 | 110 | .atomic_commit = drm_atomic_helper_commit, |
---|
127 | 111 | }; |
---|
.. | .. |
---|
147 | 131 | DEFINE_DRM_GEM_CMA_FOPS(sti_driver_fops); |
---|
148 | 132 | |
---|
149 | 133 | 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, |
---|
155 | 135 | .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, |
---|
169 | 137 | |
---|
170 | 138 | .debugfs_init = sti_drm_dbg_init, |
---|
171 | 139 | |
---|
.. | .. |
---|
206 | 174 | { |
---|
207 | 175 | struct sti_private *private = ddev->dev_private; |
---|
208 | 176 | |
---|
209 | | - drm_fb_cma_fbdev_fini(ddev); |
---|
210 | 177 | drm_kms_helper_poll_fini(ddev); |
---|
| 178 | + drm_atomic_helper_shutdown(ddev); |
---|
| 179 | + drm_mode_config_cleanup(ddev); |
---|
211 | 180 | component_unbind_all(ddev->dev, ddev); |
---|
212 | 181 | kfree(private); |
---|
213 | 182 | ddev->dev_private = NULL; |
---|
.. | .. |
---|
232 | 201 | |
---|
233 | 202 | ret = drm_dev_register(ddev, 0); |
---|
234 | 203 | if (ret) |
---|
235 | | - goto err_register; |
---|
| 204 | + goto err_cleanup; |
---|
236 | 205 | |
---|
237 | 206 | drm_mode_config_reset(ddev); |
---|
238 | 207 | |
---|
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); |
---|
244 | 209 | |
---|
245 | 210 | return 0; |
---|
246 | 211 | |
---|
247 | | -err_register: |
---|
248 | | - drm_mode_config_cleanup(ddev); |
---|
249 | 212 | err_cleanup: |
---|
250 | 213 | sti_cleanup(ddev); |
---|
251 | 214 | err_drm_dev_put: |
---|