From d9fb39957681faae229cc78dfbdd854a42f0d680 Mon Sep 17 00:00:00 2001 From: Herman Chen Date: Wed, 6 Dec 2023 14:42:44 +0800 Subject: [PATCH] fix[dma-buf]: Add dma-buf.h for old ndk compiling Signed-off-by: Herman Chen Change-Id: Id1188a945aa56af165c5957b88aa1a7453f5799b --- osal/linux/dma-buf.h | 58 ++++++++++++++++++++++++++++++++++++++++++++ osal/mpp_dmabuf.cpp | 27 ++------------------- 2 files changed, 60 insertions(+), 25 deletions(-) create mode 100644 osal/linux/dma-buf.h 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 +}