diff --git a/drivers/staging/gma500/Makefile b/drivers/staging/gma500/Makefile index db73ec6d81281f55f2704ee898648dd1696aaa63..01aaa28a6771eaa05ce7a0bde21d3f9bc2987615 100644 --- a/drivers/staging/gma500/Makefile +++ b/drivers/staging/gma500/Makefile @@ -3,7 +3,8 @@ # ccflags-y += -Iinclude/drm -psb_gfx-y += psb_bl.o \ +psb_gfx-y += gem_glue.o \ + psb_bl.o \ psb_drv.o \ psb_gem.o \ psb_fb.o \ diff --git a/drivers/staging/gma500/gem_glue.c b/drivers/staging/gma500/gem_glue.c new file mode 100644 index 0000000000000000000000000000000000000000..08174973008c7af8f55aabdbdbaf3c72d93fb92d --- /dev/null +++ b/drivers/staging/gma500/gem_glue.c @@ -0,0 +1,47 @@ +/************************************************************************** + * Copyright (c) 2011, Intel Corporation. + * All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. + * + **************************************************************************/ + +#include +#include + +/** + * Initialize an already allocated GEM object of the specified size with + * no GEM provided backing store. Instead the caller is responsible for + * backing the object and handling it. + */ +int drm_gem_private_object_init(struct drm_device *dev, + struct drm_gem_object *obj, size_t size) +{ + BUG_ON((size & (PAGE_SIZE - 1)) != 0); + + obj->dev = dev; + obj->filp = NULL; + + kref_init(&obj->refcount); + atomic_set(&obj->handle_count, 0); + obj->size = size; + + return 0; +} + +void drm_gem_object_release_wrap(struct drm_gem_object *obj) +{ + if (obj->filp) + drm_gem_object_release(obj); +} diff --git a/drivers/staging/gma500/gem_glue.h b/drivers/staging/gma500/gem_glue.h new file mode 100644 index 0000000000000000000000000000000000000000..c38285b0c839e7035c494b7a91e1226457fb2281 --- /dev/null +++ b/drivers/staging/gma500/gem_glue.h @@ -0,0 +1,4 @@ +extern void drm_gem_object_release_wrap(struct drm_gem_object *obj); +extern int drm_gem_private_object_init(struct drm_device *dev, + struct drm_gem_object *obj, size_t size); +