diff options
author | Inki Dae <inki.dae@samsung.com> | 2012-04-23 08:01:28 -0400 |
---|---|---|
committer | Inki Dae <inki.dae@samsung.com> | 2012-05-08 05:46:32 -0400 |
commit | b2df26c10b16afe2eed904f2b85a4d2047531d30 (patch) | |
tree | 7defbfd77192157460c0d212a308d83d4358274c /drivers/gpu/drm/exynos/exynos_drm_buf.c | |
parent | c01d73faad2f775036f0b37c753254479b79cbe6 (diff) |
drm/exynos: added drm prime feature.
this patch adds exynos specific codes for DRM Prime feature.
with this patch, user application can get file descriptor
from gem handle through DRM_IOCTL_PRIME_HANDLE_TO_FD ioctl
command(export) and also gem handle from file descriptor
through DRM_IOCTL_PRIME_FD_TO_HANLDE(import) ioctl command.
Signed-off-by: Inki Dae <inki.dae@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Diffstat (limited to 'drivers/gpu/drm/exynos/exynos_drm_buf.c')
-rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_buf.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_buf.c b/drivers/gpu/drm/exynos/exynos_drm_buf.c index de8d2090bce3..b3cb0a69fbf2 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_buf.c +++ b/drivers/gpu/drm/exynos/exynos_drm_buf.c | |||
@@ -35,7 +35,7 @@ static int lowlevel_buffer_allocate(struct drm_device *dev, | |||
35 | unsigned int flags, struct exynos_drm_gem_buf *buf) | 35 | unsigned int flags, struct exynos_drm_gem_buf *buf) |
36 | { | 36 | { |
37 | dma_addr_t start_addr; | 37 | dma_addr_t start_addr; |
38 | unsigned int npages, page_size, i = 0; | 38 | unsigned int npages, i = 0; |
39 | struct scatterlist *sgl; | 39 | struct scatterlist *sgl; |
40 | int ret = 0; | 40 | int ret = 0; |
41 | 41 | ||
@@ -53,13 +53,13 @@ static int lowlevel_buffer_allocate(struct drm_device *dev, | |||
53 | 53 | ||
54 | if (buf->size >= SZ_1M) { | 54 | if (buf->size >= SZ_1M) { |
55 | npages = buf->size >> SECTION_SHIFT; | 55 | npages = buf->size >> SECTION_SHIFT; |
56 | page_size = SECTION_SIZE; | 56 | buf->page_size = SECTION_SIZE; |
57 | } else if (buf->size >= SZ_64K) { | 57 | } else if (buf->size >= SZ_64K) { |
58 | npages = buf->size >> 16; | 58 | npages = buf->size >> 16; |
59 | page_size = SZ_64K; | 59 | buf->page_size = SZ_64K; |
60 | } else { | 60 | } else { |
61 | npages = buf->size >> PAGE_SHIFT; | 61 | npages = buf->size >> PAGE_SHIFT; |
62 | page_size = PAGE_SIZE; | 62 | buf->page_size = PAGE_SIZE; |
63 | } | 63 | } |
64 | 64 | ||
65 | buf->sgt = kzalloc(sizeof(struct sg_table), GFP_KERNEL); | 65 | buf->sgt = kzalloc(sizeof(struct sg_table), GFP_KERNEL); |
@@ -96,9 +96,9 @@ static int lowlevel_buffer_allocate(struct drm_device *dev, | |||
96 | 96 | ||
97 | while (i < npages) { | 97 | while (i < npages) { |
98 | buf->pages[i] = phys_to_page(start_addr); | 98 | buf->pages[i] = phys_to_page(start_addr); |
99 | sg_set_page(sgl, buf->pages[i], page_size, 0); | 99 | sg_set_page(sgl, buf->pages[i], buf->page_size, 0); |
100 | sg_dma_address(sgl) = start_addr; | 100 | sg_dma_address(sgl) = start_addr; |
101 | start_addr += page_size; | 101 | start_addr += buf->page_size; |
102 | sgl = sg_next(sgl); | 102 | sgl = sg_next(sgl); |
103 | i++; | 103 | i++; |
104 | } | 104 | } |