summaryrefslogtreecommitdiff
path: root/backport-include/linux/dma-buf.h
diff options
context:
space:
mode:
Diffstat (limited to 'backport-include/linux/dma-buf.h')
-rw-r--r--backport-include/linux/dma-buf.h54
1 files changed, 54 insertions, 0 deletions
diff --git a/backport-include/linux/dma-buf.h b/backport-include/linux/dma-buf.h
new file mode 100644
index 0000000..ef1d0d3
--- /dev/null
+++ b/backport-include/linux/dma-buf.h
@@ -0,0 +1,54 @@
+#ifndef _BACKPORT_DMA_BUF_H__
+#define _BACKPORT_DMA_BUF_H__
+#include <linux/version.h>
+#if LINUX_VERSION_IS_GEQ(3,3,0)
+#include_next <linux/dma-buf.h>
+#endif /* LINUX_VERSION_IS_GEQ(3,3,0) */
+#include <linux/dma-direction.h>
+#include <linux/dma-attrs.h>
+#include <linux/dma-mapping.h>
+
+#if !defined(DEFINE_DMA_BUF_EXPORT_INFO) && LINUX_VERSION_IS_GEQ(3,3,0)
+/**
+ * helper macro for exporters; zeros and fills in most common values
+ */
+#define DEFINE_DMA_BUF_EXPORT_INFO(a) \
+ struct dma_buf_export_info a = { .exp_name = KBUILD_MODNAME }
+
+struct dma_buf_export_info {
+ const char *exp_name;
+ const struct dma_buf_ops *ops;
+ size_t size;
+ int flags;
+ struct reservation_object *resv;
+ void *priv;
+};
+
+#ifdef dma_buf_export
+#undef dma_buf_export
+#endif
+
+static inline
+struct dma_buf *backport_dma_buf_export(const struct dma_buf_export_info *exp_info)
+{
+#if LINUX_VERSION_IS_LESS(3,4,0)
+ return dma_buf_export(exp_info->priv,
+ (struct dma_buf_ops *)exp_info->ops,
+ exp_info->size, exp_info->flags);
+#elif LINUX_VERSION_IS_LESS(3,10,0)
+ return dma_buf_export(exp_info->priv, exp_info->ops,
+ exp_info->size, exp_info->flags);
+#elif LINUX_VERSION_IS_LESS(3,17,0)
+ return dma_buf_export_named(exp_info->priv, exp_info->ops,
+ exp_info->size, exp_info->flags,
+ exp_info->exp_name);
+#else
+ return dma_buf_export_named(exp_info->priv, exp_info->ops,
+ exp_info->size, exp_info->flags,
+ exp_info->exp_name, exp_info->resv);
+#endif
+}
+#define dma_buf_export LINUX_BACKPORT(dma_buf_export)
+#endif /* !defined(DEFINE_DMA_BUF_EXPORT_INFO) */
+
+#endif /* _BACKPORT_DMA_BUF_H__ */