mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	drm/fb-helper: Remove return value from drm_fbdev_generic_setup()
Generic fbdev emulation is a DRM client. Drivers should invoke the setup function, but not depend on its success. Hence remove the return value. v3: * document stricter requirements for call sequence v2: * warn if fbdev device has not been registered yet * document the new behavior * convert the existing warning to the new dev_ interface Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Reviewed-by: Sam Ravnborg <sam@ravnborg.org> Reviewed-by: Noralf Trønnes <noralf@tronnes.org> Acked-by: Sam Ravnborg <sam@ravnborg.org> Acked-by: Gerd Hoffmann <kraxel@redhat.com> Link: https://patchwork.freedesktop.org/patch/msgid/20200408082641.590-11-tzimmermann@suse.de
This commit is contained in:
		
							parent
							
								
									3662cd1992
								
							
						
					
					
						commit
						1aed9509b2
					
				
					 2 changed files with 15 additions and 13 deletions
				
			
		| 
						 | 
				
			
			@ -2170,6 +2170,8 @@ static const struct drm_client_funcs drm_fbdev_client_funcs = {
 | 
			
		|||
 *
 | 
			
		||||
 * This function sets up generic fbdev emulation for drivers that supports
 | 
			
		||||
 * dumb buffers with a virtual address and that can be mmap'ed.
 | 
			
		||||
 * drm_fbdev_generic_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.
 | 
			
		||||
| 
						 | 
				
			
			@ -2186,29 +2188,30 @@ static const struct drm_client_funcs drm_fbdev_client_funcs = {
 | 
			
		|||
 * Setup will be retried on the next hotplug event.
 | 
			
		||||
 *
 | 
			
		||||
 * The fbdev is destroyed by drm_dev_unregister().
 | 
			
		||||
 *
 | 
			
		||||
 * Returns:
 | 
			
		||||
 * Zero on success or negative error code on failure.
 | 
			
		||||
 */
 | 
			
		||||
int drm_fbdev_generic_setup(struct drm_device *dev, unsigned int preferred_bpp)
 | 
			
		||||
void drm_fbdev_generic_setup(struct drm_device *dev,
 | 
			
		||||
			     unsigned int preferred_bpp)
 | 
			
		||||
{
 | 
			
		||||
	struct drm_fb_helper *fb_helper;
 | 
			
		||||
	int ret;
 | 
			
		||||
 | 
			
		||||
	WARN(dev->fb_helper, "fb_helper is already set!\n");
 | 
			
		||||
	drm_WARN(dev, !dev->registered, "Device has not been registered.\n");
 | 
			
		||||
	drm_WARN(dev, dev->fb_helper, "fb_helper is already set!\n");
 | 
			
		||||
 | 
			
		||||
	if (!drm_fbdev_emulation)
 | 
			
		||||
		return 0;
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	fb_helper = kzalloc(sizeof(*fb_helper), GFP_KERNEL);
 | 
			
		||||
	if (!fb_helper)
 | 
			
		||||
		return -ENOMEM;
 | 
			
		||||
	if (!fb_helper) {
 | 
			
		||||
		drm_err(dev, "Failed to allocate fb_helper\n");
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ret = drm_client_init(dev, &fb_helper->client, "fbdev", &drm_fbdev_client_funcs);
 | 
			
		||||
	if (ret) {
 | 
			
		||||
		kfree(fb_helper);
 | 
			
		||||
		drm_err(dev, "Failed to register client: %d\n", ret);
 | 
			
		||||
		return ret;
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (!preferred_bpp)
 | 
			
		||||
| 
						 | 
				
			
			@ -2222,8 +2225,6 @@ int drm_fbdev_generic_setup(struct drm_device *dev, unsigned int preferred_bpp)
 | 
			
		|||
		drm_dbg_kms(dev, "client hotplug ret=%d\n", ret);
 | 
			
		||||
 | 
			
		||||
	drm_client_register(&fb_helper->client);
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
EXPORT_SYMBOL(drm_fbdev_generic_setup);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -269,7 +269,8 @@ int drm_fb_helper_debug_leave(struct fb_info *info);
 | 
			
		|||
void drm_fb_helper_lastclose(struct drm_device *dev);
 | 
			
		||||
void drm_fb_helper_output_poll_changed(struct drm_device *dev);
 | 
			
		||||
 | 
			
		||||
int drm_fbdev_generic_setup(struct drm_device *dev, unsigned int preferred_bpp);
 | 
			
		||||
void drm_fbdev_generic_setup(struct drm_device *dev,
 | 
			
		||||
			     unsigned int preferred_bpp);
 | 
			
		||||
#else
 | 
			
		||||
static inline void drm_fb_helper_prepare(struct drm_device *dev,
 | 
			
		||||
					struct drm_fb_helper *helper,
 | 
			
		||||
| 
						 | 
				
			
			@ -443,7 +444,7 @@ static inline void drm_fb_helper_output_poll_changed(struct drm_device *dev)
 | 
			
		|||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline int
 | 
			
		||||
static inline void
 | 
			
		||||
drm_fbdev_generic_setup(struct drm_device *dev, unsigned int preferred_bpp)
 | 
			
		||||
{
 | 
			
		||||
	return 0;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue