14d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* include/linux/msm_audio.h 24d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 34d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Copyright (C) 2008 Google, Inc. 44d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Copyright (c) 2012, 2014 The Linux Foundation. All rights reserved. 54d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 64d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * This software is licensed under the terms of the GNU General Public 74d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * License version 2, as published by the Free Software Foundation, and 84d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * may be copied, distributed, and modified under those terms. 94d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * This program is distributed in the hope that it will be useful, 114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * but WITHOUT ANY WARRANTY; without even the implied warranty of 124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * GNU General Public License for more details. 144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#ifndef _UAPI_LINUX_MSM_AUDIO_H 184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define _UAPI_LINUX_MSM_AUDIO_H 194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#include <linux/types.h> 214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#include <linux/ioctl.h> 224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* PCM Audio */ 244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_IOCTL_MAGIC 'a' 264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_START _IOW(AUDIO_IOCTL_MAGIC, 0, unsigned) 284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_STOP _IOW(AUDIO_IOCTL_MAGIC, 1, unsigned) 294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_FLUSH _IOW(AUDIO_IOCTL_MAGIC, 2, unsigned) 304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_GET_CONFIG _IOR(AUDIO_IOCTL_MAGIC, 3, \ 314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct msm_audio_config) 324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_SET_CONFIG _IOW(AUDIO_IOCTL_MAGIC, 4, \ 334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct msm_audio_config) 344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_GET_STATS _IOR(AUDIO_IOCTL_MAGIC, 5, \ 354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct msm_audio_stats) 364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_ENABLE_AUDPP _IOW(AUDIO_IOCTL_MAGIC, 6, unsigned) 374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_SET_ADRC _IOW(AUDIO_IOCTL_MAGIC, 7, unsigned) 384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_SET_EQ _IOW(AUDIO_IOCTL_MAGIC, 8, unsigned) 394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_SET_RX_IIR _IOW(AUDIO_IOCTL_MAGIC, 9, unsigned) 404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_SET_VOLUME _IOW(AUDIO_IOCTL_MAGIC, 10, unsigned) 414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_PAUSE _IOW(AUDIO_IOCTL_MAGIC, 11, unsigned) 424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_PLAY_DTMF _IOW(AUDIO_IOCTL_MAGIC, 12, unsigned) 434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_GET_EVENT _IOR(AUDIO_IOCTL_MAGIC, 13, \ 444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct msm_audio_event) 454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_ABORT_GET_EVENT _IOW(AUDIO_IOCTL_MAGIC, 14, unsigned) 464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_REGISTER_PMEM _IOW(AUDIO_IOCTL_MAGIC, 15, unsigned) 474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_DEREGISTER_PMEM _IOW(AUDIO_IOCTL_MAGIC, 16, unsigned) 484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_ASYNC_WRITE _IOW(AUDIO_IOCTL_MAGIC, 17, \ 494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct msm_audio_aio_buf) 504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_ASYNC_READ _IOW(AUDIO_IOCTL_MAGIC, 18, \ 514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct msm_audio_aio_buf) 524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_SET_INCALL _IOW(AUDIO_IOCTL_MAGIC, 19, struct msm_voicerec_mode) 534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_GET_NUM_SND_DEVICE _IOR(AUDIO_IOCTL_MAGIC, 20, unsigned) 544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_GET_SND_DEVICES _IOWR(AUDIO_IOCTL_MAGIC, 21, \ 554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct msm_snd_device_list) 564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_ENABLE_SND_DEVICE _IOW(AUDIO_IOCTL_MAGIC, 22, unsigned) 574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_DISABLE_SND_DEVICE _IOW(AUDIO_IOCTL_MAGIC, 23, unsigned) 584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_ROUTE_STREAM _IOW(AUDIO_IOCTL_MAGIC, 24, \ 594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct msm_audio_route_config) 604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_GET_PCM_CONFIG _IOR(AUDIO_IOCTL_MAGIC, 30, unsigned) 614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_SET_PCM_CONFIG _IOW(AUDIO_IOCTL_MAGIC, 31, unsigned) 624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_SWITCH_DEVICE _IOW(AUDIO_IOCTL_MAGIC, 32, unsigned) 634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_SET_MUTE _IOW(AUDIO_IOCTL_MAGIC, 33, unsigned) 644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_UPDATE_ACDB _IOW(AUDIO_IOCTL_MAGIC, 34, unsigned) 654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_START_VOICE _IOW(AUDIO_IOCTL_MAGIC, 35, unsigned) 664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_STOP_VOICE _IOW(AUDIO_IOCTL_MAGIC, 36, unsigned) 674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_REINIT_ACDB _IOW(AUDIO_IOCTL_MAGIC, 39, unsigned) 684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_OUTPORT_FLUSH _IOW(AUDIO_IOCTL_MAGIC, 40, unsigned short) 694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_SET_ERR_THRESHOLD_VALUE _IOW(AUDIO_IOCTL_MAGIC, 41, \ 704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin unsigned short) 714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_GET_BITSTREAM_ERROR_INFO _IOR(AUDIO_IOCTL_MAGIC, 42, \ 724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct msm_audio_bitstream_error_info) 734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_SET_SRS_TRUMEDIA_PARAM _IOW(AUDIO_IOCTL_MAGIC, 43, unsigned) 754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Qualcomm extensions */ 774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_SET_STREAM_CONFIG _IOW(AUDIO_IOCTL_MAGIC, 80, \ 784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct msm_audio_stream_config) 794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_GET_STREAM_CONFIG _IOR(AUDIO_IOCTL_MAGIC, 81, \ 804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct msm_audio_stream_config) 814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_GET_SESSION_ID _IOR(AUDIO_IOCTL_MAGIC, 82, unsigned short) 824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_GET_STREAM_INFO _IOR(AUDIO_IOCTL_MAGIC, 83, \ 834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct msm_audio_bitstream_info) 844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_SET_PAN _IOW(AUDIO_IOCTL_MAGIC, 84, unsigned) 854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_SET_QCONCERT_PLUS _IOW(AUDIO_IOCTL_MAGIC, 85, unsigned) 864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_SET_MBADRC _IOW(AUDIO_IOCTL_MAGIC, 86, unsigned) 874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_SET_VOLUME_PATH _IOW(AUDIO_IOCTL_MAGIC, 87, \ 884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct msm_vol_info) 894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_SET_MAX_VOL_ALL _IOW(AUDIO_IOCTL_MAGIC, 88, unsigned) 904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_ENABLE_AUDPRE _IOW(AUDIO_IOCTL_MAGIC, 89, unsigned) 914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_SET_AGC _IOW(AUDIO_IOCTL_MAGIC, 90, unsigned) 924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_SET_NS _IOW(AUDIO_IOCTL_MAGIC, 91, unsigned) 934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_SET_TX_IIR _IOW(AUDIO_IOCTL_MAGIC, 92, unsigned) 944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_GET_BUF_CFG _IOW(AUDIO_IOCTL_MAGIC, 93, \ 954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct msm_audio_buf_cfg) 964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_SET_BUF_CFG _IOW(AUDIO_IOCTL_MAGIC, 94, \ 974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct msm_audio_buf_cfg) 984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_SET_ACDB_BLK _IOW(AUDIO_IOCTL_MAGIC, 95, \ 994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct msm_acdb_cmd_device) 1004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_GET_ACDB_BLK _IOW(AUDIO_IOCTL_MAGIC, 96, \ 1014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct msm_acdb_cmd_device) 1024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 1034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_REGISTER_ION _IOW(AUDIO_IOCTL_MAGIC, 97, \ 1044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct msm_audio_ion_info) 1054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_DEREGISTER_ION _IOW(AUDIO_IOCTL_MAGIC, 98, \ 1064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct msm_audio_ion_info) 1074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_SET_EFFECTS_CONFIG _IOW(AUDIO_IOCTL_MAGIC, 99, \ 1084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct msm_hwacc_effects_config) 1094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_EFFECTS_SET_BUF_LEN _IOW(AUDIO_IOCTL_MAGIC, 100, \ 1104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct msm_hwacc_buf_cfg) 1114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_EFFECTS_GET_BUF_AVAIL _IOW(AUDIO_IOCTL_MAGIC, 101, \ 1124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct msm_hwacc_buf_avail) 1134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_EFFECTS_WRITE _IOW(AUDIO_IOCTL_MAGIC, 102, void *) 1144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_EFFECTS_READ _IOWR(AUDIO_IOCTL_MAGIC, 103, void *) 1154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_EFFECTS_SET_PP_PARAMS _IOW(AUDIO_IOCTL_MAGIC, 104, void *) 1164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 1174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_MAX_COMMON_IOCTL_NUM 105 1184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 1194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 1204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define HANDSET_MIC 0x01 1214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define HANDSET_SPKR 0x02 1224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define HEADSET_MIC 0x03 1234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define HEADSET_SPKR_MONO 0x04 1244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define HEADSET_SPKR_STEREO 0x05 1254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define SPKR_PHONE_MIC 0x06 1264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define SPKR_PHONE_MONO 0x07 1274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define SPKR_PHONE_STEREO 0x08 1284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define BT_SCO_MIC 0x09 1294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define BT_SCO_SPKR 0x0A 1304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define BT_A2DP_SPKR 0x0B 1314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define TTY_HEADSET_MIC 0x0C 1324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define TTY_HEADSET_SPKR 0x0D 1334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 1344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Default devices are not supported in a */ 1354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* device switching context. Only supported */ 1364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* for stream devices. */ 1374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* DO NOT USE */ 1384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define DEFAULT_TX 0x0E 1394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define DEFAULT_RX 0x0F 1404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 1414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define BT_A2DP_TX 0x10 1424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 1434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define HEADSET_MONO_PLUS_SPKR_MONO_RX 0x11 1444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define HEADSET_MONO_PLUS_SPKR_STEREO_RX 0x12 1454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define HEADSET_STEREO_PLUS_SPKR_MONO_RX 0x13 1464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define HEADSET_STEREO_PLUS_SPKR_STEREO_RX 0x14 1474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 1484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define I2S_RX 0x20 1494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define I2S_TX 0x21 1504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 1514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define ADRC_ENABLE 0x0001 1524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQUALIZER_ENABLE 0x0002 1534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define IIR_ENABLE 0x0004 1544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define QCONCERT_PLUS_ENABLE 0x0008 1554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define MBADRC_ENABLE 0x0010 1564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define SRS_ENABLE 0x0020 1574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define SRS_DISABLE 0x0040 1584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 1594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AGC_ENABLE 0x0001 1604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define NS_ENABLE 0x0002 1614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define TX_IIR_ENABLE 0x0004 1624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define FLUENCE_ENABLE 0x0008 1634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 1644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VOC_REC_UPLINK 0x00 1654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VOC_REC_DOWNLINK 0x01 1664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VOC_REC_BOTH 0x02 1674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 1684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct msm_audio_config { 1694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t buffer_size; 1704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t buffer_count; 1714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t channel_count; 1724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t sample_rate; 1734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t type; 1744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t meta_field; 1754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t bits; 1764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t unused[3]; 1774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 1784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 1794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct msm_audio_stream_config { 1804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t buffer_size; 1814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t buffer_count; 1824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 1834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 1844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct msm_audio_buf_cfg{ 1854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t meta_info_enable; 1864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t frames_per_buf; 1874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 1884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 1894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct msm_audio_stats { 1904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t byte_count; 1914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t sample_count; 1924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t unused[2]; 1934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 1944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 1954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct msm_audio_ion_info { 1964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin int fd; 1974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin void *vaddr; 1984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 1994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 2004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct msm_audio_pmem_info { 2014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin int fd; 2024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin void *vaddr; 2034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 2044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 2054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct msm_audio_aio_buf { 2064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin void *buf_addr; 2074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t buf_len; 2084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t data_len; 2094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin void *private_data; 2104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin unsigned short mfield_sz; /*only useful for data has meta field */ 2114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 2124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 2134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Audio routing */ 2144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 2154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define SND_IOCTL_MAGIC 's' 2164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 2174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define SND_MUTE_UNMUTED 0 2184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define SND_MUTE_MUTED 1 2194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 2204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct msm_mute_info { 2214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t mute; 2224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t path; 2234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 2244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 2254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct msm_vol_info { 2264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t vol; 2274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t path; 2284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 2294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 2304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct msm_voicerec_mode { 2314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t rec_mode; 2324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 2334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 2344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct msm_snd_device_config { 2354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t device; 2364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t ear_mute; 2374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t mic_mute; 2384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 2394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 2404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define SND_SET_DEVICE _IOW(SND_IOCTL_MAGIC, 2, struct msm_device_config *) 2414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 2424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinenum cad_device_path_type { 2434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin CAD_DEVICE_PATH_RX, /*For Decoding session*/ 2444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin CAD_DEVICE_PATH_TX, /* For Encoding session*/ 2454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin CAD_DEVICE_PATH_RX_TX, /* For Voice call */ 2464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin CAD_DEVICE_PATH_LB, /* For loopback (FM Analog)*/ 2474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin CAD_DEVICE_PATH_MAX 2484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 2494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 2504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct cad_devices_type { 2514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t rx_device; 2524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t tx_device; 2534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin enum cad_device_path_type pathtype; 2544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 2554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 2564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct msm_cad_device_config { 2574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct cad_devices_type device; 2584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t ear_mute; 2594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t mic_mute; 2604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 2614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 2624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define CAD_SET_DEVICE _IOW(SND_IOCTL_MAGIC, 2, struct msm_cad_device_config *) 2634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 2644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define SND_METHOD_VOICE 0 2654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define SND_METHOD_MIDI 4 2664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 2674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct msm_snd_volume_config { 2684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t device; 2694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t method; 2704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t volume; 2714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 2724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 2734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define SND_SET_VOLUME _IOW(SND_IOCTL_MAGIC, 3, struct msm_snd_volume_config *) 2744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 2754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct msm_cad_volume_config { 2764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct cad_devices_type device; 2774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t method; 2784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t volume; 2794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 2804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 2814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define CAD_SET_VOLUME _IOW(SND_IOCTL_MAGIC, 3, struct msm_cad_volume_config *) 2824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 2834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Returns the number of SND endpoints supported. */ 2844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 2854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define SND_GET_NUM_ENDPOINTS _IOR(SND_IOCTL_MAGIC, 4, unsigned *) 2864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 2874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct msm_snd_endpoint { 2884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin int id; /* input and output */ 2894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin char name[64]; /* output only */ 2904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 2914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 2924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Takes an index between 0 and one less than the number returned by 2934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * SND_GET_NUM_ENDPOINTS, and returns the SND index and name of a 2944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * SND endpoint. On input, the .id field contains the number of the 2954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * endpoint, and on exit it contains the SND index, while .name contains 2964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * the description of the endpoint. 2974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 2984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 2994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define SND_GET_ENDPOINT _IOWR(SND_IOCTL_MAGIC, 5, struct msm_snd_endpoint *) 3004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define SND_AVC_CTL _IOW(SND_IOCTL_MAGIC, 6, unsigned *) 3034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define SND_AGC_CTL _IOW(SND_IOCTL_MAGIC, 7, unsigned *) 3044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*return the number of CAD endpoints supported. */ 3064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define CAD_GET_NUM_ENDPOINTS _IOR(SND_IOCTL_MAGIC, 4, unsigned *) 3084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct msm_cad_endpoint { 3104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin int id; /* input and output */ 3114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin char name[64]; /* output only */ 3124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 3134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Takes an index between 0 and one less than the number returned by 3154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * SND_GET_NUM_ENDPOINTS, and returns the CAD index and name of a 3164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * CAD endpoint. On input, the .id field contains the number of the 3174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * endpoint, and on exit it contains the SND index, while .name contains 3184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * the description of the endpoint. 3194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 3204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define CAD_GET_ENDPOINT _IOWR(SND_IOCTL_MAGIC, 5, struct msm_cad_endpoint *) 3224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct msm_audio_pcm_config { 3244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t pcm_feedback; /* 0 - disable > 0 - enable */ 3254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t buffer_count; /* Number of buffers to allocate */ 3264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t buffer_size; /* Size of buffer for capturing of 3274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin PCM samples */ 3284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 3294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_EVENT_SUSPEND 0 3314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_EVENT_RESUME 1 3324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_EVENT_WRITE_DONE 2 3334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_EVENT_READ_DONE 3 3344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_EVENT_STREAM_INFO 4 3354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_EVENT_BITSTREAM_ERROR_INFO 5 3364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_CODEC_TYPE_MP3 0 3384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_CODEC_TYPE_AAC 1 3394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct msm_audio_bitstream_info { 3414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t codec_type; 3424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t chan_info; 3434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t sample_rate; 3444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t bit_stream_info; 3454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t bit_rate; 3464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t unused[3]; 3474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 3484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct msm_audio_bitstream_error_info { 3504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t dec_id; 3514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t err_msg_indicator; 3524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t err_type; 3534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 3544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinunion msm_audio_event_payload { 3564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct msm_audio_aio_buf aio_buf; 3574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct msm_audio_bitstream_info stream_info; 3584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct msm_audio_bitstream_error_info error_info; 3594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin int reserved; 3604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 3614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct msm_audio_event { 3634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin int event_type; 3644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin int timeout_ms; 3654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin union msm_audio_event_payload event_payload; 3664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 3674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define MSM_SNDDEV_CAP_RX 0x1 3694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define MSM_SNDDEV_CAP_TX 0x2 3704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define MSM_SNDDEV_CAP_VOICE 0x4 3714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct msm_snd_device_info { 3734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t dev_id; 3744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t dev_cap; /* bitmask describe capability of device */ 3754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin char dev_name[64]; 3764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 3774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct msm_snd_device_list { 3794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t num_dev; /* Indicate number of device info to be retrieved */ 3804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct msm_snd_device_info *list; 3814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 3824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct msm_dtmf_config { 3844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint16_t path; 3854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint16_t dtmf_hi; 3864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint16_t dtmf_low; 3874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint16_t duration; 3884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint16_t tx_gain; 3894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint16_t rx_gain; 3904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint16_t mixing; 3914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 3924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_ROUTE_STREAM_VOICE_RX 0 3944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_ROUTE_STREAM_VOICE_TX 1 3954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_ROUTE_STREAM_PLAYBACK 2 3964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_ROUTE_STREAM_REC 3 3974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct msm_audio_route_config { 3994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t stream_type; 4004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t stream_id; 4014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t dev_id; 4024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 4034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 4044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define AUDIO_MAX_EQ_BANDS 12 4054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 4064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct msm_audio_eq_band { 4074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint16_t band_idx; /* The band index, 0 .. 11 */ 4084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t filter_type; /* Filter band type */ 4094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t center_freq_hz; /* Filter band center frequency */ 4104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t filter_gain; /* Filter band initial gain (dB) */ 4114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin /* Range is +12 dB to -12 dB with 1dB increments. */ 4124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t q_factor; 4134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} __attribute__ ((packed)); 4144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 4154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct msm_audio_eq_stream_config { 4164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t enable; /* Number of consequtive bands specified */ 4174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t num_bands; 4184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct msm_audio_eq_band eq_bands[AUDIO_MAX_EQ_BANDS]; 4194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} __attribute__ ((packed)); 4204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 4214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct msm_acdb_cmd_device { 4224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t command_id; 4234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t device_id; 4244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t network_id; 4254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t sample_rate_id; /* Actual sample rate value */ 4264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t interface_id; /* See interface id's above */ 4274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t algorithm_block_id; /* See enumerations above */ 4284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t total_bytes; /* Length in bytes used by buffer */ 4294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uint32_t *phys_buf; /* Physical Address of data */ 4304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 4314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 4324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct msm_hwacc_data_config { 4334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 buf_size; 4344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 num_buf; 4354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 num_channels; 4364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u8 channel_map[8]; 4374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 sample_rate; 4384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 bits_per_sample; 4394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 4404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 4414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct msm_hwacc_buf_cfg { 4424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 input_len; 4434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 output_len; 4444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 4454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 4464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct msm_hwacc_buf_avail { 4474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 input_num_avail; 4484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 output_num_avail; 4494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 4504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 4514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct msm_hwacc_effects_config { 4524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct msm_hwacc_data_config input; 4534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct msm_hwacc_data_config output; 4544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin struct msm_hwacc_buf_cfg buf_cfg; 4554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 meta_mode_enabled; 4564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __u32 overwrite_topology; 4574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin __s32 topology; 4584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 4594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 4604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#endif 461