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

Commit e0f9a4ab authored by Laurent Pinchart's avatar Laurent Pinchart Committed by Archit Taneja
Browse files

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: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: default avatarArchit Taneja <architt@codeaurora.org>
Link: http://patchwork.freedesktop.org/patch/msgid/1476744081-24485-9-git-send-email-laurent.pinchart@ideasonboard.com
parent b7f9745c
Loading
Loading
Loading
Loading
+9 −11
Original line number Original line Diff line number Diff line
@@ -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);