drm: gma500: Replace drm_fb_get_bpp_depth() with drm_format_info()
The driver uses drm_fb_get_bpp_depth() to check whether it can support the format requested by userspace when creating a framebuffer. This isn't the right API, as it doesn't differentiate between RGB formats other than on a depth and bpp basis. Fixing this requires non trivial changes to the drivers internals. As a first step, replace usage of the drm_fb_get_bpp_depth() function with an equivalent check based on drm_format_info(). This is part of a wider effort to remove usage of the drm_fb_get_bpp_depth() function in drivers. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Archit Taneja <architt@codeaurora.org> Link: http://patchwork.freedesktop.org/patch/msgid/1476744081-24485-9-git-send-email-laurent.pinchart@ideasonboard.com
This commit is contained in:
parent
b7f9745cda
commit
e0f9a4ab49
|
@ -236,22 +236,20 @@ static int psb_framebuffer_init(struct drm_device *dev,
|
||||||
const struct drm_mode_fb_cmd2 *mode_cmd,
|
const struct drm_mode_fb_cmd2 *mode_cmd,
|
||||||
struct gtt_range *gt)
|
struct gtt_range *gt)
|
||||||
{
|
{
|
||||||
u32 bpp, depth;
|
const struct drm_format_info *info;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
drm_fb_get_bpp_depth(mode_cmd->pixel_format, &depth, &bpp);
|
/*
|
||||||
|
* Reject unknown formats, YUV formats, and formats with more than
|
||||||
|
* 4 bytes per pixel.
|
||||||
|
*/
|
||||||
|
info = drm_format_info(mode_cmd->pixel_format);
|
||||||
|
if (!info || !info->depth || info->cpp[0] > 4)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
if (mode_cmd->pitches[0] & 63)
|
if (mode_cmd->pitches[0] & 63)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
switch (bpp) {
|
|
||||||
case 8:
|
|
||||||
case 16:
|
|
||||||
case 24:
|
|
||||||
case 32:
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
drm_helper_mode_fill_fb_struct(&fb->base, mode_cmd);
|
drm_helper_mode_fill_fb_struct(&fb->base, mode_cmd);
|
||||||
fb->gtt = gt;
|
fb->gtt = gt;
|
||||||
ret = drm_framebuffer_init(dev, &fb->base, &psb_fb_funcs);
|
ret = drm_framebuffer_init(dev, &fb->base, &psb_fb_funcs);
|
||||||
|
|
Loading…
Reference in New Issue