Пример #1
0
struct drm_framebuffer *omap_framebuffer_create(struct drm_device *dev,
		struct drm_file *file, struct drm_mode_fb_cmd *mode_cmd)
{
	struct drm_gem_object *bo;
	struct drm_framebuffer *fb;
	bo = drm_gem_object_lookup(dev, file, mode_cmd->handle);
	if (!bo) {
		return ERR_PTR(-ENOENT);
	}
	fb = omap_framebuffer_init(dev, mode_cmd, bo);
	if (!fb) {
		return ERR_PTR(-ENOMEM);
	}
	return fb;
}
Пример #2
0
struct drm_framebuffer *omap_framebuffer_create(struct drm_device *dev,
		struct drm_file *file, struct drm_mode_fb_cmd2 *mode_cmd)
{
	struct drm_gem_object *bos[4];
	struct drm_framebuffer *fb;
	int ret;

	ret = objects_lookup(dev, file, mode_cmd->pixel_format,
			bos, mode_cmd->handles);
	if (ret)
		return ERR_PTR(ret);

	fb = omap_framebuffer_init(dev, mode_cmd, bos);
	if (IS_ERR(fb)) {
		int i, n = drm_format_num_planes(mode_cmd->pixel_format);
		for (i = 0; i < n; i++)
			drm_gem_object_unreference_unlocked(bos[i]);
		return fb;
	}
	return fb;
}