1 /* 2 * Copyright (C) 2007 Google, Inc. 3 * Author: Iliyan Malchev <ibm@android.com> 4 * 5 * This software is licensed under the terms of the GNU General Public 6 * License version 2, as published by the Free Software Foundation, and 7 * may be copied, distributed, and modified under those terms. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 */ 15 #ifndef _UAPI_LINUX_MSM_ADSP_H 16 #define _UAPI_LINUX_MSM_ADSP_H 17 18 #include <linux/types.h> 19 #include <linux/ioctl.h> 20 21 #define ADSP_IOCTL_MAGIC 'q' 22 23 /* ADSP_IOCTL_WRITE_COMMAND */ 24 struct adsp_command_t { 25 uint16_t queue; 26 uint32_t len; /* bytes */ 27 uint8_t *data; 28 }; 29 30 /* ADSP_IOCTL_GET_EVENT */ 31 struct adsp_event_t { 32 uint16_t type; /* 1 == event (RPC), 0 == message (adsp) */ 33 uint32_t timeout_ms; /* -1 for infinite, 0 for immediate return */ 34 uint16_t msg_id; 35 uint16_t flags; /* 1 == 16--bit event, 0 == 32-bit event */ 36 uint32_t len; /* size in, number of bytes out */ 37 uint8_t *data; 38 }; 39 40 #define ADSP_IOCTL_ENABLE \ 41 _IOR(ADSP_IOCTL_MAGIC, 1, unsigned) 42 43 #define ADSP_IOCTL_DISABLE \ 44 _IOR(ADSP_IOCTL_MAGIC, 2, unsigned) 45 46 #define ADSP_IOCTL_DISABLE_ACK \ 47 _IOR(ADSP_IOCTL_MAGIC, 3, unsigned) 48 49 #define ADSP_IOCTL_WRITE_COMMAND \ 50 _IOR(ADSP_IOCTL_MAGIC, 4, struct adsp_command_t *) 51 52 #define ADSP_IOCTL_GET_EVENT \ 53 _IOWR(ADSP_IOCTL_MAGIC, 5, struct adsp_event_data_t *) 54 55 #define ADSP_IOCTL_SET_CLKRATE \ 56 _IOR(ADSP_IOCTL_MAGIC, 6, unsigned) 57 58 #define ADSP_IOCTL_DISABLE_EVENT_RSP \ 59 _IOR(ADSP_IOCTL_MAGIC, 10, unsigned) 60 61 #define ADSP_IOCTL_REGISTER_PMEM \ 62 _IOW(ADSP_IOCTL_MAGIC, 13, unsigned) 63 64 #define ADSP_IOCTL_UNREGISTER_PMEM \ 65 _IOW(ADSP_IOCTL_MAGIC, 14, unsigned) 66 67 /* Cause any further GET_EVENT ioctls to fail (-ENODEV) 68 * until the device is closed and reopened. Useful for 69 * terminating event dispatch threads 70 */ 71 #define ADSP_IOCTL_ABORT_EVENT_READ \ 72 _IOW(ADSP_IOCTL_MAGIC, 15, unsigned) 73 74 #define ADSP_IOCTL_LINK_TASK \ 75 _IOW(ADSP_IOCTL_MAGIC, 16, unsigned) 76 77 #endif 78