Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 33ea2dcb authored by Sumit Semwal's avatar Sumit Semwal
Browse files

dma-buf: add dma_data_direction to unmap dma_buf_op



Some exporters may use DMA map/unmap APIs in dma-buf ops, which require
enum dma_data_direction for both map and unmap operations.

Thus, the unmap dma_buf_op also needs to have enum dma_data_direction as
a parameter.

Reported-by: default avatarTomasz Stanislawski <t.stanislaws@samsung.com>
Signed-off-by: default avatarSumit Semwal <sumit.semwal@ti.com>
Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: default avatarSumit Semwal <sumit.semwal@linaro.org>
parent 2ed9201b
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -271,16 +271,19 @@ EXPORT_SYMBOL_GPL(dma_buf_map_attachment);
 * dma_buf_ops.
 * @attach:	[in]	attachment to unmap buffer from
 * @sg_table:	[in]	scatterlist info of the buffer to unmap
 * @direction:  [in]    direction of DMA transfer
 *
 */
void dma_buf_unmap_attachment(struct dma_buf_attachment *attach,
				struct sg_table *sg_table)
				struct sg_table *sg_table,
				enum dma_data_direction direction)
{
	if (WARN_ON(!attach || !attach->dmabuf || !sg_table))
		return;

	mutex_lock(&attach->dmabuf->lock);
	attach->dmabuf->ops->unmap_dma_buf(attach, sg_table);
	attach->dmabuf->ops->unmap_dma_buf(attach, sg_table,
						direction);
	mutex_unlock(&attach->dmabuf->lock);

}
+5 −3
Original line number Diff line number Diff line
@@ -63,7 +63,8 @@ struct dma_buf_ops {
	struct sg_table * (*map_dma_buf)(struct dma_buf_attachment *,
						enum dma_data_direction);
	void (*unmap_dma_buf)(struct dma_buf_attachment *,
						struct sg_table *);
						struct sg_table *,
						enum dma_data_direction);
	/* TODO: Add try_map_dma_buf version, to return immed with -EBUSY
	 * if the call would block.
	 */
@@ -122,7 +123,8 @@ void dma_buf_put(struct dma_buf *dmabuf);

struct sg_table *dma_buf_map_attachment(struct dma_buf_attachment *,
					enum dma_data_direction);
void dma_buf_unmap_attachment(struct dma_buf_attachment *, struct sg_table *);
void dma_buf_unmap_attachment(struct dma_buf_attachment *, struct sg_table *,
				enum dma_data_direction);
#else

static inline struct dma_buf_attachment *dma_buf_attach(struct dma_buf *dmabuf,
@@ -166,7 +168,7 @@ static inline struct sg_table *dma_buf_map_attachment(
}

static inline void dma_buf_unmap_attachment(struct dma_buf_attachment *attach,
						struct sg_table *sg)
			struct sg_table *sg, enum dma_data_direction dir)
{
	return;
}