drm/<drivers>: simplify ->fb_probe callback
The fb helper lost its support for reallocating an fb completely, so no need to return special success values any more. Reviewed-by: Rob Clark <robdclark@gmail.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
		
							parent
							
								
									8acf658ad6
								
							
						
					
					
						commit
						cd5428a544
					
				| @ -146,9 +146,10 @@ static int astfb_create_object(struct ast_fbdev *afbdev, | ||||
| 	return ret; | ||||
| } | ||||
| 
 | ||||
| static int astfb_create(struct ast_fbdev *afbdev, | ||||
| static int astfb_create(struct drm_fb_helper *helper, | ||||
| 			struct drm_fb_helper_surface_size *sizes) | ||||
| { | ||||
| 	struct ast_fbdev *afbdev = (struct ast_fbdev *)helper; | ||||
| 	struct drm_device *dev = afbdev->helper.dev; | ||||
| 	struct drm_mode_fb_cmd2 mode_cmd; | ||||
| 	struct drm_framebuffer *fb; | ||||
| @ -249,26 +250,10 @@ static void ast_fb_gamma_get(struct drm_crtc *crtc, u16 *red, u16 *green, | ||||
| 	*blue = ast_crtc->lut_b[regno] << 8; | ||||
| } | ||||
| 
 | ||||
| static int ast_find_or_create_single(struct drm_fb_helper *helper, | ||||
| 					  struct drm_fb_helper_surface_size *sizes) | ||||
| { | ||||
| 	struct ast_fbdev *afbdev = (struct ast_fbdev *)helper; | ||||
| 	int new_fb = 0; | ||||
| 	int ret; | ||||
| 
 | ||||
| 	if (!helper->fb) { | ||||
| 		ret = astfb_create(afbdev, sizes); | ||||
| 		if (ret) | ||||
| 			return ret; | ||||
| 		new_fb = 1; | ||||
| 	} | ||||
| 	return new_fb; | ||||
| } | ||||
| 
 | ||||
| static struct drm_fb_helper_funcs ast_fb_helper_funcs = { | ||||
| 	.gamma_set = ast_fb_gamma_set, | ||||
| 	.gamma_get = ast_fb_gamma_get, | ||||
| 	.fb_probe = ast_find_or_create_single, | ||||
| 	.fb_probe = astfb_create, | ||||
| }; | ||||
| 
 | ||||
| static void ast_fbdev_destroy(struct drm_device *dev, | ||||
|  | ||||
| @ -121,9 +121,10 @@ static int cirrusfb_create_object(struct cirrus_fbdev *afbdev, | ||||
| 	return ret; | ||||
| } | ||||
| 
 | ||||
| static int cirrusfb_create(struct cirrus_fbdev *gfbdev, | ||||
| static int cirrusfb_create(struct drm_fb_helper *helper, | ||||
| 			   struct drm_fb_helper_surface_size *sizes) | ||||
| { | ||||
| 	struct cirrus_fbdev *gfbdev = (struct cirrus_fbdev *)helper; | ||||
| 	struct drm_device *dev = gfbdev->helper.dev; | ||||
| 	struct cirrus_device *cdev = gfbdev->helper.dev->dev_private; | ||||
| 	struct fb_info *info; | ||||
| @ -220,23 +221,6 @@ out_iounmap: | ||||
| 	return ret; | ||||
| } | ||||
| 
 | ||||
| static int cirrus_fb_find_or_create_single(struct drm_fb_helper *helper, | ||||
| 					   struct drm_fb_helper_surface_size | ||||
| 					   *sizes) | ||||
| { | ||||
| 	struct cirrus_fbdev *gfbdev = (struct cirrus_fbdev *)helper; | ||||
| 	int new_fb = 0; | ||||
| 	int ret; | ||||
| 
 | ||||
| 	if (!helper->fb) { | ||||
| 		ret = cirrusfb_create(gfbdev, sizes); | ||||
| 		if (ret) | ||||
| 			return ret; | ||||
| 		new_fb = 1; | ||||
| 	} | ||||
| 	return new_fb; | ||||
| } | ||||
| 
 | ||||
| static int cirrus_fbdev_destroy(struct drm_device *dev, | ||||
| 				struct cirrus_fbdev *gfbdev) | ||||
| { | ||||
| @ -268,7 +252,7 @@ static int cirrus_fbdev_destroy(struct drm_device *dev, | ||||
| static struct drm_fb_helper_funcs cirrus_fb_helper_funcs = { | ||||
| 	.gamma_set = cirrus_crtc_fb_gamma_set, | ||||
| 	.gamma_get = cirrus_crtc_fb_gamma_get, | ||||
| 	.fb_probe = cirrus_fb_find_or_create_single, | ||||
| 	.fb_probe = cirrusfb_create, | ||||
| }; | ||||
| 
 | ||||
| int cirrus_fbdev_init(struct cirrus_device *cdev) | ||||
|  | ||||
| @ -275,23 +275,8 @@ err_drm_gem_cma_free_object: | ||||
| 	return ret; | ||||
| } | ||||
| 
 | ||||
| static int drm_fbdev_cma_probe(struct drm_fb_helper *helper, | ||||
| 	struct drm_fb_helper_surface_size *sizes) | ||||
| { | ||||
| 	int ret = 0; | ||||
| 
 | ||||
| 	if (!helper->fb) { | ||||
| 		ret = drm_fbdev_cma_create(helper, sizes); | ||||
| 		if (ret < 0) | ||||
| 			return ret; | ||||
| 		ret = 1; | ||||
| 	} | ||||
| 
 | ||||
| 	return ret; | ||||
| } | ||||
| 
 | ||||
| static struct drm_fb_helper_funcs drm_fb_cma_helper_funcs = { | ||||
| 	.fb_probe = drm_fbdev_cma_probe, | ||||
| 	.fb_probe = drm_fbdev_cma_create, | ||||
| }; | ||||
| 
 | ||||
| /**
 | ||||
|  | ||||
| @ -226,36 +226,8 @@ out: | ||||
| 	return ret; | ||||
| } | ||||
| 
 | ||||
| static int exynos_drm_fbdev_probe(struct drm_fb_helper *helper, | ||||
| 				   struct drm_fb_helper_surface_size *sizes) | ||||
| { | ||||
| 	int ret = 0; | ||||
| 
 | ||||
| 	DRM_DEBUG_KMS("%s\n", __FILE__); | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * with !helper->fb, it means that this funcion is called first time | ||||
| 	 * and after that, the helper->fb would be used as clone mode. | ||||
| 	 */ | ||||
| 	if (!helper->fb) { | ||||
| 		ret = exynos_drm_fbdev_create(helper, sizes); | ||||
| 		if (ret < 0) { | ||||
| 			DRM_ERROR("failed to create fbdev.\n"); | ||||
| 			return ret; | ||||
| 		} | ||||
| 
 | ||||
| 		/*
 | ||||
| 		 * fb_helper expects a value more than 1 if succeed | ||||
| 		 * because register_framebuffer() should be called. | ||||
| 		 */ | ||||
| 		ret = 1; | ||||
| 	} | ||||
| 
 | ||||
| 	return ret; | ||||
| } | ||||
| 
 | ||||
| static struct drm_fb_helper_funcs exynos_drm_fb_helper_funcs = { | ||||
| 	.fb_probe =	exynos_drm_fbdev_probe, | ||||
| 	.fb_probe =	exynos_drm_fbdev_create, | ||||
| }; | ||||
| 
 | ||||
| int exynos_drm_fbdev_init(struct drm_device *dev) | ||||
|  | ||||
| @ -545,9 +545,7 @@ static int psbfb_probe(struct drm_fb_helper *helper, | ||||
| 	struct psb_fbdev *psb_fbdev = (struct psb_fbdev *)helper; | ||||
| 	struct drm_device *dev = psb_fbdev->psb_fb_helper.dev; | ||||
| 	struct drm_psb_private *dev_priv = dev->dev_private; | ||||
| 	int new_fb = 0; | ||||
| 	int bytespp; | ||||
| 	int ret; | ||||
| 
 | ||||
| 	bytespp = sizes->surface_bpp / 8; | ||||
| 	if (bytespp == 3)	/* no 24bit packed */ | ||||
| @ -562,13 +560,7 @@ static int psbfb_probe(struct drm_fb_helper *helper, | ||||
|                 sizes->surface_depth = 16; | ||||
|         } | ||||
| 
 | ||||
| 	if (!helper->fb) { | ||||
| 		ret = psbfb_create(psb_fbdev, sizes); | ||||
| 		if (ret) | ||||
| 			return ret; | ||||
| 		new_fb = 1; | ||||
| 	} | ||||
| 	return new_fb; | ||||
| 	return psbfb_create(psb_fbdev, sizes); | ||||
| } | ||||
| 
 | ||||
| static struct drm_fb_helper_funcs psb_fb_helper_funcs = { | ||||
|  | ||||
| @ -57,9 +57,10 @@ static struct fb_ops intelfb_ops = { | ||||
| 	.fb_debug_leave = drm_fb_helper_debug_leave, | ||||
| }; | ||||
| 
 | ||||
| static int intelfb_create(struct intel_fbdev *ifbdev, | ||||
| static int intelfb_create(struct drm_fb_helper *helper, | ||||
| 			  struct drm_fb_helper_surface_size *sizes) | ||||
| { | ||||
| 	struct intel_fbdev *ifbdev = (struct intel_fbdev *)helper; | ||||
| 	struct drm_device *dev = ifbdev->helper.dev; | ||||
| 	struct drm_i915_private *dev_priv = dev->dev_private; | ||||
| 	struct fb_info *info; | ||||
| @ -181,26 +182,10 @@ out: | ||||
| 	return ret; | ||||
| } | ||||
| 
 | ||||
| static int intel_fb_find_or_create_single(struct drm_fb_helper *helper, | ||||
| 					  struct drm_fb_helper_surface_size *sizes) | ||||
| { | ||||
| 	struct intel_fbdev *ifbdev = (struct intel_fbdev *)helper; | ||||
| 	int new_fb = 0; | ||||
| 	int ret; | ||||
| 
 | ||||
| 	if (!helper->fb) { | ||||
| 		ret = intelfb_create(ifbdev, sizes); | ||||
| 		if (ret) | ||||
| 			return ret; | ||||
| 		new_fb = 1; | ||||
| 	} | ||||
| 	return new_fb; | ||||
| } | ||||
| 
 | ||||
| static struct drm_fb_helper_funcs intel_fb_helper_funcs = { | ||||
| 	.gamma_set = intel_crtc_fb_gamma_set, | ||||
| 	.gamma_get = intel_crtc_fb_gamma_get, | ||||
| 	.fb_probe = intel_fb_find_or_create_single, | ||||
| 	.fb_probe = intelfb_create, | ||||
| }; | ||||
| 
 | ||||
| static void intel_fbdev_destroy(struct drm_device *dev, | ||||
|  | ||||
| @ -121,9 +121,10 @@ static int mgag200fb_create_object(struct mga_fbdev *afbdev, | ||||
| 	return ret; | ||||
| } | ||||
| 
 | ||||
| static int mgag200fb_create(struct mga_fbdev *mfbdev, | ||||
| static int mgag200fb_create(struct drm_fb_helper *helper, | ||||
| 			   struct drm_fb_helper_surface_size *sizes) | ||||
| { | ||||
| 	struct mga_fbdev *mfbdev = (struct mga_fbdev *)helper; | ||||
| 	struct drm_device *dev = mfbdev->helper.dev; | ||||
| 	struct drm_mode_fb_cmd2 mode_cmd; | ||||
| 	struct mga_device *mdev = dev->dev_private; | ||||
| @ -210,23 +211,6 @@ out: | ||||
| 	return ret; | ||||
| } | ||||
| 
 | ||||
| static int mga_fb_find_or_create_single(struct drm_fb_helper *helper, | ||||
| 					   struct drm_fb_helper_surface_size | ||||
| 					   *sizes) | ||||
| { | ||||
| 	struct mga_fbdev *mfbdev = (struct mga_fbdev *)helper; | ||||
| 	int new_fb = 0; | ||||
| 	int ret; | ||||
| 
 | ||||
| 	if (!helper->fb) { | ||||
| 		ret = mgag200fb_create(mfbdev, sizes); | ||||
| 		if (ret) | ||||
| 			return ret; | ||||
| 		new_fb = 1; | ||||
| 	} | ||||
| 	return new_fb; | ||||
| } | ||||
| 
 | ||||
| static int mga_fbdev_destroy(struct drm_device *dev, | ||||
| 				struct mga_fbdev *mfbdev) | ||||
| { | ||||
| @ -257,7 +241,7 @@ static int mga_fbdev_destroy(struct drm_device *dev, | ||||
| static struct drm_fb_helper_funcs mga_fb_helper_funcs = { | ||||
| 	.gamma_set = mga_crtc_fb_gamma_set, | ||||
| 	.gamma_get = mga_crtc_fb_gamma_get, | ||||
| 	.fb_probe = mga_fb_find_or_create_single, | ||||
| 	.fb_probe = mgag200fb_create, | ||||
| }; | ||||
| 
 | ||||
| int mgag200_fbdev_init(struct mga_device *mdev) | ||||
|  | ||||
| @ -251,9 +251,10 @@ nouveau_fbcon_zfill(struct drm_device *dev, struct nouveau_fbdev *fbcon) | ||||
| } | ||||
| 
 | ||||
| static int | ||||
| nouveau_fbcon_create(struct nouveau_fbdev *fbcon, | ||||
| nouveau_fbcon_create(struct drm_fb_helper *helper, | ||||
| 		     struct drm_fb_helper_surface_size *sizes) | ||||
| { | ||||
| 	struct nouveau_fbdev *fbcon = (struct nouveau_fbdev *)helper; | ||||
| 	struct drm_device *dev = fbcon->dev; | ||||
| 	struct nouveau_drm *drm = nouveau_drm(dev); | ||||
| 	struct nouveau_device *device = nv_device(drm->device); | ||||
| @ -388,23 +389,6 @@ out: | ||||
| 	return ret; | ||||
| } | ||||
| 
 | ||||
| static int | ||||
| nouveau_fbcon_find_or_create_single(struct drm_fb_helper *helper, | ||||
| 				    struct drm_fb_helper_surface_size *sizes) | ||||
| { | ||||
| 	struct nouveau_fbdev *fbcon = (struct nouveau_fbdev *)helper; | ||||
| 	int new_fb = 0; | ||||
| 	int ret; | ||||
| 
 | ||||
| 	if (!helper->fb) { | ||||
| 		ret = nouveau_fbcon_create(fbcon, sizes); | ||||
| 		if (ret) | ||||
| 			return ret; | ||||
| 		new_fb = 1; | ||||
| 	} | ||||
| 	return new_fb; | ||||
| } | ||||
| 
 | ||||
| void | ||||
| nouveau_fbcon_output_poll_changed(struct drm_device *dev) | ||||
| { | ||||
| @ -450,7 +434,7 @@ void nouveau_fbcon_gpu_lockup(struct fb_info *info) | ||||
| static struct drm_fb_helper_funcs nouveau_fbcon_helper_funcs = { | ||||
| 	.gamma_set = nouveau_fbcon_gamma_set, | ||||
| 	.gamma_get = nouveau_fbcon_gamma_get, | ||||
| 	.fb_probe = nouveau_fbcon_find_or_create_single, | ||||
| 	.fb_probe = nouveau_fbcon_create, | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -187,9 +187,10 @@ out_unref: | ||||
| 	return ret; | ||||
| } | ||||
| 
 | ||||
| static int radeonfb_create(struct radeon_fbdev *rfbdev, | ||||
| static int radeonfb_create(struct drm_fb_helper *helper, | ||||
| 			   struct drm_fb_helper_surface_size *sizes) | ||||
| { | ||||
| 	struct radeon_fbdev *rfbdev = (struct radeon_fbdev *)helper; | ||||
| 	struct radeon_device *rdev = rfbdev->rdev; | ||||
| 	struct fb_info *info; | ||||
| 	struct drm_framebuffer *fb = NULL; | ||||
| @ -300,22 +301,6 @@ out_unref: | ||||
| 	return ret; | ||||
| } | ||||
| 
 | ||||
| static int radeon_fb_find_or_create_single(struct drm_fb_helper *helper, | ||||
| 					   struct drm_fb_helper_surface_size *sizes) | ||||
| { | ||||
| 	struct radeon_fbdev *rfbdev = (struct radeon_fbdev *)helper; | ||||
| 	int new_fb = 0; | ||||
| 	int ret; | ||||
| 
 | ||||
| 	if (!helper->fb) { | ||||
| 		ret = radeonfb_create(rfbdev, sizes); | ||||
| 		if (ret) | ||||
| 			return ret; | ||||
| 		new_fb = 1; | ||||
| 	} | ||||
| 	return new_fb; | ||||
| } | ||||
| 
 | ||||
| void radeon_fb_output_poll_changed(struct radeon_device *rdev) | ||||
| { | ||||
| 	drm_fb_helper_hotplug_event(&rdev->mode_info.rfbdev->helper); | ||||
| @ -349,7 +334,7 @@ static int radeon_fbdev_destroy(struct drm_device *dev, struct radeon_fbdev *rfb | ||||
| static struct drm_fb_helper_funcs radeon_fb_helper_funcs = { | ||||
| 	.gamma_set = radeon_crtc_fb_gamma_set, | ||||
| 	.gamma_get = radeon_crtc_fb_gamma_get, | ||||
| 	.fb_probe = radeon_fb_find_or_create_single, | ||||
| 	.fb_probe = radeonfb_create, | ||||
| }; | ||||
| 
 | ||||
| int radeon_fbdev_init(struct radeon_device *rdev) | ||||
|  | ||||
| @ -476,9 +476,10 @@ udl_framebuffer_init(struct drm_device *dev, | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| static int udlfb_create(struct udl_fbdev *ufbdev, | ||||
| static int udlfb_create(struct drm_fb_helper *helper, | ||||
| 			struct drm_fb_helper_surface_size *sizes) | ||||
| { | ||||
| 	struct udl_fbdev *ufbdev = (struct udl_fbdev *)helper; | ||||
| 	struct drm_device *dev = ufbdev->helper.dev; | ||||
| 	struct fb_info *info; | ||||
| 	struct device *device = &dev->usbdev->dev; | ||||
| @ -556,27 +557,10 @@ out: | ||||
| 	return ret; | ||||
| } | ||||
| 
 | ||||
| static int udl_fb_find_or_create_single(struct drm_fb_helper *helper, | ||||
| 					struct drm_fb_helper_surface_size *sizes) | ||||
| { | ||||
| 	struct udl_fbdev *ufbdev = (struct udl_fbdev *)helper; | ||||
| 	int new_fb = 0; | ||||
| 	int ret; | ||||
| 
 | ||||
| 	if (!helper->fb) { | ||||
| 		ret = udlfb_create(ufbdev, sizes); | ||||
| 		if (ret) | ||||
| 			return ret; | ||||
| 
 | ||||
| 		new_fb = 1; | ||||
| 	} | ||||
| 	return new_fb; | ||||
| } | ||||
| 
 | ||||
| static struct drm_fb_helper_funcs udl_fb_helper_funcs = { | ||||
| 	.gamma_set = udl_crtc_fb_gamma_set, | ||||
| 	.gamma_get = udl_crtc_fb_gamma_get, | ||||
| 	.fb_probe = udl_fb_find_or_create_single, | ||||
| 	.fb_probe = udlfb_create, | ||||
| }; | ||||
| 
 | ||||
| static void udl_fbdev_destroy(struct drm_device *dev, | ||||
|  | ||||
| @ -296,25 +296,10 @@ static void omap_crtc_fb_gamma_get(struct drm_crtc *crtc, | ||||
| 	DBG("fbdev: get gamma"); | ||||
| } | ||||
| 
 | ||||
| static int omap_fbdev_probe(struct drm_fb_helper *helper, | ||||
| 		struct drm_fb_helper_surface_size *sizes) | ||||
| { | ||||
| 	int new_fb = 0; | ||||
| 	int ret; | ||||
| 
 | ||||
| 	if (!helper->fb) { | ||||
| 		ret = omap_fbdev_create(helper, sizes); | ||||
| 		if (ret) | ||||
| 			return ret; | ||||
| 		new_fb = 1; | ||||
| 	} | ||||
| 	return new_fb; | ||||
| } | ||||
| 
 | ||||
| static struct drm_fb_helper_funcs omap_fb_helper_funcs = { | ||||
| 	.gamma_set = omap_crtc_fb_gamma_set, | ||||
| 	.gamma_get = omap_crtc_fb_gamma_get, | ||||
| 	.fb_probe = omap_fbdev_probe, | ||||
| 	.fb_probe = omap_fbdev_create, | ||||
| }; | ||||
| 
 | ||||
| static struct drm_fb_helper *get_fb(struct fb_info *fbi) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user