1f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev/* include/linux/msm_adsp.h
2f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev *
3f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev * Copyright (C) 2007 Google, Inc.
4f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev * Author: Iliyan Malchev <ibm@android.com>
5f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev *
6f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev * This software is licensed under the terms of the GNU General Public
7f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev * License version 2, as published by the Free Software Foundation, and
8f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev * may be copied, distributed, and modified under those terms.
9f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev *
10f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev * This program is distributed in the hope that it will be useful,
11f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev * but WITHOUT ANY WARRANTY; without even the implied warranty of
12f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev * GNU General Public License for more details.
14f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev *
15f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev */
168611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#ifndef __LINUX_MSM_ADSP_H
178611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define __LINUX_MSM_ADSP_H
188611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
198611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#include <linux/types.h>
208611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#include <linux/ioctl.h>
218611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
228611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define ADSP_IOCTL_MAGIC 'q'
238611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
24f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev/* ADSP_IOCTL_WRITE_COMMAND */
258611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct adsp_command_t {
26f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	uint16_t queue;
27f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	uint32_t len;		/* bytes */
28f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	uint8_t *data;
298611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
308611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
31f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev/* ADSP_IOCTL_GET_EVENT */
328611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct adsp_event_t {
33f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	uint16_t type;		/* 1 == event (RPC), 0 == message (adsp) */
34f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	uint32_t timeout_ms;	/* -1 for infinite, 0 for immediate return */
35f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	uint16_t msg_id;
36f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	uint16_t flags;		/* 1 == 16--bit event, 0 == 32-bit event */
37f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	uint32_t len;		/* size in, number of bytes out */
38f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	uint8_t *data;
398611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
408611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
41f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev#define ADSP_IOCTL_ENABLE \
42f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	_IOR(ADSP_IOCTL_MAGIC, 1, unsigned)
438611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
44f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev#define ADSP_IOCTL_DISABLE \
45f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	_IOR(ADSP_IOCTL_MAGIC, 2, unsigned)
468611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
47f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev#define ADSP_IOCTL_DISABLE_ACK \
48f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	_IOR(ADSP_IOCTL_MAGIC, 3, unsigned)
498611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
50f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev#define ADSP_IOCTL_WRITE_COMMAND \
51f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	_IOR(ADSP_IOCTL_MAGIC, 4, struct adsp_command_t *)
528611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
53f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev#define ADSP_IOCTL_GET_EVENT \
54f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	_IOWR(ADSP_IOCTL_MAGIC, 5, struct adsp_event_data_t *)
558611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
56f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev#define ADSP_IOCTL_SET_CLKRATE \
57f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	_IOR(ADSP_IOCTL_MAGIC, 6, unsigned)
588611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
59f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev#define ADSP_IOCTL_DISABLE_EVENT_RSP \
60f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	_IOR(ADSP_IOCTL_MAGIC, 10, unsigned)
618611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
62f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev#define ADSP_IOCTL_REGISTER_PMEM \
63f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	_IOW(ADSP_IOCTL_MAGIC, 13, unsigned)
648611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
65f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev#define ADSP_IOCTL_UNREGISTER_PMEM \
66f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	_IOW(ADSP_IOCTL_MAGIC, 14, unsigned)
678611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
68f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev/* Cause any further GET_EVENT ioctls to fail (-ENODEV)
69f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev * until the device is closed and reopened.  Useful for
70f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev * terminating event dispatch threads
71f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev */
72f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev#define ADSP_IOCTL_ABORT_EVENT_READ \
73f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	_IOW(ADSP_IOCTL_MAGIC, 15, unsigned)
748611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
75f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev#define ADSP_IOCTL_LINK_TASK \
76f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	_IOW(ADSP_IOCTL_MAGIC, 16, unsigned)
778611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
788611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#endif
79