drm: omapdrm: Rename omap_gem_(get|put)_paddr() to omap_gem_(un)pin()
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Thu, 20 Apr 2017 21:33:52 +0000 (00:33 +0300)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Fri, 2 Jun 2017 07:57:05 +0000 (10:57 +0300)
The reflects the purpose of the function better.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
drivers/gpu/drm/omapdrm/omap_drv.h
drivers/gpu/drm/omapdrm/omap_fb.c
drivers/gpu/drm/omapdrm/omap_fbdev.c
drivers/gpu/drm/omapdrm/omap_gem.c
drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c

index ef5001f..f2db847 100644 (file)
@@ -188,8 +188,8 @@ int omap_gem_roll(struct drm_gem_object *obj, uint32_t roll);
 void omap_gem_cpu_sync(struct drm_gem_object *obj, int pgoff);
 void omap_gem_dma_sync(struct drm_gem_object *obj,
                enum dma_data_direction dir);
-int omap_gem_get_paddr(struct drm_gem_object *obj, dma_addr_t *dma_addr);
-void omap_gem_put_paddr(struct drm_gem_object *obj);
+int omap_gem_pin(struct drm_gem_object *obj, dma_addr_t *dma_addr);
+void omap_gem_unpin(struct drm_gem_object *obj);
 int omap_gem_get_pages(struct drm_gem_object *obj, struct page ***pages,
                bool remap);
 int omap_gem_put_pages(struct drm_gem_object *obj);
index 444bf92..2e8d771 100644 (file)
@@ -259,7 +259,7 @@ int omap_framebuffer_pin(struct drm_framebuffer *fb)
 
        for (i = 0; i < n; i++) {
                struct plane *plane = &omap_fb->planes[i];
-               ret = omap_gem_get_paddr(plane->bo, &plane->dma_addr);
+               ret = omap_gem_pin(plane->bo, &plane->dma_addr);
                if (ret)
                        goto fail;
                omap_gem_dma_sync(plane->bo, DMA_TO_DEVICE);
@@ -274,7 +274,7 @@ int omap_framebuffer_pin(struct drm_framebuffer *fb)
 fail:
        for (i--; i >= 0; i--) {
                struct plane *plane = &omap_fb->planes[i];
-               omap_gem_put_paddr(plane->bo);
+               omap_gem_unpin(plane->bo);
                plane->dma_addr = 0;
        }
 
@@ -300,7 +300,7 @@ void omap_framebuffer_unpin(struct drm_framebuffer *fb)
 
        for (i = 0; i < n; i++) {
                struct plane *plane = &omap_fb->planes[i];
-               omap_gem_put_paddr(plane->bo);
+               omap_gem_unpin(plane->bo);
                plane->dma_addr = 0;
        }
 
index dabb1af..daf81a0 100644 (file)
@@ -162,10 +162,9 @@ static int omap_fbdev_create(struct drm_fb_helper *helper,
         * to it).  Then we just need to be sure that we are able to re-
         * pin it in case of an opps.
         */
-       ret = omap_gem_get_paddr(fbdev->bo, &dma_addr);
+       ret = omap_gem_pin(fbdev->bo, &dma_addr);
        if (ret) {
-               dev_err(dev->dev,
-                       "could not map (paddr)!  Skipping framebuffer alloc\n");
+               dev_err(dev->dev, "could not pin framebuffer\n");
                ret = -ENOMEM;
                goto fail;
        }
@@ -303,8 +302,8 @@ void omap_fbdev_free(struct drm_device *dev)
 
        fbdev = to_omap_fbdev(priv->fbdev);
 
-       /* release the ref taken in omap_fbdev_create() */
-       omap_gem_put_paddr(fbdev->bo);
+       /* unpin the GEM object pinned in omap_fbdev_create() */
+       omap_gem_unpin(fbdev->bo);
 
        /* this will free the backing object */
        if (fbdev->fb)
index 038a059..c9ad18e 100644 (file)
@@ -66,9 +66,9 @@ struct omap_gem_object {
         *
         * Buffers mapped to the TILER have their DMA address pointing to the
         * TILER aperture. As TILER mappings are refcounted (through
-        * dma_addr_cnt) the DMA address must be accessed through
-        * omap_get_get_paddr() to ensure that the mapping won't disappear
-        * unexpectedly. References must be released with omap_gem_put_paddr().
+        * dma_addr_cnt) the DMA address must be accessed through omap_gem_pin()
+        * to ensure that the mapping won't disappear unexpectedly. References
+        * must be released with omap_gem_unpin().
         */
        dma_addr_t dma_addr;
 
@@ -784,10 +784,21 @@ void omap_gem_dma_sync(struct drm_gem_object *obj,
        }
 }
 
