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