Lines Matching refs:attach

185 	struct dma_buf_attachment *attach;  in dma_buf_dynamic_attach()  local
188 attach = kmem_zalloc(sizeof(*attach), KM_SLEEP); in dma_buf_dynamic_attach()
189 attach->dmabuf = dmabuf; in dma_buf_dynamic_attach()
190 attach->dev = dmat; in dma_buf_dynamic_attach()
191 attach->dynamic_mapping = dynamic_mapping; in dma_buf_dynamic_attach()
194 if (dmabuf->ops->attach) in dma_buf_dynamic_attach()
195 ret = dmabuf->ops->attach(dmabuf, attach); in dma_buf_dynamic_attach()
200 if (attach->dynamic_mapping != dmabuf->ops->dynamic_mapping) in dma_buf_dynamic_attach()
203 return attach; in dma_buf_dynamic_attach()
205 fail0: kmem_free(attach, sizeof(*attach)); in dma_buf_dynamic_attach()
217 dma_buf_detach(struct dma_buf *dmabuf, struct dma_buf_attachment *attach) in dma_buf_detach() argument
222 dmabuf->ops->detach(dmabuf, attach); in dma_buf_detach()
225 kmem_free(attach, sizeof(*attach)); in dma_buf_detach()
229 dma_buf_map_attachment(struct dma_buf_attachment *attach, in dma_buf_map_attachment() argument
234 if (attach->dmabuf->ops->dynamic_mapping) in dma_buf_map_attachment()
235 dma_resv_lock(attach->dmabuf->resv, NULL); in dma_buf_map_attachment()
236 sg = attach->dmabuf->ops->map_dma_buf(attach, dir); in dma_buf_map_attachment()
237 if (attach->dmabuf->ops->dynamic_mapping) in dma_buf_map_attachment()
238 dma_resv_unlock(attach->dmabuf->resv); in dma_buf_map_attachment()
244 dma_buf_unmap_attachment(struct dma_buf_attachment *attach, in dma_buf_unmap_attachment() argument
248 if (attach->dmabuf->ops->dynamic_mapping) in dma_buf_unmap_attachment()
249 dma_resv_lock(attach->dmabuf->resv, NULL); in dma_buf_unmap_attachment()
250 attach->dmabuf->ops->unmap_dma_buf(attach, sg, dir); in dma_buf_unmap_attachment()
251 if (attach->dmabuf->ops->dynamic_mapping) in dma_buf_unmap_attachment()
252 dma_resv_unlock(attach->dmabuf->resv); in dma_buf_unmap_attachment()