Lines Matching refs:buf

21 		unsigned int flags, struct exynos_drm_gem_buf *buf)  in lowlevel_buffer_allocate()  argument
27 if (buf->dma_addr) { in lowlevel_buffer_allocate()
32 init_dma_attrs(&buf->dma_attrs); in lowlevel_buffer_allocate()
40 dma_set_attr(DMA_ATTR_FORCE_CONTIGUOUS, &buf->dma_attrs); in lowlevel_buffer_allocate()
51 dma_set_attr(attr, &buf->dma_attrs); in lowlevel_buffer_allocate()
52 dma_set_attr(DMA_ATTR_NO_KERNEL_MAPPING, &buf->dma_attrs); in lowlevel_buffer_allocate()
54 nr_pages = buf->size >> PAGE_SHIFT; in lowlevel_buffer_allocate()
60 buf->pages = drm_calloc_large(nr_pages, sizeof(struct page *)); in lowlevel_buffer_allocate()
61 if (!buf->pages) { in lowlevel_buffer_allocate()
66 buf->cookie = dma_alloc_attrs(dev->dev, in lowlevel_buffer_allocate()
67 buf->size, in lowlevel_buffer_allocate()
68 &buf->dma_addr, GFP_KERNEL, in lowlevel_buffer_allocate()
69 &buf->dma_attrs); in lowlevel_buffer_allocate()
70 if (!buf->cookie) { in lowlevel_buffer_allocate()
76 start_addr = buf->dma_addr; in lowlevel_buffer_allocate()
78 buf->pages[i] = phys_to_page(start_addr); in lowlevel_buffer_allocate()
84 buf->pages = dma_alloc_attrs(dev->dev, buf->size, in lowlevel_buffer_allocate()
85 &buf->dma_addr, GFP_KERNEL, in lowlevel_buffer_allocate()
86 &buf->dma_attrs); in lowlevel_buffer_allocate()
87 if (!buf->pages) { in lowlevel_buffer_allocate()
93 buf->sgt = drm_prime_pages_to_sg(buf->pages, nr_pages); in lowlevel_buffer_allocate()
94 if (IS_ERR(buf->sgt)) { in lowlevel_buffer_allocate()
96 ret = PTR_ERR(buf->sgt); in lowlevel_buffer_allocate()
101 (unsigned long)buf->dma_addr, in lowlevel_buffer_allocate()
102 buf->size); in lowlevel_buffer_allocate()
107 dma_free_attrs(dev->dev, buf->size, buf->pages, in lowlevel_buffer_allocate()
108 (dma_addr_t)buf->dma_addr, &buf->dma_attrs); in lowlevel_buffer_allocate()
109 buf->dma_addr = (dma_addr_t)NULL; in lowlevel_buffer_allocate()
112 drm_free_large(buf->pages); in lowlevel_buffer_allocate()
118 unsigned int flags, struct exynos_drm_gem_buf *buf) in lowlevel_buffer_deallocate() argument
120 if (!buf->dma_addr) { in lowlevel_buffer_deallocate()
126 (unsigned long)buf->dma_addr, in lowlevel_buffer_deallocate()
127 buf->size); in lowlevel_buffer_deallocate()
129 sg_free_table(buf->sgt); in lowlevel_buffer_deallocate()
131 kfree(buf->sgt); in lowlevel_buffer_deallocate()
132 buf->sgt = NULL; in lowlevel_buffer_deallocate()
135 dma_free_attrs(dev->dev, buf->size, buf->cookie, in lowlevel_buffer_deallocate()
136 (dma_addr_t)buf->dma_addr, &buf->dma_attrs); in lowlevel_buffer_deallocate()
137 drm_free_large(buf->pages); in lowlevel_buffer_deallocate()
139 dma_free_attrs(dev->dev, buf->size, buf->pages, in lowlevel_buffer_deallocate()
140 (dma_addr_t)buf->dma_addr, &buf->dma_attrs); in lowlevel_buffer_deallocate()
142 buf->dma_addr = (dma_addr_t)NULL; in lowlevel_buffer_deallocate()
168 struct exynos_drm_gem_buf *buf, unsigned int flags) in exynos_drm_alloc_buf() argument
175 if (lowlevel_buffer_allocate(dev, flags, buf) < 0) in exynos_drm_alloc_buf()