Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bc20c85c authored by Laurent Pinchart's avatar Laurent Pinchart Committed by Tomi Valkeinen
Browse files

drm: omapdrm: Rename omap_gem_(get|put)_paddr() to omap_gem_(un)pin()



The reflects the purpose of the function better.

Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
parent 16869083
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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);
+3 −3
Original line number Diff line number Diff line
@@ -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;
	}

+4 −5
Original line number Diff line number Diff line
@@ -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)
+27 −11
Original line number Diff line number Diff line
@@ -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 @@ int omap_gem_get_paddr(struct drm_gem_object *obj, dma_addr_t *dma_addr)
	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).
 */
+3 −3
Original line number Diff line number Diff line
@@ -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);
}