aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/exynos/exynos_drm_buf.c
diff options
context:
space:
mode:
authorInki Dae <inki.dae@samsung.com>2012-04-23 08:01:28 -0400
committerInki Dae <inki.dae@samsung.com>2012-05-08 05:46:32 -0400
commitb2df26c10b16afe2eed904f2b85a4d2047531d30 (patch)
tree7defbfd77192157460c0d212a308d83d4358274c /drivers/gpu/drm/exynos/exynos_drm_buf.c
parentc01d73faad2f775036f0b37c753254479b79cbe6 (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.c12
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 }