1 /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ 2 /* 3 * Copyright 2021 Google LLC. 4 * 5 * Author: Vinay Kalia <[email protected]> 6 */ 7 8 #ifndef _BIGO_H_ 9 #define _BIGO_H_ 10 11 #include <linux/ioctl.h> 12 13 #include <linux/types.h> 14 15 /* 16 * Structures as parameters for BigOcean commands. It should be passed 17 * into ioctl() as the third parameter. 18 * 19 * The usage and meaning of each field is documented in command 20 * identifiers. 21 */ 22 23 struct bigo_ioc_regs { 24 __u64 regs; 25 __u32 regs_size; 26 }; 27 28 struct bigo_ioc_mapping { 29 int fd; 30 __u32 iova; 31 __u32 offset; 32 __u32 size; 33 __u32 skip_cmo; 34 }; 35 36 struct bigo_ioc_frmsize { 37 __u32 height; 38 __u32 width; 39 }; 40 41 struct bigo_ioc_misc { 42 __u32 cmd; 43 __u32 ret; 44 __u32 data0; 45 __u32 data1; 46 __u32 data2; 47 __u32 data3; 48 }; 49 50 struct bigo_cache_info { 51 __u32 size; 52 __u32 pid; 53 }; 54 55 /** 56 * @flags: Set of access flags defined in uapi/linux/dma-buf.h 57 */ 58 struct bigo_buf_sync { 59 int fd; 60 __u32 offset; 61 __u32 size; 62 __u64 flags; 63 }; 64 65 /* 66 * Helpers for defining command identifiers. User space should not 67 * use these macros directly. 68 * 69 * <START OF HELPERS> 70 */ 71 #define BIGO_IOC_MAGIC 'B' 72 73 #define _BIGO_IO(nr) _IO(BIGO_IOC_MAGIC, nr) 74 #define _BIGO_IOR(nr, size) _IOR(BIGO_IOC_MAGIC, nr, size) 75 #define _BIGO_IOW(nr, size) _IOW(BIGO_IOC_MAGIC, nr, size) 76 #define _BIGO_IOWR(nr, size) _IOWR(BIGO_IOC_MAGIC, nr, size) 77 78 enum bigo_cmd_id { 79 BIGO_CMD_PROCESS, 80 BIGO_CMD_ABORT, 81 BIGO_CMD_MAP, 82 BIGO_CMD_UNMAP, 83 BIGO_CMD_CONFIG_FRMRATE, 84 BIGO_CMD_CONFIG_FRMSIZE, 85 BIGO_CMD_GET_CACHE_INFO, 86 BIGO_CMD_CONFIG_SECURE, 87 BIGO_CMD_CONFIG_PRIORITY, 88 BIGO_CMD_DMA_SYNC, 89 BIGO_CMD_MISC, 90 BIGO_CMD_MAXNR, 91 }; 92 /* <END OF HELPERS> */ 93 94 #define BIGO_IOCX_PROCESS _BIGO_IOWR(BIGO_CMD_PROCESS, struct bigo_ioc_regs) 95 #define BIGO_IOCX_MAP _BIGO_IOWR(BIGO_CMD_MAP, struct bigo_ioc_mapping) 96 #define BIGO_IOCX_UNMAP _BIGO_IOW(BIGO_CMD_UNMAP, struct bigo_ioc_mapping) 97 #define BIGO_IOCX_CONFIG_FRMRATE _BIGO_IOW(BIGO_CMD_CONFIG_FRMRATE, __u32) 98 #define BIGO_IOCX_CONFIG_FRMSIZE \ 99 _BIGO_IOW(BIGO_CMD_CONFIG_FRMSIZE, struct bigo_ioc_frmsize) 100 #define BIGO_IOCX_GET_CACHE_INFO \ 101 _BIGO_IOR(BIGO_CMD_GET_CACHE_INFO, struct bigo_cache_info) 102 #define BIGO_IOCX_ABORT _BIGO_IO(BIGO_CMD_ABORT) 103 #define BIGO_IOCX_CONFIG_SECURE _BIGO_IOW(BIGO_CMD_CONFIG_SECURE, __u32) 104 #define BIGO_IOCX_CONFIG_PRIORITY _BIGO_IOW(BIGO_CMD_CONFIG_PRIORITY, __s32) 105 #define BIGO_IOCX_DMA_SYNC _BIGO_IOW(BIGO_CMD_DMA_SYNC, struct bigo_buf_sync) 106 #define BIGO_IOCX_MISC _BIGO_IOW(BIGO_CMD_MISC, struct bigo_ioc_misc) 107 108 #endif /* _BIGO_H_ */ 109