Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/fbdev-shmem: Remove obsolete setup function

The old setup function drm_fbdev_shmem_setup() is unused. Remove it
and its internal callbacks. New drivers should call drm_client_setup()
instead.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240924071734.98201-64-tzimmermann@suse.de

+1 -125
+1 -119
drivers/gpu/drm/drm_fbdev_shmem.c
··· 2 2 3 3 #include <linux/fb.h> 4 4 5 - #include <drm/drm_crtc_helper.h> 6 5 #include <drm/drm_drv.h> 6 + #include <drm/drm_fbdev_shmem.h> 7 7 #include <drm/drm_fb_helper.h> 8 8 #include <drm/drm_framebuffer.h> 9 9 #include <drm/drm_gem_framebuffer_helper.h> 10 10 #include <drm/drm_gem_shmem_helper.h> 11 - 12 - #include <drm/drm_fbdev_shmem.h> 13 11 14 12 /* 15 13 * struct fb_ops ··· 103 105 * struct drm_fb_helper 104 106 */ 105 107 106 - static int drm_fbdev_shmem_helper_fb_probe(struct drm_fb_helper *fb_helper, 107 - struct drm_fb_helper_surface_size *sizes) 108 - { 109 - return drm_fbdev_shmem_driver_fbdev_probe(fb_helper, sizes); 110 - } 111 - 112 108 static int drm_fbdev_shmem_helper_fb_dirty(struct drm_fb_helper *helper, 113 109 struct drm_clip_rect *clip) 114 110 { ··· 123 131 } 124 132 125 133 static const struct drm_fb_helper_funcs drm_fbdev_shmem_helper_funcs = { 126 - .fb_probe = drm_fbdev_shmem_helper_fb_probe, 127 134 .fb_dirty = drm_fbdev_shmem_helper_fb_dirty, 128 135 }; 129 136 ··· 209 218 return ret; 210 219 } 211 220 EXPORT_SYMBOL(drm_fbdev_shmem_driver_fbdev_probe); 212 - 213 - /* 214 - * struct drm_client_funcs 215 - */ 216 - 217 - static void drm_fbdev_shmem_client_unregister(struct drm_client_dev *client) 218 - { 219 - struct drm_fb_helper *fb_helper = drm_fb_helper_from_client(client); 220 - 221 - if (fb_helper->info) { 222 - drm_fb_helper_unregister_info(fb_helper); 223 - } else { 224 - drm_client_release(&fb_helper->client); 225 - drm_fb_helper_unprepare(fb_helper); 226 - kfree(fb_helper); 227 - } 228 - } 229 - 230 - static int drm_fbdev_shmem_client_restore(struct drm_client_dev *client) 231 - { 232 - drm_fb_helper_lastclose(client->dev); 233 - 234 - return 0; 235 - } 236 - 237 - static int drm_fbdev_shmem_client_hotplug(struct drm_client_dev *client) 238 - { 239 - struct drm_fb_helper *fb_helper = drm_fb_helper_from_client(client); 240 - struct drm_device *dev = client->dev; 241 - int ret; 242 - 243 - if (dev->fb_helper) 244 - return drm_fb_helper_hotplug_event(dev->fb_helper); 245 - 246 - ret = drm_fb_helper_init(dev, fb_helper); 247 - if (ret) 248 - goto err_drm_err; 249 - 250 - if (!drm_drv_uses_atomic_modeset(dev)) 251 - drm_helper_disable_unused_functions(dev); 252 - 253 - ret = drm_fb_helper_initial_config(fb_helper); 254 - if (ret) 255 - goto err_drm_fb_helper_fini; 256 - 257 - return 0; 258 - 259 - err_drm_fb_helper_fini: 260 - drm_fb_helper_fini(fb_helper); 261 - err_drm_err: 262 - drm_err(dev, "fbdev-shmem: Failed to setup emulation (ret=%d)\n", ret); 263 - return ret; 264 - } 265 - 266 - static const struct drm_client_funcs drm_fbdev_shmem_client_funcs = { 267 - .owner = THIS_MODULE, 268 - .unregister = drm_fbdev_shmem_client_unregister, 269 - .restore = drm_fbdev_shmem_client_restore, 270 - .hotplug = drm_fbdev_shmem_client_hotplug, 271 - }; 272 - 273 - /** 274 - * drm_fbdev_shmem_setup() - Setup fbdev emulation for GEM SHMEM helpers 275 - * @dev: DRM device 276 - * @preferred_bpp: Preferred bits per pixel for the device. 277 - * 32 is used if this is zero. 278 - * 279 - * This function sets up fbdev emulation for GEM DMA drivers that support 280 - * dumb buffers with a virtual address and that can be mmap'ed. 281 - * drm_fbdev_shmem_setup() shall be called after the DRM driver registered 282 - * the new DRM device with drm_dev_register(). 283 - * 284 - * Restore, hotplug events and teardown are all taken care of. Drivers that do 285 - * suspend/resume need to call drm_fb_helper_set_suspend_unlocked() themselves. 286 - * Simple drivers might use drm_mode_config_helper_suspend(). 287 - * 288 - * This function is safe to call even when there are no connectors present. 289 - * Setup will be retried on the next hotplug event. 290 - * 291 - * The fbdev is destroyed by drm_dev_unregister(). 292 - */ 293 - void drm_fbdev_shmem_setup(struct drm_device *dev, unsigned int preferred_bpp) 294 - { 295 - struct drm_fb_helper *fb_helper; 296 - int ret; 297 - 298 - drm_WARN(dev, !dev->registered, "Device has not been registered.\n"); 299 - drm_WARN(dev, dev->fb_helper, "fb_helper is already set!\n"); 300 - 301 - fb_helper = kzalloc(sizeof(*fb_helper), GFP_KERNEL); 302 - if (!fb_helper) 303 - return; 304 - drm_fb_helper_prepare(dev, fb_helper, preferred_bpp, &drm_fbdev_shmem_helper_funcs); 305 - 306 - ret = drm_client_init(dev, &fb_helper->client, "fbdev", &drm_fbdev_shmem_client_funcs); 307 - if (ret) { 308 - drm_err(dev, "Failed to register client: %d\n", ret); 309 - goto err_drm_client_init; 310 - } 311 - 312 - drm_client_register(&fb_helper->client); 313 - 314 - return; 315 - 316 - err_drm_client_init: 317 - drm_fb_helper_unprepare(fb_helper); 318 - kfree(fb_helper); 319 - } 320 - EXPORT_SYMBOL(drm_fbdev_shmem_setup);
-6
include/drm/drm_fbdev_shmem.h
··· 3 3 #ifndef DRM_FBDEV_SHMEM_H 4 4 #define DRM_FBDEV_SHMEM_H 5 5 6 - struct drm_device; 7 6 struct drm_fb_helper; 8 7 struct drm_fb_helper_surface_size; 9 8 ··· 12 13 13 14 #define DRM_FBDEV_SHMEM_DRIVER_OPS \ 14 15 .fbdev_probe = drm_fbdev_shmem_driver_fbdev_probe 15 - 16 - void drm_fbdev_shmem_setup(struct drm_device *dev, unsigned int preferred_bpp); 17 16 #else 18 - static inline void drm_fbdev_shmem_setup(struct drm_device *dev, unsigned int preferred_bpp) 19 - { } 20 - 21 17 #define DRM_FBDEV_SHMEM_DRIVER_OPS \ 22 18 .fbdev_probe = NULL 23 19 #endif