Lines Matching refs:attach
668 struct dma_buf_attachment *attach; in dma_buf_attach() local
674 attach = kzalloc(sizeof(*attach), GFP_KERNEL); in dma_buf_attach()
675 if (!attach) in dma_buf_attach()
678 attach->dev = dev; in dma_buf_attach()
679 attach->dmabuf = dmabuf; in dma_buf_attach()
683 if (dmabuf->ops->attach) { in dma_buf_attach()
684 ret = dmabuf->ops->attach(dmabuf, attach); in dma_buf_attach()
688 list_add(&attach->node, &dmabuf->attachments); in dma_buf_attach()
692 return attach; in dma_buf_attach()
695 kfree(attach); in dma_buf_attach()
709 void dma_buf_detach(struct dma_buf *dmabuf, struct dma_buf_attachment *attach) in dma_buf_detach() argument
711 if (WARN_ON(!dmabuf || !attach)) in dma_buf_detach()
714 if (attach->sgt) in dma_buf_detach()
715 dmabuf->ops->unmap_dma_buf(attach, attach->sgt, attach->dir); in dma_buf_detach()
718 list_del(&attach->node); in dma_buf_detach()
720 dmabuf->ops->detach(dmabuf, attach); in dma_buf_detach()
723 kfree(attach); in dma_buf_detach()
742 struct sg_table *dma_buf_map_attachment(struct dma_buf_attachment *attach, in dma_buf_map_attachment() argument
749 if (WARN_ON(!attach || !attach->dmabuf)) in dma_buf_map_attachment()
752 if (attach->sgt) { in dma_buf_map_attachment()
757 if (attach->dir != direction && in dma_buf_map_attachment()
758 attach->dir != DMA_BIDIRECTIONAL) in dma_buf_map_attachment()
761 return attach->sgt; in dma_buf_map_attachment()
764 sg_table = attach->dmabuf->ops->map_dma_buf(attach, direction); in dma_buf_map_attachment()
768 if (!IS_ERR(sg_table) && attach->dmabuf->ops->cache_sgt_mapping) { in dma_buf_map_attachment()
769 attach->sgt = sg_table; in dma_buf_map_attachment()
770 attach->dir = direction; in dma_buf_map_attachment()
787 void dma_buf_unmap_attachment(struct dma_buf_attachment *attach, in dma_buf_unmap_attachment() argument
793 if (WARN_ON(!attach || !attach->dmabuf || !sg_table)) in dma_buf_unmap_attachment()
796 if (attach->sgt == sg_table) in dma_buf_unmap_attachment()
799 attach->dmabuf->ops->unmap_dma_buf(attach, sg_table, direction); in dma_buf_unmap_attachment()