fix[dma-buf]: Add dma-buf.h for old ndk compiling

Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: Id1188a945aa56af165c5957b88aa1a7453f5799b
This commit is contained in:
Herman Chen
2023-12-06 14:42:44 +08:00
parent b5d8ac4209
commit d9fb399576
2 changed files with 60 additions and 25 deletions

58
osal/linux/dma-buf.h Normal file
View File

@@ -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 <http://www.gnu.org/licenses/>.
*/
#ifndef _DMA_BUF_UAPI_H_
#define _DMA_BUF_UAPI_H_
#include <linux/types.h>
/* 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

View File

@@ -6,34 +6,11 @@
#include <string.h>
#include <errno.h>
#include <sys/ioctl.h>
#include <linux/dma-buf.h>
#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;
}
}