mirror of https://gitee.com/openkylin/linux.git
drm/omap: add omap_gem_unpin_locked()
Add omap_gem_unpin_locked() which is a version of omap_gem_unpin() that expects the caller to hold the omap_obj lock. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> Reviewed-by: Jean-Jacques Hiblot <jjhiblot@ti.com> Link: https://patchwork.freedesktop.org/patch/msgid/20191010120000.1421-3-jjhiblot@ti.com
This commit is contained in:
parent
cec4fa7511
commit
d3e4c46df6
|
@ -834,20 +834,16 @@ int omap_gem_pin(struct drm_gem_object *obj, dma_addr_t *dma_addr)
|
|||
}
|
||||
|
||||
/**
|
||||
* omap_gem_unpin() - Unpin a GEM object from memory
|
||||
* omap_gem_unpin_locked() - 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().
|
||||
* omap_gem_unpin() without locking.
|
||||
*/
|
||||
void omap_gem_unpin(struct drm_gem_object *obj)
|
||||
static void omap_gem_unpin_locked(struct drm_gem_object *obj)
|
||||
{
|
||||
struct omap_gem_object *omap_obj = to_omap_bo(obj);
|
||||
int ret;
|
||||
|
||||
mutex_lock(&omap_obj->lock);
|
||||
|
||||
if (refcount_dec_and_test(&omap_obj->dma_addr_cnt)) {
|
||||
ret = tiler_unpin(omap_obj->block);
|
||||
if (ret) {
|
||||
|
@ -862,7 +858,22 @@ void omap_gem_unpin(struct drm_gem_object *obj)
|
|||
omap_obj->dma_addr = 0;
|
||||
omap_obj->block = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 actual 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_unpin(struct drm_gem_object *obj)
|
||||
{
|
||||
struct omap_gem_object *omap_obj = to_omap_bo(obj);
|
||||
|
||||
mutex_lock(&omap_obj->lock);
|
||||
omap_gem_unpin_locked(obj);
|
||||
mutex_unlock(&omap_obj->lock);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue