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