mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 23:32:14 +00:00
drm: omapdrm: Rename omap_gem_(get|put)_paddr() to omap_gem_(un)pin()
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>
This commit is contained in:
parent
16869083b9
commit
bc20c85cab
5 changed files with 39 additions and 24 deletions
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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).
|
||||
*/
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue