forked from mirrors/linux
		
	drm/fbdev-dma: Remove obsolete setup function
The old setup function drm_fbdev_dma_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-49-tzimmermann@suse.de
This commit is contained in:
		
							parent
							
								
									c08810e97a
								
							
						
					
					
						commit
						731fddf430
					
				
					 2 changed files with 1 additions and 126 deletions
				
			
		| 
						 | 
					@ -2,15 +2,13 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <linux/fb.h>
 | 
					#include <linux/fb.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <drm/drm_crtc_helper.h>
 | 
					 | 
				
			||||||
#include <drm/drm_drv.h>
 | 
					#include <drm/drm_drv.h>
 | 
				
			||||||
 | 
					#include <drm/drm_fbdev_dma.h>
 | 
				
			||||||
#include <drm/drm_fb_dma_helper.h>
 | 
					#include <drm/drm_fb_dma_helper.h>
 | 
				
			||||||
#include <drm/drm_fb_helper.h>
 | 
					#include <drm/drm_fb_helper.h>
 | 
				
			||||||
#include <drm/drm_framebuffer.h>
 | 
					#include <drm/drm_framebuffer.h>
 | 
				
			||||||
#include <drm/drm_gem_dma_helper.h>
 | 
					#include <drm/drm_gem_dma_helper.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <drm/drm_fbdev_dma.h>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * struct fb_ops
 | 
					 * struct fb_ops
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
| 
						 | 
					@ -102,12 +100,6 @@ static const struct fb_ops drm_fbdev_dma_deferred_fb_ops = {
 | 
				
			||||||
 * struct drm_fb_helper
 | 
					 * struct drm_fb_helper
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int drm_fbdev_dma_helper_fb_probe(struct drm_fb_helper *fb_helper,
 | 
					 | 
				
			||||||
					 struct drm_fb_helper_surface_size *sizes)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	return drm_fbdev_dma_driver_fbdev_probe(fb_helper, sizes);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static int drm_fbdev_dma_helper_fb_dirty(struct drm_fb_helper *helper,
 | 
					static int drm_fbdev_dma_helper_fb_dirty(struct drm_fb_helper *helper,
 | 
				
			||||||
					 struct drm_clip_rect *clip)
 | 
										 struct drm_clip_rect *clip)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -128,7 +120,6 @@ static int drm_fbdev_dma_helper_fb_dirty(struct drm_fb_helper *helper,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static const struct drm_fb_helper_funcs drm_fbdev_dma_helper_funcs = {
 | 
					static const struct drm_fb_helper_funcs drm_fbdev_dma_helper_funcs = {
 | 
				
			||||||
	.fb_probe = drm_fbdev_dma_helper_fb_probe,
 | 
					 | 
				
			||||||
	.fb_dirty = drm_fbdev_dma_helper_fb_dirty,
 | 
						.fb_dirty = drm_fbdev_dma_helper_fb_dirty,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -246,112 +237,3 @@ int drm_fbdev_dma_driver_fbdev_probe(struct drm_fb_helper *fb_helper,
 | 
				
			||||||
	return ret;
 | 
						return ret;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
EXPORT_SYMBOL(drm_fbdev_dma_driver_fbdev_probe);
 | 
					EXPORT_SYMBOL(drm_fbdev_dma_driver_fbdev_probe);
 | 
				
			||||||
 | 
					 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
 * struct drm_client_funcs
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void drm_fbdev_dma_client_unregister(struct drm_client_dev *client)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	struct drm_fb_helper *fb_helper = drm_fb_helper_from_client(client);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (fb_helper->info) {
 | 
					 | 
				
			||||||
		drm_fb_helper_unregister_info(fb_helper);
 | 
					 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
		drm_client_release(&fb_helper->client);
 | 
					 | 
				
			||||||
		drm_fb_helper_unprepare(fb_helper);
 | 
					 | 
				
			||||||
		kfree(fb_helper);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static int drm_fbdev_dma_client_restore(struct drm_client_dev *client)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	drm_fb_helper_lastclose(client->dev);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static int drm_fbdev_dma_client_hotplug(struct drm_client_dev *client)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	struct drm_fb_helper *fb_helper = drm_fb_helper_from_client(client);
 | 
					 | 
				
			||||||
	struct drm_device *dev = client->dev;
 | 
					 | 
				
			||||||
	int ret;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (dev->fb_helper)
 | 
					 | 
				
			||||||
		return drm_fb_helper_hotplug_event(dev->fb_helper);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	ret = drm_fb_helper_init(dev, fb_helper);
 | 
					 | 
				
			||||||
	if (ret)
 | 
					 | 
				
			||||||
		goto err_drm_err;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (!drm_drv_uses_atomic_modeset(dev))
 | 
					 | 
				
			||||||
		drm_helper_disable_unused_functions(dev);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	ret = drm_fb_helper_initial_config(fb_helper);
 | 
					 | 
				
			||||||
	if (ret)
 | 
					 | 
				
			||||||
		goto err_drm_fb_helper_fini;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
err_drm_fb_helper_fini:
 | 
					 | 
				
			||||||
	drm_fb_helper_fini(fb_helper);
 | 
					 | 
				
			||||||
err_drm_err:
 | 
					 | 
				
			||||||
	drm_err(dev, "fbdev-dma: Failed to setup generic emulation (ret=%d)\n", ret);
 | 
					 | 
				
			||||||
	return ret;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const struct drm_client_funcs drm_fbdev_dma_client_funcs = {
 | 
					 | 
				
			||||||
	.owner		= THIS_MODULE,
 | 
					 | 
				
			||||||
	.unregister	= drm_fbdev_dma_client_unregister,
 | 
					 | 
				
			||||||
	.restore	= drm_fbdev_dma_client_restore,
 | 
					 | 
				
			||||||
	.hotplug	= drm_fbdev_dma_client_hotplug,
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * drm_fbdev_dma_setup() - Setup fbdev emulation for GEM DMA helpers
 | 
					 | 
				
			||||||
 * @dev: DRM device
 | 
					 | 
				
			||||||
 * @preferred_bpp: Preferred bits per pixel for the device.
 | 
					 | 
				
			||||||
 *                 32 is used if this is zero.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * This function sets up fbdev emulation for GEM DMA drivers that support
 | 
					 | 
				
			||||||
 * dumb buffers with a virtual address and that can be mmap'ed.
 | 
					 | 
				
			||||||
 * drm_fbdev_dma_setup() shall be called after the DRM driver registered
 | 
					 | 
				
			||||||
 * the new DRM device with drm_dev_register().
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * Restore, hotplug events and teardown are all taken care of. Drivers that do
 | 
					 | 
				
			||||||
 * suspend/resume need to call drm_fb_helper_set_suspend_unlocked() themselves.
 | 
					 | 
				
			||||||
 * Simple drivers might use drm_mode_config_helper_suspend().
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * This function is safe to call even when there are no connectors present.
 | 
					 | 
				
			||||||
 * Setup will be retried on the next hotplug event.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * The fbdev is destroyed by drm_dev_unregister().
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
void drm_fbdev_dma_setup(struct drm_device *dev, unsigned int preferred_bpp)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	struct drm_fb_helper *fb_helper;
 | 
					 | 
				
			||||||
	int ret;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	drm_WARN(dev, !dev->registered, "Device has not been registered.\n");
 | 
					 | 
				
			||||||
	drm_WARN(dev, dev->fb_helper, "fb_helper is already set!\n");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	fb_helper = kzalloc(sizeof(*fb_helper), GFP_KERNEL);
 | 
					 | 
				
			||||||
	if (!fb_helper)
 | 
					 | 
				
			||||||
		return;
 | 
					 | 
				
			||||||
	drm_fb_helper_prepare(dev, fb_helper, preferred_bpp, &drm_fbdev_dma_helper_funcs);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	ret = drm_client_init(dev, &fb_helper->client, "fbdev", &drm_fbdev_dma_client_funcs);
 | 
					 | 
				
			||||||
	if (ret) {
 | 
					 | 
				
			||||||
		drm_err(dev, "Failed to register client: %d\n", ret);
 | 
					 | 
				
			||||||
		goto err_drm_client_init;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	drm_client_register(&fb_helper->client);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
err_drm_client_init:
 | 
					 | 
				
			||||||
	drm_fb_helper_unprepare(fb_helper);
 | 
					 | 
				
			||||||
	kfree(fb_helper);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
EXPORT_SYMBOL(drm_fbdev_dma_setup);
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,7 +3,6 @@
 | 
				
			||||||
#ifndef DRM_FBDEV_DMA_H
 | 
					#ifndef DRM_FBDEV_DMA_H
 | 
				
			||||||
#define DRM_FBDEV_DMA_H
 | 
					#define DRM_FBDEV_DMA_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct drm_device;
 | 
					 | 
				
			||||||
struct drm_fb_helper;
 | 
					struct drm_fb_helper;
 | 
				
			||||||
struct drm_fb_helper_surface_size;
 | 
					struct drm_fb_helper_surface_size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,15 +12,9 @@ int drm_fbdev_dma_driver_fbdev_probe(struct drm_fb_helper *fb_helper,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define DRM_FBDEV_DMA_DRIVER_OPS \
 | 
					#define DRM_FBDEV_DMA_DRIVER_OPS \
 | 
				
			||||||
	.fbdev_probe = drm_fbdev_dma_driver_fbdev_probe
 | 
						.fbdev_probe = drm_fbdev_dma_driver_fbdev_probe
 | 
				
			||||||
 | 
					 | 
				
			||||||
void drm_fbdev_dma_setup(struct drm_device *dev, unsigned int preferred_bpp);
 | 
					 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
static inline void drm_fbdev_dma_setup(struct drm_device *dev, unsigned int preferred_bpp)
 | 
					 | 
				
			||||||
{ }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define DRM_FBDEV_DMA_DRIVER_OPS \
 | 
					#define DRM_FBDEV_DMA_DRIVER_OPS \
 | 
				
			||||||
	.fbdev_probe = NULL
 | 
						.fbdev_probe = NULL
 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue