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