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