1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2
3#ifndef __QCOM_FASTRPC_H__
4#define __QCOM_FASTRPC_H__
5
6#include <linux/types.h>
7
8#define FASTRPC_IOCTL_ALLOC_DMA_BUFF	_IOWR('R', 1, struct fastrpc_alloc_dma_buf)
9#define FASTRPC_IOCTL_FREE_DMA_BUFF	_IOWR('R', 2, __u32)
10#define FASTRPC_IOCTL_INVOKE		_IOWR('R', 3, struct fastrpc_invoke)
11#define FASTRPC_IOCTL_INIT_ATTACH	_IO('R', 4)
12#define FASTRPC_IOCTL_INIT_CREATE	_IOWR('R', 5, struct fastrpc_init_create)
13#define FASTRPC_IOCTL_MMAP		_IOWR('R', 6, struct fastrpc_req_mmap)
14#define FASTRPC_IOCTL_MUNMAP		_IOWR('R', 7, struct fastrpc_req_munmap)
15#define FASTRPC_IOCTL_INIT_ATTACH_SNS	_IO('R', 8)
16
17struct fastrpc_invoke_args {
18	__u64 ptr;
19	__u64 length;
20	__s32 fd;
21	__u32 reserved;
22};
23
24struct fastrpc_invoke {
25	__u32 handle;
26	__u32 sc;
27	__u64 args;
28};
29
30struct fastrpc_init_create {
31	__u32 filelen;	/* elf file length */
32	__s32 filefd;	/* fd for the file */
33	__u32 attrs;
34	__u32 siglen;
35	__u64 file;	/* pointer to elf file */
36};
37
38struct fastrpc_alloc_dma_buf {
39	__s32 fd;	/* fd */
40	__u32 flags;	/* flags to map with */
41	__u64 size;	/* size */
42};
43
44struct fastrpc_req_mmap {
45	__s32 fd;
46	__u32 flags;	/* flags for dsp to map with */
47	__u64 vaddrin;	/* optional virtual address */
48	__u64 size;	/* size */
49	__u64 vaddrout;	/* dsp virtual address */
50};
51
52struct fastrpc_req_munmap {
53	__u64 vaddrout;	/* address to unmap */
54	__u64 size;	/* size */
55};
56
57#endif /* __QCOM_FASTRPC_H__ */
58