diff options
Diffstat (limited to 'drivers/gpu/drm/qxl/qxl_prime.c')
| -rw-r--r-- | drivers/gpu/drm/qxl/qxl_prime.c | 25 | 
1 files changed, 19 insertions, 6 deletions
| diff --git a/drivers/gpu/drm/qxl/qxl_prime.c b/drivers/gpu/drm/qxl/qxl_prime.c index df65d3c1a7b8..8b448eca1cd9 100644 --- a/drivers/gpu/drm/qxl/qxl_prime.c +++ b/drivers/gpu/drm/qxl/qxl_prime.c @@ -23,30 +23,43 @@   */  #include "qxl_drv.h" +#include "qxl_object.h"  /* Empty Implementations as there should not be any other driver for a virtual   * device that might share buffers with qxl */  int qxl_gem_prime_pin(struct drm_gem_object *obj)  { -	WARN_ONCE(1, "not implemented"); -	return -ENOSYS; +	struct qxl_bo *bo = gem_to_qxl_bo(obj); + +	return qxl_bo_pin(bo);  }  void qxl_gem_prime_unpin(struct drm_gem_object *obj)  { -	WARN_ONCE(1, "not implemented"); +	struct qxl_bo *bo = gem_to_qxl_bo(obj); + +	qxl_bo_unpin(bo);  }  void *qxl_gem_prime_vmap(struct drm_gem_object *obj)  { -	WARN_ONCE(1, "not implemented"); -	return ERR_PTR(-ENOSYS); +	struct qxl_bo *bo = gem_to_qxl_bo(obj); +	void *ptr; +	int ret; + +	ret = qxl_bo_kmap(bo, &ptr); +	if (ret < 0) +		return ERR_PTR(ret); + +	return ptr;  }  void qxl_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr)  { -	WARN_ONCE(1, "not implemented"); +	struct qxl_bo *bo = gem_to_qxl_bo(obj); + +	qxl_bo_kunmap(bo);  }  int qxl_gem_prime_mmap(struct drm_gem_object *obj, | 