-/* Get physical address for DMA.. if the buffer is not already contiguous, remap
- * it to pin in physically contiguous memory.. (ie. map in TILER)
+/**
+ * omap_gem_pin() - Pin a GEM object in memory
+ * @obj: the GEM object
+ * @dma_addr: the DMA address
+ *
+ * Pin the given GEM object in memory and fill the dma_addr pointer with the
+ * object's DMA address. If the buffer is not physically contiguous it will be
+ * remapped through the TILER to provide a contiguous view.
+ *
+ * Pins are reference-counted, calling this function multiple times is allowed
+ * as long the corresponding omap_gem_unpin() calls are balanced.
+ *
+ * Return 0 on success or a negative error code otherwise.
  */
-int omap_gem_get_paddr(struct drm_gem_object *obj, dma_addr_t *dma_addr)
+int omap_gem_pin(struct drm_gem_object *obj, dma_addr_t *dma_addr)
 {
        struct omap_drm_private *priv = obj->dev->dev_private;
        struct omap_gem_object *omap_obj = to_omap_bo(obj);
@@ -855,10 +866,15 @@ fail:
        return ret;
 }
 
-/* Release physical address, when DMA is no longer being performed.. this
- * could potentially unpin and unmap buffers from TILER
+/**
+ * omap_gem_unpin() - Unpin a GEM object from memory
+ * @obj: the GEM object
+ *
+ * Unpin the given GEM object previously pinned with omap_gem_pin(). Pins are
+ * reference-counted, the actualy unpin will only be performed when the number
+ * of calls to this function matches the number of calls to omap_gem_pin().
  */
-void omap_gem_put_paddr(struct drm_gem_object *obj)
+void omap_gem_unpin(struct drm_gem_object *obj)
 {
        struct omap_gem_object *omap_obj = to_omap_bo(obj);
        int ret;
@@ -919,9 +935,9 @@ int omap_gem_tiled_stride(struct drm_gem_object *obj, uint32_t orient)
  * increasing the pin count (which we don't really do yet anyways,
  * because we don't support swapping pages back out).  And 'remap'
  * might not be quite the right name, but I wanted to keep it working
- * similarly to omap_gem_get_paddr().  Note though that mutex is not
+ * similarly to omap_gem_pin().  Note though that mutex is not
  * aquired if !remap (because this can be called in atomic ctxt),
- * but probably omap_gem_get_paddr() should be changed to work in the
+ * but probably omap_gem_unpin() should be changed to work in the
  * same way.  If !remap, a matching omap_gem_put_pages() call is not
  * required (and should not be made).
  */
index 806e8b9..6aaf283 100644 (file)
@@ -41,7 +41,7 @@ static struct sg_table *omap_gem_map_dma_buf(
        /* camera, etc, need physically contiguous.. but we need a
         * better way to know this..
         */
-       ret = omap_gem_get_paddr(obj, &dma_addr);
+       ret = omap_gem_pin(obj, &dma_addr);
        if (ret)
                goto out;
 
@@ -54,7 +54,7 @@ static struct sg_table *omap_gem_map_dma_buf(
        sg_set_page(sg->sgl, pfn_to_page(PFN_DOWN(dma_addr)), obj->size, 0);
        sg_dma_address(sg->sgl) = dma_addr;
 
-       /* this should be after _get_paddr() to ensure we have pages attached */
+       /* this must be after omap_gem_pin() to ensure we have pages attached */
        omap_gem_dma_sync(obj, dir);
 
        return sg;
@@ -67,7 +67,7 @@ static void omap_gem_unmap_dma_buf(struct dma_buf_attachment *attachment,
                struct sg_table *sg, enum dma_data_direction dir)
 {
        struct drm_gem_object *obj = attachment->dmabuf->priv;
-       omap_gem_put_paddr(obj);
+       omap_gem_unpin(obj);
        sg_free_table(sg);
        kfree(sg);
 }