tegra: Extract common buffer object allocation code
All of the buffer object allocation functions use the same boilerplate code. Move that code into a separate function that can be reused. Reviewed-by: Mikko Perttunen <mperttunen@nvidia.com> Signed-off-by: Thierry Reding <treding@nvidia.com>main
parent
bec2a28e98
commit
e44e781603
|
@ -97,6 +97,26 @@ drm_public void drm_tegra_close(struct drm_tegra *drm)
|
||||||
free(drm);
|
free(drm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct drm_tegra_bo *drm_tegra_bo_alloc(struct drm_tegra *drm,
|
||||||
|
uint32_t handle,
|
||||||
|
uint32_t flags,
|
||||||
|
uint32_t size)
|
||||||
|
{
|
||||||
|
struct drm_tegra_bo *bo;
|
||||||
|
|
||||||
|
bo = calloc(1, sizeof(*bo));
|
||||||
|
if (!bo)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
atomic_set(&bo->ref, 1);
|
||||||
|
bo->handle = handle;
|
||||||
|
bo->flags = flags;
|
||||||
|
bo->size = size;
|
||||||
|
bo->drm = drm;
|
||||||
|
|
||||||
|
return bo;
|
||||||
|
}
|
||||||
|
|
||||||
drm_public int
|
drm_public int
|
||||||
drm_tegra_bo_new(struct drm_tegra_bo **bop, struct drm_tegra *drm,
|
drm_tegra_bo_new(struct drm_tegra_bo **bop, struct drm_tegra *drm,
|
||||||
uint32_t flags, uint32_t size)
|
uint32_t flags, uint32_t size)
|
||||||
|
@ -108,15 +128,10 @@ drm_tegra_bo_new(struct drm_tegra_bo **bop, struct drm_tegra *drm,
|
||||||
if (!drm || size == 0 || !bop)
|
if (!drm || size == 0 || !bop)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
bo = calloc(1, sizeof(*bo));
|
bo = drm_tegra_bo_alloc(drm, 0, flags, size);
|
||||||
if (!bo)
|
if (!bo)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
atomic_set(&bo->ref, 1);
|
|
||||||
bo->flags = flags;
|
|
||||||
bo->size = size;
|
|
||||||
bo->drm = drm;
|
|
||||||
|
|
||||||
memset(&args, 0, sizeof(args));
|
memset(&args, 0, sizeof(args));
|
||||||
args.flags = flags;
|
args.flags = flags;
|
||||||
args.size = size;
|
args.size = size;
|
||||||
|
@ -145,16 +160,10 @@ drm_tegra_bo_wrap(struct drm_tegra_bo **bop, struct drm_tegra *drm,
|
||||||
if (!drm || !bop)
|
if (!drm || !bop)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
bo = calloc(1, sizeof(*bo));
|
bo = drm_tegra_bo_alloc(drm, handle, flags, size);
|
||||||
if (!bo)
|
if (!bo)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
atomic_set(&bo->ref, 1);
|
|
||||||
bo->handle = handle;
|
|
||||||
bo->flags = flags;
|
|
||||||
bo->size = size;
|
|
||||||
bo->drm = drm;
|
|
||||||
|
|
||||||
*bop = bo;
|
*bop = bo;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue