1d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim/* include/linux/msm_audio.h
2d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim *
3d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim * Copyright (C) 2008 Google, Inc.
4d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim * Copyright (c) 2012 The Linux Foundation. All rights reserved.
5d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim *
6d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim * This software is licensed under the terms of the GNU General Public
7d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim * License version 2, as published by the Free Software Foundation, and
8d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim * may be copied, distributed, and modified under those terms.
9d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim *
10d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim * This program is distributed in the hope that it will be useful,
11d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim * but WITHOUT ANY WARRANTY; without even the implied warranty of
12d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim * GNU General Public License for more details.
14d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim *
15d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim */
16d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
17d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#ifndef _UAPI_LINUX_MSM_AUDIO_H
18d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define _UAPI_LINUX_MSM_AUDIO_H
19d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
20d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#include <linux/types.h>
21d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#include <linux/ioctl.h>
22d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
23d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim/* PCM Audio */
24d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
25d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_IOCTL_MAGIC 'a'
26d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
27d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_START        _IOW(AUDIO_IOCTL_MAGIC, 0, unsigned)
28d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_STOP         _IOW(AUDIO_IOCTL_MAGIC, 1, unsigned)
29d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_FLUSH        _IOW(AUDIO_IOCTL_MAGIC, 2, unsigned)
30d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_GET_CONFIG   _IOR(AUDIO_IOCTL_MAGIC, 3, \
31d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim		struct msm_audio_config)
32d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_SET_CONFIG   _IOW(AUDIO_IOCTL_MAGIC, 4, \
33d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim		struct msm_audio_config)
34d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_GET_STATS    _IOR(AUDIO_IOCTL_MAGIC, 5, \
35d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim		struct msm_audio_stats)
36d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_ENABLE_AUDPP _IOW(AUDIO_IOCTL_MAGIC, 6, unsigned)
37d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_SET_ADRC     _IOW(AUDIO_IOCTL_MAGIC, 7, unsigned)
38d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_SET_EQ       _IOW(AUDIO_IOCTL_MAGIC, 8, unsigned)
39d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_SET_RX_IIR   _IOW(AUDIO_IOCTL_MAGIC, 9, unsigned)
40d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_SET_VOLUME   _IOW(AUDIO_IOCTL_MAGIC, 10, unsigned)
41d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_PAUSE        _IOW(AUDIO_IOCTL_MAGIC, 11, unsigned)
42d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_PLAY_DTMF    _IOW(AUDIO_IOCTL_MAGIC, 12, unsigned)
43d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_GET_EVENT    _IOR(AUDIO_IOCTL_MAGIC, 13, \
44d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim		struct msm_audio_event)
45d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_ABORT_GET_EVENT _IOW(AUDIO_IOCTL_MAGIC, 14, unsigned)
46d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_REGISTER_PMEM _IOW(AUDIO_IOCTL_MAGIC, 15, unsigned)
47d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_DEREGISTER_PMEM _IOW(AUDIO_IOCTL_MAGIC, 16, unsigned)
48d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_ASYNC_WRITE _IOW(AUDIO_IOCTL_MAGIC, 17, \
49d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim		struct msm_audio_aio_buf)
50d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_ASYNC_READ _IOW(AUDIO_IOCTL_MAGIC, 18, \
51d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim		struct msm_audio_aio_buf)
52d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_SET_INCALL _IOW(AUDIO_IOCTL_MAGIC, 19, struct msm_voicerec_mode)
53d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_GET_NUM_SND_DEVICE _IOR(AUDIO_IOCTL_MAGIC, 20, unsigned)
54d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_GET_SND_DEVICES _IOWR(AUDIO_IOCTL_MAGIC, 21, \
55d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim				struct msm_snd_device_list)
56d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_ENABLE_SND_DEVICE _IOW(AUDIO_IOCTL_MAGIC, 22, unsigned)
57d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_DISABLE_SND_DEVICE _IOW(AUDIO_IOCTL_MAGIC, 23, unsigned)
58d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_ROUTE_STREAM _IOW(AUDIO_IOCTL_MAGIC, 24, \
59d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim				struct msm_audio_route_config)
60d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_GET_PCM_CONFIG _IOR(AUDIO_IOCTL_MAGIC, 30, unsigned)
61d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_SET_PCM_CONFIG _IOW(AUDIO_IOCTL_MAGIC, 31, unsigned)
62d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_SWITCH_DEVICE  _IOW(AUDIO_IOCTL_MAGIC, 32, unsigned)
63d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_SET_MUTE       _IOW(AUDIO_IOCTL_MAGIC, 33, unsigned)
64d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_UPDATE_ACDB    _IOW(AUDIO_IOCTL_MAGIC, 34, unsigned)
65d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_START_VOICE    _IOW(AUDIO_IOCTL_MAGIC, 35, unsigned)
66d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_STOP_VOICE     _IOW(AUDIO_IOCTL_MAGIC, 36, unsigned)
67d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_REINIT_ACDB    _IOW(AUDIO_IOCTL_MAGIC, 39, unsigned)
68d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_OUTPORT_FLUSH  _IOW(AUDIO_IOCTL_MAGIC, 40, unsigned short)
69d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_SET_ERR_THRESHOLD_VALUE _IOW(AUDIO_IOCTL_MAGIC, 41, \
70d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim					unsigned short)
71d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_GET_BITSTREAM_ERROR_INFO _IOR(AUDIO_IOCTL_MAGIC, 42, \
72d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim			       struct msm_audio_bitstream_error_info)
73d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
74d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_SET_SRS_TRUMEDIA_PARAM _IOW(AUDIO_IOCTL_MAGIC, 43, unsigned)
75d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
76d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim/* Qualcomm extensions */
77d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_SET_STREAM_CONFIG   _IOW(AUDIO_IOCTL_MAGIC, 80, \
78d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim				struct msm_audio_stream_config)
79d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_GET_STREAM_CONFIG   _IOR(AUDIO_IOCTL_MAGIC, 81, \
80d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim				struct msm_audio_stream_config)
81d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_GET_SESSION_ID _IOR(AUDIO_IOCTL_MAGIC, 82, unsigned short)
82d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_GET_STREAM_INFO   _IOR(AUDIO_IOCTL_MAGIC, 83, \
83d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim			       struct msm_audio_bitstream_info)
84d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_SET_PAN       _IOW(AUDIO_IOCTL_MAGIC, 84, unsigned)
85d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_SET_QCONCERT_PLUS       _IOW(AUDIO_IOCTL_MAGIC, 85, unsigned)
86d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_SET_MBADRC       _IOW(AUDIO_IOCTL_MAGIC, 86, unsigned)
87d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_SET_VOLUME_PATH   _IOW(AUDIO_IOCTL_MAGIC, 87, \
88d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim				     struct msm_vol_info)
89d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_SET_MAX_VOL_ALL _IOW(AUDIO_IOCTL_MAGIC, 88, unsigned)
90d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_ENABLE_AUDPRE  _IOW(AUDIO_IOCTL_MAGIC, 89, unsigned)
91d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_SET_AGC        _IOW(AUDIO_IOCTL_MAGIC, 90, unsigned)
92d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_SET_NS         _IOW(AUDIO_IOCTL_MAGIC, 91, unsigned)
93d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_SET_TX_IIR     _IOW(AUDIO_IOCTL_MAGIC, 92, unsigned)
94d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_GET_BUF_CFG    _IOW(AUDIO_IOCTL_MAGIC, 93, \
95d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim					struct msm_audio_buf_cfg)
96d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_SET_BUF_CFG    _IOW(AUDIO_IOCTL_MAGIC, 94, \
97d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim					struct msm_audio_buf_cfg)
98d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_SET_ACDB_BLK _IOW(AUDIO_IOCTL_MAGIC, 95,  \
99d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim					struct msm_acdb_cmd_device)
100d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_GET_ACDB_BLK _IOW(AUDIO_IOCTL_MAGIC, 96,  \
101d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim					struct msm_acdb_cmd_device)
102d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
103d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_REGISTER_ION _IOW(AUDIO_IOCTL_MAGIC, 97, \
104d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim		struct msm_audio_ion_info)
105d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_DEREGISTER_ION _IOW(AUDIO_IOCTL_MAGIC, 98, \
106d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim		struct msm_audio_ion_info)
107d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
108d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define	AUDIO_MAX_COMMON_IOCTL_NUM	100
109d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
110d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
111d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define HANDSET_MIC			0x01
112d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define HANDSET_SPKR			0x02
113d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define HEADSET_MIC			0x03
114d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define HEADSET_SPKR_MONO		0x04
115d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define HEADSET_SPKR_STEREO		0x05
116d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define SPKR_PHONE_MIC			0x06
117d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define SPKR_PHONE_MONO			0x07
118d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define SPKR_PHONE_STEREO		0x08
119d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define BT_SCO_MIC			0x09
120d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define BT_SCO_SPKR			0x0A
121d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define BT_A2DP_SPKR			0x0B
122d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define TTY_HEADSET_MIC			0x0C
123d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define TTY_HEADSET_SPKR		0x0D
124d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
125d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim/* Default devices are not supported in a */
126d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim/* device switching context. Only supported */
127d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim/* for stream devices. */
128d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim/* DO NOT USE */
129d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define DEFAULT_TX			0x0E
130d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define DEFAULT_RX			0x0F
131d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
132d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define BT_A2DP_TX			0x10
133d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
134d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define HEADSET_MONO_PLUS_SPKR_MONO_RX         0x11
135d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define HEADSET_MONO_PLUS_SPKR_STEREO_RX       0x12
136d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define HEADSET_STEREO_PLUS_SPKR_MONO_RX       0x13
137d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define HEADSET_STEREO_PLUS_SPKR_STEREO_RX     0x14
138d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
139d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define I2S_RX				0x20
140d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define I2S_TX				0x21
141d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
142d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define ADRC_ENABLE		0x0001
143d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define EQ_ENABLE		0x0002
144d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define IIR_ENABLE		0x0004
145d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define QCONCERT_PLUS_ENABLE	0x0008
146d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define MBADRC_ENABLE		0x0010
147d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define SRS_ENABLE		0x0020
148d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define SRS_DISABLE	0x0040
149d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
150d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AGC_ENABLE		0x0001
151d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define NS_ENABLE		0x0002
152d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define TX_IIR_ENABLE		0x0004
153d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define FLUENCE_ENABLE		0x0008
154d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
155d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define VOC_REC_UPLINK		0x00
156d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define VOC_REC_DOWNLINK	0x01
157d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define VOC_REC_BOTH		0x02
158d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
159d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kimstruct msm_audio_config {
160d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t buffer_size;
161d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t buffer_count;
162d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t channel_count;
163d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t sample_rate;
164d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t type;
165d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t meta_field;
166d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t bits;
167d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t unused[3];
168d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim};
169d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
170d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kimstruct msm_audio_stream_config {
171d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t buffer_size;
172d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t buffer_count;
173d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim};
174d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
175d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kimstruct msm_audio_buf_cfg{
176d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t meta_info_enable;
177d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t frames_per_buf;
178d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim};
179d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
180d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kimstruct msm_audio_stats {
181d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t byte_count;
182d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t sample_count;
183d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t unused[2];
184d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim};
185d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
186d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kimstruct msm_audio_ion_info {
187d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	int fd;
188d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	void *vaddr;
189d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim};
190d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
191d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kimstruct msm_audio_pmem_info {
192d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	int fd;
193d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	void *vaddr;
194d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim};
195d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
196d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kimstruct msm_audio_aio_buf {
197d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	void *buf_addr;
198d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t buf_len;
199d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t data_len;
200d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	void *private_data;
201d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	unsigned short mfield_sz; /*only useful for data has meta field */
202d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim};
203d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
204d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim/* Audio routing */
205d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
206d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define SND_IOCTL_MAGIC 's'
207d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
208d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define SND_MUTE_UNMUTED 0
209d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define SND_MUTE_MUTED   1
210d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
211d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kimstruct msm_mute_info {
212d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t mute;
213d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t path;
214d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim};
215d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
216d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kimstruct msm_vol_info {
217d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t vol;
218d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t path;
219d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim};
220d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
221d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kimstruct msm_voicerec_mode {
222d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t rec_mode;
223d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim};
224d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
225d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kimstruct msm_snd_device_config {
226d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t device;
227d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t ear_mute;
228d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t mic_mute;
229d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim};
230d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
231d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define SND_SET_DEVICE _IOW(SND_IOCTL_MAGIC, 2, struct msm_device_config *)
232d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
233d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kimenum cad_device_path_type {
234d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	CAD_DEVICE_PATH_RX,	/*For Decoding session*/
235d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	CAD_DEVICE_PATH_TX,	/* For Encoding session*/
236d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	CAD_DEVICE_PATH_RX_TX, /* For Voice call */
237d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	CAD_DEVICE_PATH_LB,	/* For loopback (FM Analog)*/
238d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	CAD_DEVICE_PATH_MAX
239d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim};
240d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
241d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kimstruct cad_devices_type {
242d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t rx_device;
243d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t tx_device;
244d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	enum cad_device_path_type pathtype;
245d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim};
246d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
247d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kimstruct msm_cad_device_config {
248d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	struct cad_devices_type device;
249d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t ear_mute;
250d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t mic_mute;
251d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim};
252d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
253d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define CAD_SET_DEVICE _IOW(SND_IOCTL_MAGIC, 2, struct msm_cad_device_config *)
254d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
255d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define SND_METHOD_VOICE 0
256d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define SND_METHOD_MIDI 4
257d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
258d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kimstruct msm_snd_volume_config {
259d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t device;
260d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t method;
261d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t volume;
262d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim};
263d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
264d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define SND_SET_VOLUME _IOW(SND_IOCTL_MAGIC, 3, struct msm_snd_volume_config *)
265d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
266d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kimstruct msm_cad_volume_config {
267d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	struct cad_devices_type device;
268d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t method;
269d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t volume;
270d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim};
271d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
272d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define CAD_SET_VOLUME _IOW(SND_IOCTL_MAGIC, 3, struct msm_cad_volume_config *)
273d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
274d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim/* Returns the number of SND endpoints supported. */
275d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
276d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define SND_GET_NUM_ENDPOINTS _IOR(SND_IOCTL_MAGIC, 4, unsigned *)
277d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
278d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kimstruct msm_snd_endpoint {
279d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	int id; /* input and output */
280d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	char name[64]; /* output only */
281d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim};
282d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
283d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim/* Takes an index between 0 and one less than the number returned by
284d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim * SND_GET_NUM_ENDPOINTS, and returns the SND index and name of a
285d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim * SND endpoint.  On input, the .id field contains the number of the
286d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim * endpoint, and on exit it contains the SND index, while .name contains
287d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim * the description of the endpoint.
288d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim */
289d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
290d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define SND_GET_ENDPOINT _IOWR(SND_IOCTL_MAGIC, 5, struct msm_snd_endpoint *)
291d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
292d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
293d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define SND_AVC_CTL _IOW(SND_IOCTL_MAGIC, 6, unsigned *)
294d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define SND_AGC_CTL _IOW(SND_IOCTL_MAGIC, 7, unsigned *)
295d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
296d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim/*return the number of CAD endpoints supported. */
297d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
298d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define CAD_GET_NUM_ENDPOINTS _IOR(SND_IOCTL_MAGIC, 4, unsigned *)
299d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
300d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kimstruct msm_cad_endpoint {
301d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	int id; /* input and output */
302d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	char name[64]; /* output only */
303d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim};
304d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
305d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim/* Takes an index between 0 and one less than the number returned by
306d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim * SND_GET_NUM_ENDPOINTS, and returns the CAD index and name of a
307d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim * CAD endpoint.  On input, the .id field contains the number of the
308d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim * endpoint, and on exit it contains the SND index, while .name contains
309d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim * the description of the endpoint.
310d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim */
311d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
312d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define CAD_GET_ENDPOINT _IOWR(SND_IOCTL_MAGIC, 5, struct msm_cad_endpoint *)
313d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
314d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kimstruct msm_audio_pcm_config {
315d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t pcm_feedback;	/* 0 - disable > 0 - enable */
316d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t buffer_count;	/* Number of buffers to allocate */
317d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t buffer_size;	/* Size of buffer for capturing of
318d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim				   PCM samples */
319d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim};
320d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
321d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_EVENT_SUSPEND 0
322d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_EVENT_RESUME 1
323d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_EVENT_WRITE_DONE 2
324d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_EVENT_READ_DONE   3
325d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_EVENT_STREAM_INFO 4
326d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_EVENT_BITSTREAM_ERROR_INFO 5
327d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
328d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_CODEC_TYPE_MP3 0
329d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_CODEC_TYPE_AAC 1
330d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
331d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kimstruct msm_audio_bitstream_info {
332d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t codec_type;
333d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t chan_info;
334d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t sample_rate;
335d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t bit_stream_info;
336d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t bit_rate;
337d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t unused[3];
338d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim};
339d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
340d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kimstruct msm_audio_bitstream_error_info {
341d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t dec_id;
342d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t err_msg_indicator;
343d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t err_type;
344d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim};
345d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
346d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kimunion msm_audio_event_payload {
347d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	struct msm_audio_aio_buf aio_buf;
348d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	struct msm_audio_bitstream_info stream_info;
349d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	struct msm_audio_bitstream_error_info error_info;
350d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	int reserved;
351d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim};
352d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
353d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kimstruct msm_audio_event {
354d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	int event_type;
355d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	int timeout_ms;
356d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	union msm_audio_event_payload event_payload;
357d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim};
358d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
359d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define MSM_SNDDEV_CAP_RX 0x1
360d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define MSM_SNDDEV_CAP_TX 0x2
361d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define MSM_SNDDEV_CAP_VOICE 0x4
362d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
363d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kimstruct msm_snd_device_info {
364d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t dev_id;
365d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t dev_cap; /* bitmask describe capability of device */
366d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	char dev_name[64];
367d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim};
368d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
369d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kimstruct msm_snd_device_list {
370d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t  num_dev; /* Indicate number of device info to be retrieved */
371d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	struct msm_snd_device_info *list;
372d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim};
373d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
374d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kimstruct msm_dtmf_config {
375d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint16_t path;
376d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint16_t dtmf_hi;
377d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint16_t dtmf_low;
378d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint16_t duration;
379d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint16_t tx_gain;
380d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint16_t rx_gain;
381d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint16_t mixing;
382d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim};
383d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
384d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_ROUTE_STREAM_VOICE_RX 0
385d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_ROUTE_STREAM_VOICE_TX 1
386d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_ROUTE_STREAM_PLAYBACK 2
387d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_ROUTE_STREAM_REC      3
388d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
389d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kimstruct msm_audio_route_config {
390d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t stream_type;
391d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t stream_id;
392d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t dev_id;
393d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim};
394d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
395d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#define AUDIO_MAX_EQ_BANDS 12
396d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
397d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kimstruct msm_audio_eq_band {
398d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint16_t     band_idx; /* The band index, 0 .. 11 */
399d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t     filter_type; /* Filter band type */
400d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t     center_freq_hz; /* Filter band center frequency */
401d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t     filter_gain; /* Filter band initial gain (dB) */
402d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim			/* Range is +12 dB to -12 dB with 1dB increments. */
403d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t     q_factor;
404d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim} __attribute__ ((packed));
405d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
406d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kimstruct msm_audio_eq_stream_config {
407d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t	enable; /* Number of consequtive bands specified */
408d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t	num_bands;
409d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	struct msm_audio_eq_band	eq_bands[AUDIO_MAX_EQ_BANDS];
410d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim} __attribute__ ((packed));
411d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
412d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kimstruct msm_acdb_cmd_device {
413d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t     command_id;
414d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t     device_id;
415d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t     network_id;
416d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t     sample_rate_id;      /* Actual sample rate value */
417d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t     interface_id;        /* See interface id's above */
418d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t     algorithm_block_id;  /* See enumerations above */
419d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t     total_bytes;         /* Length in bytes used by buffer */
420d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim	uint32_t     *phys_buf;           /* Physical Address of data */
421d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim};
422d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
423d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim
424d19c803a6e08b9845743f735897f5840f0dc2d80Devin Kim#endif
425