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