13c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang/* 23c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang * Copyright (C) 2007 Google, Inc. 33c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang * Author: Iliyan Malchev <ibm@android.com> 43c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang * 53c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang * This software is licensed under the terms of the GNU General Public 63c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang * License version 2, as published by the Free Software Foundation, and 73c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang * may be copied, distributed, and modified under those terms. 83c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang * 93c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang * This program is distributed in the hope that it will be useful, 103c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang * but WITHOUT ANY WARRANTY; without even the implied warranty of 113c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 123c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang * GNU General Public License for more details. 133c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang * 143c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang */ 153c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang#ifndef _UAPI_LINUX_MSM_ADSP_H 163c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang#define _UAPI_LINUX_MSM_ADSP_H 173c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang 183c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang#include <linux/types.h> 193c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang#include <linux/ioctl.h> 203c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang 213c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang#define ADSP_IOCTL_MAGIC 'q' 223c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang 233c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang/* ADSP_IOCTL_WRITE_COMMAND */ 243c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wangstruct adsp_command_t { 253c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang uint16_t queue; 263c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang uint32_t len; /* bytes */ 273c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang uint8_t *data; 283c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang}; 293c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang 303c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang/* ADSP_IOCTL_GET_EVENT */ 313c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wangstruct adsp_event_t { 323c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang uint16_t type; /* 1 == event (RPC), 0 == message (adsp) */ 333c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang uint32_t timeout_ms; /* -1 for infinite, 0 for immediate return */ 343c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang uint16_t msg_id; 353c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang uint16_t flags; /* 1 == 16--bit event, 0 == 32-bit event */ 363c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang uint32_t len; /* size in, number of bytes out */ 373c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang uint8_t *data; 383c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang}; 393c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang 403c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang#define ADSP_IOCTL_ENABLE \ 413c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang _IOR(ADSP_IOCTL_MAGIC, 1, unsigned) 423c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang 433c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang#define ADSP_IOCTL_DISABLE \ 443c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang _IOR(ADSP_IOCTL_MAGIC, 2, unsigned) 453c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang 463c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang#define ADSP_IOCTL_DISABLE_ACK \ 473c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang _IOR(ADSP_IOCTL_MAGIC, 3, unsigned) 483c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang 493c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang#define ADSP_IOCTL_WRITE_COMMAND \ 503c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang _IOR(ADSP_IOCTL_MAGIC, 4, struct adsp_command_t *) 513c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang 523c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang#define ADSP_IOCTL_GET_EVENT \ 533c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang _IOWR(ADSP_IOCTL_MAGIC, 5, struct adsp_event_data_t *) 543c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang 553c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang#define ADSP_IOCTL_SET_CLKRATE \ 563c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang _IOR(ADSP_IOCTL_MAGIC, 6, unsigned) 573c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang 583c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang#define ADSP_IOCTL_DISABLE_EVENT_RSP \ 593c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang _IOR(ADSP_IOCTL_MAGIC, 10, unsigned) 603c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang 613c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang#define ADSP_IOCTL_REGISTER_PMEM \ 623c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang _IOW(ADSP_IOCTL_MAGIC, 13, unsigned) 633c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang 643c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang#define ADSP_IOCTL_UNREGISTER_PMEM \ 653c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang _IOW(ADSP_IOCTL_MAGIC, 14, unsigned) 663c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang 673c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang/* Cause any further GET_EVENT ioctls to fail (-ENODEV) 683c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang * until the device is closed and reopened. Useful for 693c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang * terminating event dispatch threads 703c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang */ 713c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang#define ADSP_IOCTL_ABORT_EVENT_READ \ 723c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang _IOW(ADSP_IOCTL_MAGIC, 15, unsigned) 733c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang 743c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang#define ADSP_IOCTL_LINK_TASK \ 753c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang _IOW(ADSP_IOCTL_MAGIC, 16, unsigned) 763c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang 773c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang#endif 78