-
Notifications
You must be signed in to change notification settings - Fork 0
/
dnx_gem.c
37 lines (26 loc) · 740 Bytes
/
dnx_gem.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include "dnx_gem.h"
#include <drm/drm_gem_cma_helper.h>
struct drm_gem_object *dnx_gem_new(struct drm_device *dev, size_t unaligned_size, dma_addr_t *paddr)
{
struct drm_gem_cma_object *obj;
if(unaligned_size == 0)
return ERR_PTR(-EINVAL);
obj = drm_gem_cma_create(dev, unaligned_size);
if(IS_ERR(obj)) {
dev_err(dev->dev, "Failed to allocate from CMA\n");
return ERR_PTR(-ENOMEM);
}
*paddr = obj->paddr;
return &obj->base;
}
int dnx_gem_mmap_offset(struct drm_gem_object *obj, u64 *offset)
{
int ret;
/* Make it mmapable */
ret = drm_gem_create_mmap_offset(obj);
if (ret)
dev_err(obj->dev->dev, "could not allocate mmap offset\n");
else
*offset = drm_vma_node_offset_addr(&obj->vma_node);
return ret;
}