diff options
Diffstat (limited to 'drivers/gpu/drm/gma500/gem.c')
| -rw-r--r-- | drivers/gpu/drm/gma500/gem.c | 61 | 
1 files changed, 5 insertions, 56 deletions
diff --git a/drivers/gpu/drm/gma500/gem.c b/drivers/gpu/drm/gma500/gem.c index 10ae8c52d06..c707fa6fca8 100644 --- a/drivers/gpu/drm/gma500/gem.c +++ b/drivers/gpu/drm/gma500/gem.c @@ -29,11 +29,6 @@  #include <drm/drm_vma_manager.h>  #include "psb_drv.h" -int psb_gem_init_object(struct drm_gem_object *obj) -{ -	return -EINVAL; -} -  void psb_gem_free_object(struct drm_gem_object *obj)  {  	struct gtt_range *gtt = container_of(obj, struct gtt_range, gem); @@ -67,9 +62,6 @@ int psb_gem_dumb_map_gtt(struct drm_file *file, struct drm_device *dev,  	int ret = 0;  	struct drm_gem_object *obj; -	if (!(dev->driver->driver_features & DRIVER_GEM)) -		return -ENODEV; -  	mutex_lock(&dev->struct_mutex);  	/* GEM does all our handle to object mapping */ @@ -103,8 +95,8 @@ unlock:   *	it so that userspace can speak about it. This does the core work   *	for the various methods that do/will create GEM objects for things   */ -static int psb_gem_create(struct drm_file *file, -	struct drm_device *dev, uint64_t size, uint32_t *handlep) +int psb_gem_create(struct drm_file *file, struct drm_device *dev, u64 size, +		   u32 *handlep, int stolen, u32 align)  {  	struct gtt_range *r;  	int ret; @@ -114,7 +106,7 @@ static int psb_gem_create(struct drm_file *file,  	/* Allocate our object - for now a direct gtt range which is not  	   stolen memory backed */ -	r = psb_gtt_alloc_range(dev, size, "gem", 0); +	r = psb_gtt_alloc_range(dev, size, "gem", 0, PAGE_SIZE);  	if (r == NULL) {  		dev_err(dev->dev, "no memory for %lld byte GEM object\n", size);  		return -ENOSPC; @@ -158,7 +150,8 @@ int psb_gem_dumb_create(struct drm_file *file, struct drm_device *dev,  {  	args->pitch = ALIGN(args->width * ((args->bpp + 7) / 8), 64);  	args->size = args->pitch * args->height; -	return psb_gem_create(file, dev, args->size, &args->handle); +	return psb_gem_create(file, dev, args->size, &args->handle, 0, +			      PAGE_SIZE);  }  /** @@ -234,47 +227,3 @@ fail:  		return VM_FAULT_SIGBUS;  	}  } - -static int psb_gem_create_stolen(struct drm_file *file, struct drm_device *dev, -						int size, u32 *handle) -{ -	struct gtt_range *gtt = psb_gtt_alloc_range(dev, size, "gem", 1); -	if (gtt == NULL) -		return -ENOMEM; - -	drm_gem_private_object_init(dev, >t->gem, size); -	if (drm_gem_handle_create(file, >t->gem, handle) == 0) -		return 0; - -	drm_gem_object_release(>t->gem); -	psb_gtt_free_range(dev, gtt); -	return -ENOMEM; -} - -/* - *	GEM interfaces for our specific client - */ -int psb_gem_create_ioctl(struct drm_device *dev, void *data, -					struct drm_file *file) -{ -	struct drm_psb_gem_create *args = data; -	int ret; -	if (args->flags & GMA_GEM_CREATE_STOLEN) { -		ret = psb_gem_create_stolen(file, dev, args->size, -							&args->handle); -		if (ret == 0) -			return 0; -		/* Fall throguh */ -		args->flags &= ~GMA_GEM_CREATE_STOLEN; -	} -	return psb_gem_create(file, dev, args->size, &args->handle); -} - -int psb_gem_mmap_ioctl(struct drm_device *dev, void *data, -					struct drm_file *file) -{ -	struct drm_psb_gem_mmap *args = data; -	return dev->driver->dumb_map_offset(file, dev, -						args->handle, &args->offset); -} -  | 
