diff options
Diffstat (limited to 'drivers/gpu/drm/drm_gem_framebuffer_helper.c')
| -rw-r--r-- | drivers/gpu/drm/drm_gem_framebuffer_helper.c | 9 | 
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/gpu/drm/drm_gem_framebuffer_helper.c b/drivers/gpu/drm/drm_gem_framebuffer_helper.c index e93533b86037..b8a615a138cd 100644 --- a/drivers/gpu/drm/drm_gem_framebuffer_helper.c +++ b/drivers/gpu/drm/drm_gem_framebuffer_helper.c @@ -9,6 +9,7 @@  #include <linux/module.h>  #include <drm/drm_damage_helper.h> +#include <drm/drm_drv.h>  #include <drm/drm_fourcc.h>  #include <drm/drm_framebuffer.h>  #include <drm/drm_gem.h> @@ -164,6 +165,14 @@ int drm_gem_fb_init_with_funcs(struct drm_device *dev,  		return -EINVAL;  	} +	if (drm_drv_uses_atomic_modeset(dev) && +	    !drm_any_plane_has_format(dev, mode_cmd->pixel_format, +				      mode_cmd->modifier[0])) { +		drm_dbg(dev, "Unsupported pixel format %p4cc / modifier 0x%llx\n", +			&mode_cmd->pixel_format, mode_cmd->modifier[0]); +		return -EINVAL; +	} +  	for (i = 0; i < info->num_planes; i++) {  		unsigned int width = mode_cmd->width / (i ? info->hsub : 1);  		unsigned int height = mode_cmd->height / (i ? info->vsub : 1);  |