diff --git a/osal/linux/dma-buf.h b/osal/linux/dma-buf.h
new file mode 100644
index 00000000..ed910b8a
--- /dev/null
+++ b/osal/linux/dma-buf.h
@@ -0,0 +1,58 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
+/*
+ * Framework for buffer objects that can be shared across devices/subsystems.
+ *
+ * Copyright(C) 2015 Intel Ltd
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 as published by
+ * the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see .
+ */
+
+#ifndef _DMA_BUF_UAPI_H_
+#define _DMA_BUF_UAPI_H_
+
+#include
+
+/* begin/end dma-buf functions used for userspace mmap. */
+struct dma_buf_sync {
+ __u64 flags;
+};
+
+#define DMA_BUF_SYNC_READ (1 << 0)
+#define DMA_BUF_SYNC_WRITE (2 << 0)
+#define DMA_BUF_SYNC_RW (DMA_BUF_SYNC_READ | DMA_BUF_SYNC_WRITE)
+#define DMA_BUF_SYNC_START (0 << 2)
+#define DMA_BUF_SYNC_END (1 << 2)
+#define DMA_BUF_SYNC_VALID_FLAGS_MASK \
+ (DMA_BUF_SYNC_RW | DMA_BUF_SYNC_END)
+
+#define DMA_BUF_NAME_LEN 32
+
+#define DMA_BUF_BASE 'b'
+#define DMA_BUF_IOCTL_SYNC _IOW(DMA_BUF_BASE, 0, struct dma_buf_sync)
+
+/* 32/64bitness of this uapi was botched in android, there's no difference
+ * between them in actual uapi, they're just different numbers.
+ */
+#define DMA_BUF_SET_NAME _IOW(DMA_BUF_BASE, 1, const char *)
+#define DMA_BUF_SET_NAME_A _IOW(DMA_BUF_BASE, 1, __u32)
+#define DMA_BUF_SET_NAME_B _IOW(DMA_BUF_BASE, 1, __u64)
+
+struct dma_buf_sync_partial {
+ __u64 flags;
+ __u32 offset;
+ __u32 len;
+};
+
+#define DMA_BUF_IOCTL_SYNC_PARTIAL _IOW(DMA_BUF_BASE, 2, struct dma_buf_sync_partial)
+
+#endif
diff --git a/osal/mpp_dmabuf.cpp b/osal/mpp_dmabuf.cpp
index fcd7cdba..850620c0 100644
--- a/osal/mpp_dmabuf.cpp
+++ b/osal/mpp_dmabuf.cpp
@@ -6,34 +6,11 @@
#include
#include
#include
-#include
#include "mpp_env.h"
#include "mpp_log.h"
#include "mpp_dmabuf.h"
-
-/* SET_NAME and SYNC_PARTIAL are supported after 4.4 kernel */
-
-/* Add dma buffer name uapi */
-#ifndef DMA_BUF_SET_NAME
-/* 32/64bitness of this uapi was botched in android, there's no difference
- * between them in actual uapi, they're just different numbers.
- */
-#define DMA_BUF_SET_NAME _IOW(DMA_BUF_BASE, 1, const char *)
-#define DMA_BUF_SET_NAME_A _IOW(DMA_BUF_BASE, 1, __u32)
-#define DMA_BUF_SET_NAME_B _IOW(DMA_BUF_BASE, 1, __u64)
-#endif
-
-/* Add dma buffer sync partial uapi */
-#ifndef DMA_BUF_IOCTL_SYNC_PARTIAL
-struct dma_buf_sync_partial {
- __u64 flags;
- __u32 offset;
- __u32 len;
-};
-
-#define DMA_BUF_IOCTL_SYNC_PARTIAL _IOW(DMA_BUF_BASE, 2, struct dma_buf_sync_partial)
-#endif
+#include "linux/dma-buf.h"
#define MPP_NO_PARTIAL_SUPPORT 25 /* ENOTTY */
@@ -153,4 +130,4 @@ MPP_RET mpp_dmabuf_set_name(RK_S32 fd, const char *name, const char *caller)
RK_U32 mpp_dmabuf_sync_partial_support(void)
{
return has_partial_ops;
-}
\ No newline at end of file
+}