diff options
Diffstat (limited to 'drivers/gpu/drm/drm_framebuffer.c')
| -rw-r--r-- | drivers/gpu/drm/drm_framebuffer.c | 11 | 
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/gpu/drm/drm_framebuffer.c b/drivers/gpu/drm/drm_framebuffer.c index 5a13ff29f4f0..2dc5e8bed172 100644 --- a/drivers/gpu/drm/drm_framebuffer.c +++ b/drivers/gpu/drm/drm_framebuffer.c @@ -121,6 +121,10 @@ 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 (r.pixel_format == DRM_FORMAT_XRGB2101010 && +	    dev->driver->driver_features & DRIVER_PREFER_XBGR_30BPP) +		r.pixel_format = DRM_FORMAT_XBGR2101010; +  	ret = drm_mode_addfb2(dev, &r, file_priv);  	if (ret)  		return ret; @@ -457,6 +461,12 @@ int drm_mode_getfb(struct drm_device *dev,  	if (!fb)  		return -ENOENT; +	/* Multi-planar framebuffers need getfb2. */ +	if (fb->format->num_planes > 1) { +		ret = -EINVAL; +		goto out; +	} +  	r->height = fb->height;  	r->width = fb->width;  	r->depth = fb->format->depth; @@ -480,6 +490,7 @@ int drm_mode_getfb(struct drm_device *dev,  		ret = -ENODEV;  	} +out:  	drm_framebuffer_put(fb);  	return ret;  | 

