Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 228f2cb3 authored by Chuck Ebbert's avatar Chuck Ebbert Committed by Daniel Vetter
Browse files

drm/crtc: Remove duplicated ioctl code



Make drm_mode_add_fb() call drm_mode_add_fb2() after converting its
args to the new internal format, instead of duplicating code.

Also picks up a lot more error checking, which the legacy modes
should pass after being converted to the new format.

Signed-off-by: default avatarChuck Ebbert <cebbert.lkml@gmail.com>
Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent 209f5527
Loading
Loading
Loading
Loading
+6 −23
Original line number Diff line number Diff line
@@ -2955,11 +2955,9 @@ int drm_mode_addfb(struct drm_device *dev,
{
	struct drm_mode_fb_cmd *or = data;
	struct drm_mode_fb_cmd2 r = {};
	struct drm_mode_config *config = &dev->mode_config;
	struct drm_framebuffer *fb;
	int ret = 0;
	int ret;

	/* Use new struct with format internally */
	/* convert to new format and call new ioctl */
	r.fb_id = or->fb_id;
	r.width = or->width;
	r.height = or->height;
@@ -2967,26 +2965,11 @@ int drm_mode_addfb(struct drm_device *dev,
	r.pixel_format = drm_mode_legacy_fb_format(or->bpp, or->depth);
	r.handles[0] = or->handle;

	if (!drm_core_check_feature(dev, DRIVER_MODESET))
		return -EINVAL;

	if ((config->min_width > r.width) || (r.width > config->max_width))
		return -EINVAL;

	if ((config->min_height > r.height) || (r.height > config->max_height))
		return -EINVAL;

	fb = dev->mode_config.funcs->fb_create(dev, file_priv, &r);
	if (IS_ERR(fb)) {
		DRM_DEBUG_KMS("could not create framebuffer\n");
		return PTR_ERR(fb);
	}
	ret = drm_mode_addfb2(dev, &r, file_priv);
	if (ret)
		return ret;

	mutex_lock(&file_priv->fbs_lock);
	or->fb_id = fb->base.id;
	list_add(&fb->filp_head, &file_priv->fbs);
	DRM_DEBUG_KMS("[FB:%d]\n", fb->base.id);
	mutex_unlock(&file_priv->fbs_lock);
	or->fb_id = r.fb_id;

	return ret;
}