• Home
  • Raw
  • Download

Lines Matching refs:buf

71 	struct vb2_dc_buf *buf = buf_priv;  in vb2_dc_cookie()  local
73 return &buf->dma_addr; in vb2_dc_cookie()
78 struct vb2_dc_buf *buf = buf_priv; in vb2_dc_vaddr() local
80 if (!buf->vaddr && buf->db_attach) in vb2_dc_vaddr()
81 buf->vaddr = dma_buf_vmap(buf->db_attach->dmabuf); in vb2_dc_vaddr()
83 return buf->vaddr; in vb2_dc_vaddr()
88 struct vb2_dc_buf *buf = buf_priv; in vb2_dc_num_users() local
90 return refcount_read(&buf->refcount); in vb2_dc_num_users()
95 struct vb2_dc_buf *buf = buf_priv; in vb2_dc_prepare() local
96 struct sg_table *sgt = buf->dma_sgt; in vb2_dc_prepare()
101 dma_sync_sgtable_for_device(buf->dev, sgt, buf->dma_dir); in vb2_dc_prepare()
106 struct vb2_dc_buf *buf = buf_priv; in vb2_dc_finish() local
107 struct sg_table *sgt = buf->dma_sgt; in vb2_dc_finish()
112 dma_sync_sgtable_for_cpu(buf->dev, sgt, buf->dma_dir); in vb2_dc_finish()
121 struct vb2_dc_buf *buf = buf_priv; in vb2_dc_put() local
123 if (!refcount_dec_and_test(&buf->refcount)) in vb2_dc_put()
126 if (buf->sgt_base) { in vb2_dc_put()
127 sg_free_table(buf->sgt_base); in vb2_dc_put()
128 kfree(buf->sgt_base); in vb2_dc_put()
130 dma_free_attrs(buf->dev, buf->size, buf->cookie, buf->dma_addr, in vb2_dc_put()
131 buf->attrs); in vb2_dc_put()
132 put_device(buf->dev); in vb2_dc_put()
133 kfree(buf); in vb2_dc_put()
140 struct vb2_dc_buf *buf; in vb2_dc_alloc() local
145 buf = kzalloc(sizeof *buf, GFP_KERNEL); in vb2_dc_alloc()
146 if (!buf) in vb2_dc_alloc()
149 buf->attrs = attrs; in vb2_dc_alloc()
150 buf->cookie = dma_alloc_attrs(dev, size, &buf->dma_addr, in vb2_dc_alloc()
151 GFP_KERNEL | gfp_flags, buf->attrs); in vb2_dc_alloc()
152 if (!buf->cookie) { in vb2_dc_alloc()
154 kfree(buf); in vb2_dc_alloc()
158 if ((buf->attrs & DMA_ATTR_NO_KERNEL_MAPPING) == 0) in vb2_dc_alloc()
159 buf->vaddr = buf->cookie; in vb2_dc_alloc()
162 buf->dev = get_device(dev); in vb2_dc_alloc()
163 buf->size = size; in vb2_dc_alloc()
164 buf->dma_dir = dma_dir; in vb2_dc_alloc()
166 buf->handler.refcount = &buf->refcount; in vb2_dc_alloc()
167 buf->handler.put = vb2_dc_put; in vb2_dc_alloc()
168 buf->handler.arg = buf; in vb2_dc_alloc()
170 refcount_set(&buf->refcount, 1); in vb2_dc_alloc()
172 return buf; in vb2_dc_alloc()
177 struct vb2_dc_buf *buf = buf_priv; in vb2_dc_mmap() local
180 if (!buf) { in vb2_dc_mmap()
185 ret = dma_mmap_attrs(buf->dev, vma, buf->cookie, in vb2_dc_mmap()
186 buf->dma_addr, buf->size, buf->attrs); in vb2_dc_mmap()
194 vma->vm_private_data = &buf->handler; in vb2_dc_mmap()
200 __func__, (unsigned long)buf->dma_addr, vma->vm_start, in vb2_dc_mmap()
201 buf->size); in vb2_dc_mmap()
222 struct vb2_dc_buf *buf = dbuf->priv; in vb2_dc_dmabuf_ops_attach() local
233 ret = sg_alloc_table(sgt, buf->sgt_base->orig_nents, GFP_KERNEL); in vb2_dc_dmabuf_ops_attach()
239 rd = buf->sgt_base->sgl; in vb2_dc_dmabuf_ops_attach()
349 struct vb2_dc_buf *buf = dbuf->priv; in vb2_dc_dmabuf_ops_vmap() local
351 return buf->vaddr; in vb2_dc_dmabuf_ops_vmap()
372 static struct sg_table *vb2_dc_get_base_sgt(struct vb2_dc_buf *buf) in vb2_dc_get_base_sgt() argument
379 dev_err(buf->dev, "failed to alloc sg table\n"); in vb2_dc_get_base_sgt()
383 ret = dma_get_sgtable_attrs(buf->dev, sgt, buf->cookie, buf->dma_addr, in vb2_dc_get_base_sgt()
384 buf->size, buf->attrs); in vb2_dc_get_base_sgt()
386 dev_err(buf->dev, "failed to get scatterlist from DMA API\n"); in vb2_dc_get_base_sgt()
396 struct vb2_dc_buf *buf = buf_priv; in vb2_dc_get_dmabuf() local
401 exp_info.size = buf->size; in vb2_dc_get_dmabuf()
403 exp_info.priv = buf; in vb2_dc_get_dmabuf()
405 if (!buf->sgt_base) in vb2_dc_get_dmabuf()
406 buf->sgt_base = vb2_dc_get_base_sgt(buf); in vb2_dc_get_dmabuf()
408 if (WARN_ON(!buf->sgt_base)) in vb2_dc_get_dmabuf()
416 refcount_inc(&buf->refcount); in vb2_dc_get_dmabuf()
427 struct vb2_dc_buf *buf = buf_priv; in vb2_dc_put_userptr() local
428 struct sg_table *sgt = buf->dma_sgt; in vb2_dc_put_userptr()
437 dma_unmap_sgtable(buf->dev, sgt, buf->dma_dir, in vb2_dc_put_userptr()
439 pages = frame_vector_pages(buf->vec); in vb2_dc_put_userptr()
442 if (buf->dma_dir == DMA_FROM_DEVICE || in vb2_dc_put_userptr()
443 buf->dma_dir == DMA_BIDIRECTIONAL) in vb2_dc_put_userptr()
444 for (i = 0; i < frame_vector_count(buf->vec); i++) in vb2_dc_put_userptr()
449 dma_unmap_resource(buf->dev, buf->dma_addr, buf->size, in vb2_dc_put_userptr()
450 buf->dma_dir, 0); in vb2_dc_put_userptr()
452 vb2_destroy_framevec(buf->vec); in vb2_dc_put_userptr()
453 kfree(buf); in vb2_dc_put_userptr()
459 struct vb2_dc_buf *buf; in vb2_dc_get_userptr() local
482 buf = kzalloc(sizeof *buf, GFP_KERNEL); in vb2_dc_get_userptr()
483 if (!buf) in vb2_dc_get_userptr()
486 buf->dev = dev; in vb2_dc_get_userptr()
487 buf->dma_dir = dma_dir; in vb2_dc_get_userptr()
495 buf->vec = vec; in vb2_dc_get_userptr()
508 buf->dma_addr = dma_map_resource(buf->dev, in vb2_dc_get_userptr()
509 __pfn_to_phys(nums[0]), size, buf->dma_dir, 0); in vb2_dc_get_userptr()
510 if (dma_mapping_error(buf->dev, buf->dma_addr)) { in vb2_dc_get_userptr()
535 if (dma_map_sgtable(buf->dev, sgt, buf->dma_dir, in vb2_dc_get_userptr()
550 buf->dma_addr = sg_dma_address(sgt->sgl); in vb2_dc_get_userptr()
551 buf->dma_sgt = sgt; in vb2_dc_get_userptr()
553 buf->size = size; in vb2_dc_get_userptr()
555 return buf; in vb2_dc_get_userptr()
558 dma_unmap_sgtable(buf->dev, sgt, buf->dma_dir, DMA_ATTR_SKIP_CPU_SYNC); in vb2_dc_get_userptr()
570 kfree(buf); in vb2_dc_get_userptr()
581 struct vb2_dc_buf *buf = mem_priv; in vb2_dc_map_dmabuf() local
585 if (WARN_ON(!buf->db_attach)) { in vb2_dc_map_dmabuf()
590 if (WARN_ON(buf->dma_sgt)) { in vb2_dc_map_dmabuf()
596 sgt = dma_buf_map_attachment(buf->db_attach, buf->dma_dir); in vb2_dc_map_dmabuf()
604 if (contig_size < buf->size) { in vb2_dc_map_dmabuf()
606 contig_size, buf->size); in vb2_dc_map_dmabuf()
607 dma_buf_unmap_attachment(buf->db_attach, sgt, buf->dma_dir); in vb2_dc_map_dmabuf()
611 buf->dma_addr = sg_dma_address(sgt->sgl); in vb2_dc_map_dmabuf()
612 buf->dma_sgt = sgt; in vb2_dc_map_dmabuf()
613 buf->vaddr = NULL; in vb2_dc_map_dmabuf()
620 struct vb2_dc_buf *buf = mem_priv; in vb2_dc_unmap_dmabuf() local
621 struct sg_table *sgt = buf->dma_sgt; in vb2_dc_unmap_dmabuf()
623 if (WARN_ON(!buf->db_attach)) { in vb2_dc_unmap_dmabuf()
633 if (buf->vaddr) { in vb2_dc_unmap_dmabuf()
634 dma_buf_vunmap(buf->db_attach->dmabuf, buf->vaddr); in vb2_dc_unmap_dmabuf()
635 buf->vaddr = NULL; in vb2_dc_unmap_dmabuf()
637 dma_buf_unmap_attachment(buf->db_attach, sgt, buf->dma_dir); in vb2_dc_unmap_dmabuf()
639 buf->dma_addr = 0; in vb2_dc_unmap_dmabuf()
640 buf->dma_sgt = NULL; in vb2_dc_unmap_dmabuf()
645 struct vb2_dc_buf *buf = mem_priv; in vb2_dc_detach_dmabuf() local
648 if (WARN_ON(buf->dma_addr)) in vb2_dc_detach_dmabuf()
649 vb2_dc_unmap_dmabuf(buf); in vb2_dc_detach_dmabuf()
652 dma_buf_detach(buf->db_attach->dmabuf, buf->db_attach); in vb2_dc_detach_dmabuf()
653 kfree(buf); in vb2_dc_detach_dmabuf()
659 struct vb2_dc_buf *buf; in vb2_dc_attach_dmabuf() local
668 buf = kzalloc(sizeof(*buf), GFP_KERNEL); in vb2_dc_attach_dmabuf()
669 if (!buf) in vb2_dc_attach_dmabuf()
672 buf->dev = dev; in vb2_dc_attach_dmabuf()
674 dba = dma_buf_attach(dbuf, buf->dev); in vb2_dc_attach_dmabuf()
677 kfree(buf); in vb2_dc_attach_dmabuf()
681 buf->dma_dir = dma_dir; in vb2_dc_attach_dmabuf()
682 buf->size = size; in vb2_dc_attach_dmabuf()
683 buf->db_attach = dba; in vb2_dc_attach_dmabuf()
685 return buf; in vb2_dc_attach_dmabuf()