root/drivers/gpu/drm/msm/msm_gem_prime.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. msm_gem_prime_get_sg_table
  2. msm_gem_prime_vmap
  3. msm_gem_prime_vunmap
  4. msm_gem_prime_mmap
  5. msm_gem_prime_import_sg_table
  6. msm_gem_prime_pin
  7. msm_gem_prime_unpin

   1 // SPDX-License-Identifier: GPL-2.0-only
   2 /*
   3  * Copyright (C) 2013 Red Hat
   4  * Author: Rob Clark <robdclark@gmail.com>
   5  */
   6 
   7 #include <linux/dma-buf.h>
   8 
   9 #include <drm/drm_prime.h>
  10 
  11 #include "msm_drv.h"
  12 #include "msm_gem.h"
  13 
  14 struct sg_table *msm_gem_prime_get_sg_table(struct drm_gem_object *obj)
  15 {
  16         struct msm_gem_object *msm_obj = to_msm_bo(obj);
  17         int npages = obj->size >> PAGE_SHIFT;
  18 
  19         if (WARN_ON(!msm_obj->pages))  /* should have already pinned! */
  20                 return NULL;
  21 
  22         return drm_prime_pages_to_sg(msm_obj->pages, npages);
  23 }
  24 
  25 void *msm_gem_prime_vmap(struct drm_gem_object *obj)
  26 {
  27         return msm_gem_get_vaddr(obj);
  28 }
  29 
  30 void msm_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr)
  31 {
  32         msm_gem_put_vaddr(obj);
  33 }
  34 
  35 int msm_gem_prime_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
  36 {
  37         int ret;
  38 
  39         ret = drm_gem_mmap_obj(obj, obj->size, vma);
  40         if (ret < 0)
  41                 return ret;
  42 
  43         return msm_gem_mmap_obj(vma->vm_private_data, vma);
  44 }
  45 
  46 struct drm_gem_object *msm_gem_prime_import_sg_table(struct drm_device *dev,
  47                 struct dma_buf_attachment *attach, struct sg_table *sg)
  48 {
  49         return msm_gem_import(dev, attach->dmabuf, sg);
  50 }
  51 
  52 int msm_gem_prime_pin(struct drm_gem_object *obj)
  53 {
  54         if (!obj->import_attach)
  55                 msm_gem_get_pages(obj);
  56         return 0;
  57 }
  58 
  59 void msm_gem_prime_unpin(struct drm_gem_object *obj)
  60 {
  61         if (!obj->import_attach)
  62                 msm_gem_put_pages(obj);
  63 }

/* [<][>][^][v][top][bottom][index][help] */