15d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* include/linux/msm_audio.h 25d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 35d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Copyright (C) 2008 Google, Inc. 45d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Copyright (c) 2012, 2014 The Linux Foundation. All rights reserved. 55d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 65d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * This software is licensed under the terms of the GNU General Public 75d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * License version 2, as published by the Free Software Foundation, and 85d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * may be copied, distributed, and modified under those terms. 95d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * This program is distributed in the hope that it will be useful, 115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * but WITHOUT ANY WARRANTY; without even the implied warranty of 125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * GNU General Public License for more details. 145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 17d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#ifndef _UAPI_LINUX_MSM_AUDIO_H 18d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define _UAPI_LINUX_MSM_AUDIO_H 195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#include <linux/types.h> 215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#include <linux/ioctl.h> 225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* PCM Audio */ 245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_IOCTL_MAGIC 'a' 265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_START _IOW(AUDIO_IOCTL_MAGIC, 0, unsigned) 285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_STOP _IOW(AUDIO_IOCTL_MAGIC, 1, unsigned) 295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_FLUSH _IOW(AUDIO_IOCTL_MAGIC, 2, unsigned) 305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_GET_CONFIG _IOR(AUDIO_IOCTL_MAGIC, 3, \ 315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_audio_config) 325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_SET_CONFIG _IOW(AUDIO_IOCTL_MAGIC, 4, \ 335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_audio_config) 345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_GET_STATS _IOR(AUDIO_IOCTL_MAGIC, 5, \ 355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_audio_stats) 365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_ENABLE_AUDPP _IOW(AUDIO_IOCTL_MAGIC, 6, unsigned) 375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_SET_ADRC _IOW(AUDIO_IOCTL_MAGIC, 7, unsigned) 385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_SET_EQ _IOW(AUDIO_IOCTL_MAGIC, 8, unsigned) 395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_SET_RX_IIR _IOW(AUDIO_IOCTL_MAGIC, 9, unsigned) 405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_SET_VOLUME _IOW(AUDIO_IOCTL_MAGIC, 10, unsigned) 415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_PAUSE _IOW(AUDIO_IOCTL_MAGIC, 11, unsigned) 425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_PLAY_DTMF _IOW(AUDIO_IOCTL_MAGIC, 12, unsigned) 435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_GET_EVENT _IOR(AUDIO_IOCTL_MAGIC, 13, \ 445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_audio_event) 455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_ABORT_GET_EVENT _IOW(AUDIO_IOCTL_MAGIC, 14, unsigned) 465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_REGISTER_PMEM _IOW(AUDIO_IOCTL_MAGIC, 15, unsigned) 475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_DEREGISTER_PMEM _IOW(AUDIO_IOCTL_MAGIC, 16, unsigned) 485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_ASYNC_WRITE _IOW(AUDIO_IOCTL_MAGIC, 17, \ 495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_audio_aio_buf) 505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_ASYNC_READ _IOW(AUDIO_IOCTL_MAGIC, 18, \ 515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_audio_aio_buf) 525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_SET_INCALL _IOW(AUDIO_IOCTL_MAGIC, 19, struct msm_voicerec_mode) 535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_GET_NUM_SND_DEVICE _IOR(AUDIO_IOCTL_MAGIC, 20, unsigned) 545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_GET_SND_DEVICES _IOWR(AUDIO_IOCTL_MAGIC, 21, \ 555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_snd_device_list) 565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_ENABLE_SND_DEVICE _IOW(AUDIO_IOCTL_MAGIC, 22, unsigned) 575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_DISABLE_SND_DEVICE _IOW(AUDIO_IOCTL_MAGIC, 23, unsigned) 585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_ROUTE_STREAM _IOW(AUDIO_IOCTL_MAGIC, 24, \ 595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_audio_route_config) 605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_GET_PCM_CONFIG _IOR(AUDIO_IOCTL_MAGIC, 30, unsigned) 615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_SET_PCM_CONFIG _IOW(AUDIO_IOCTL_MAGIC, 31, unsigned) 625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_SWITCH_DEVICE _IOW(AUDIO_IOCTL_MAGIC, 32, unsigned) 635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_SET_MUTE _IOW(AUDIO_IOCTL_MAGIC, 33, unsigned) 645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_UPDATE_ACDB _IOW(AUDIO_IOCTL_MAGIC, 34, unsigned) 655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_START_VOICE _IOW(AUDIO_IOCTL_MAGIC, 35, unsigned) 665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_STOP_VOICE _IOW(AUDIO_IOCTL_MAGIC, 36, unsigned) 675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_REINIT_ACDB _IOW(AUDIO_IOCTL_MAGIC, 39, unsigned) 685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_OUTPORT_FLUSH _IOW(AUDIO_IOCTL_MAGIC, 40, unsigned short) 695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_SET_ERR_THRESHOLD_VALUE _IOW(AUDIO_IOCTL_MAGIC, 41, \ 705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned short) 715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_GET_BITSTREAM_ERROR_INFO _IOR(AUDIO_IOCTL_MAGIC, 42, \ 725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_audio_bitstream_error_info) 735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_SET_SRS_TRUMEDIA_PARAM _IOW(AUDIO_IOCTL_MAGIC, 43, unsigned) 755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Qualcomm extensions */ 775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_SET_STREAM_CONFIG _IOW(AUDIO_IOCTL_MAGIC, 80, \ 785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_audio_stream_config) 795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_GET_STREAM_CONFIG _IOR(AUDIO_IOCTL_MAGIC, 81, \ 805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_audio_stream_config) 815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_GET_SESSION_ID _IOR(AUDIO_IOCTL_MAGIC, 82, unsigned short) 825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_GET_STREAM_INFO _IOR(AUDIO_IOCTL_MAGIC, 83, \ 835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_audio_bitstream_info) 845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_SET_PAN _IOW(AUDIO_IOCTL_MAGIC, 84, unsigned) 855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_SET_QCONCERT_PLUS _IOW(AUDIO_IOCTL_MAGIC, 85, unsigned) 865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_SET_MBADRC _IOW(AUDIO_IOCTL_MAGIC, 86, unsigned) 875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_SET_VOLUME_PATH _IOW(AUDIO_IOCTL_MAGIC, 87, \ 885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_vol_info) 895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_SET_MAX_VOL_ALL _IOW(AUDIO_IOCTL_MAGIC, 88, unsigned) 905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_ENABLE_AUDPRE _IOW(AUDIO_IOCTL_MAGIC, 89, unsigned) 915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_SET_AGC _IOW(AUDIO_IOCTL_MAGIC, 90, unsigned) 925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_SET_NS _IOW(AUDIO_IOCTL_MAGIC, 91, unsigned) 935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_SET_TX_IIR _IOW(AUDIO_IOCTL_MAGIC, 92, unsigned) 945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_GET_BUF_CFG _IOW(AUDIO_IOCTL_MAGIC, 93, \ 955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_audio_buf_cfg) 965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_SET_BUF_CFG _IOW(AUDIO_IOCTL_MAGIC, 94, \ 975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_audio_buf_cfg) 985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_SET_ACDB_BLK _IOW(AUDIO_IOCTL_MAGIC, 95, \ 995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_acdb_cmd_device) 1005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_GET_ACDB_BLK _IOW(AUDIO_IOCTL_MAGIC, 96, \ 1015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_acdb_cmd_device) 1025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_REGISTER_ION _IOW(AUDIO_IOCTL_MAGIC, 97, \ 1045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_audio_ion_info) 1055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_DEREGISTER_ION _IOW(AUDIO_IOCTL_MAGIC, 98, \ 1065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_audio_ion_info) 1075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_SET_EFFECTS_CONFIG _IOW(AUDIO_IOCTL_MAGIC, 99, \ 1085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_hwacc_effects_config) 1095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_EFFECTS_SET_BUF_LEN _IOW(AUDIO_IOCTL_MAGIC, 100, \ 1105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_hwacc_buf_cfg) 1115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_EFFECTS_GET_BUF_AVAIL _IOW(AUDIO_IOCTL_MAGIC, 101, \ 1125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_hwacc_buf_avail) 1135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_EFFECTS_WRITE _IOW(AUDIO_IOCTL_MAGIC, 102, void *) 1145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_EFFECTS_READ _IOWR(AUDIO_IOCTL_MAGIC, 103, void *) 1155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_EFFECTS_SET_PP_PARAMS _IOW(AUDIO_IOCTL_MAGIC, 104, void *) 1165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_PM_AWAKE _IOW(AUDIO_IOCTL_MAGIC, 105, unsigned) 1185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_PM_RELAX _IOW(AUDIO_IOCTL_MAGIC, 106, unsigned) 1195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_MAX_COMMON_IOCTL_NUM 107 1215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define HANDSET_MIC 0x01 1245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define HANDSET_SPKR 0x02 1255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define HEADSET_MIC 0x03 1265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define HEADSET_SPKR_MONO 0x04 1275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define HEADSET_SPKR_STEREO 0x05 1285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SPKR_PHONE_MIC 0x06 1295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SPKR_PHONE_MONO 0x07 1305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SPKR_PHONE_STEREO 0x08 1315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define BT_SCO_MIC 0x09 1325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define BT_SCO_SPKR 0x0A 1335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define BT_A2DP_SPKR 0x0B 1345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define TTY_HEADSET_MIC 0x0C 1355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define TTY_HEADSET_SPKR 0x0D 1365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Default devices are not supported in a */ 1385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* device switching context. Only supported */ 1395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* for stream devices. */ 1405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* DO NOT USE */ 1415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define DEFAULT_TX 0x0E 1425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define DEFAULT_RX 0x0F 1435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define BT_A2DP_TX 0x10 1455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define HEADSET_MONO_PLUS_SPKR_MONO_RX 0x11 1475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define HEADSET_MONO_PLUS_SPKR_STEREO_RX 0x12 1485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define HEADSET_STEREO_PLUS_SPKR_MONO_RX 0x13 1495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define HEADSET_STEREO_PLUS_SPKR_STEREO_RX 0x14 1505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define I2S_RX 0x20 1525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define I2S_TX 0x21 1535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ADRC_ENABLE 0x0001 1555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define EQUALIZER_ENABLE 0x0002 1565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define IIR_ENABLE 0x0004 1575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define QCONCERT_PLUS_ENABLE 0x0008 1585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MBADRC_ENABLE 0x0010 1595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SRS_ENABLE 0x0020 1605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SRS_DISABLE 0x0040 1615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AGC_ENABLE 0x0001 1635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define NS_ENABLE 0x0002 1645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define TX_IIR_ENABLE 0x0004 1655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define FLUENCE_ENABLE 0x0008 1665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VOC_REC_UPLINK 0x00 1685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VOC_REC_DOWNLINK 0x01 1695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VOC_REC_BOTH 0x02 1705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_audio_config { 1725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t buffer_size; 1735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t buffer_count; 1745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t channel_count; 1755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t sample_rate; 1765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t type; 1775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t meta_field; 1785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t bits; 1795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t unused[3]; 1805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_audio_stream_config { 1835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t buffer_size; 1845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t buffer_count; 1855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_audio_buf_cfg{ 1885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t meta_info_enable; 1895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t frames_per_buf; 1905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_audio_stats { 1935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t byte_count; 1945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t sample_count; 1955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t unused[2]; 1965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_audio_ion_info { 1995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int fd; 2005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin void *vaddr; 2015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_audio_pmem_info { 2045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int fd; 2055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin void *vaddr; 2065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_audio_aio_buf { 2095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin void *buf_addr; 2105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t buf_len; 2115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t data_len; 2125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin void *private_data; 2135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned short mfield_sz; /*only useful for data has meta field */ 2145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Audio routing */ 2175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SND_IOCTL_MAGIC 's' 2195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SND_MUTE_UNMUTED 0 2215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SND_MUTE_MUTED 1 2225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_mute_info { 2245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t mute; 2255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t path; 2265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vol_info { 2295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t vol; 2305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t path; 2315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_voicerec_mode { 2345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t rec_mode; 2355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_snd_device_config { 2385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t device; 2395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t ear_mute; 2405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t mic_mute; 2415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SND_SET_DEVICE _IOW(SND_IOCTL_MAGIC, 2, struct msm_device_config *) 2445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum cad_device_path_type { 2465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CAD_DEVICE_PATH_RX, /*For Decoding session*/ 2475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CAD_DEVICE_PATH_TX, /* For Encoding session*/ 2485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CAD_DEVICE_PATH_RX_TX, /* For Voice call */ 2495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CAD_DEVICE_PATH_LB, /* For loopback (FM Analog)*/ 2505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin CAD_DEVICE_PATH_MAX 2515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct cad_devices_type { 2545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t rx_device; 2555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t tx_device; 2565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum cad_device_path_type pathtype; 2575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_cad_device_config { 2605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct cad_devices_type device; 2615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t ear_mute; 2625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t mic_mute; 2635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAD_SET_DEVICE _IOW(SND_IOCTL_MAGIC, 2, struct msm_cad_device_config *) 2665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SND_METHOD_VOICE 0 2685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SND_METHOD_MIDI 4 2695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_snd_volume_config { 2715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t device; 2725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t method; 2735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t volume; 2745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SND_SET_VOLUME _IOW(SND_IOCTL_MAGIC, 3, struct msm_snd_volume_config *) 2775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_cad_volume_config { 2795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct cad_devices_type device; 2805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t method; 2815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t volume; 2825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAD_SET_VOLUME _IOW(SND_IOCTL_MAGIC, 3, struct msm_cad_volume_config *) 2855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Returns the number of SND endpoints supported. */ 2875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SND_GET_NUM_ENDPOINTS _IOR(SND_IOCTL_MAGIC, 4, unsigned *) 2895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_snd_endpoint { 2915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int id; /* input and output */ 2925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin char name[64]; /* output only */ 2935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Takes an index between 0 and one less than the number returned by 2965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * SND_GET_NUM_ENDPOINTS, and returns the SND index and name of a 2975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * SND endpoint. On input, the .id field contains the number of the 2985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * endpoint, and on exit it contains the SND index, while .name contains 2995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * the description of the endpoint. 3005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 3015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SND_GET_ENDPOINT _IOWR(SND_IOCTL_MAGIC, 5, struct msm_snd_endpoint *) 3035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SND_AVC_CTL _IOW(SND_IOCTL_MAGIC, 6, unsigned *) 3065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SND_AGC_CTL _IOW(SND_IOCTL_MAGIC, 7, unsigned *) 3075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*return the number of CAD endpoints supported. */ 3095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAD_GET_NUM_ENDPOINTS _IOR(SND_IOCTL_MAGIC, 4, unsigned *) 3115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_cad_endpoint { 3135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int id; /* input and output */ 3145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin char name[64]; /* output only */ 3155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 3165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Takes an index between 0 and one less than the number returned by 3185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * SND_GET_NUM_ENDPOINTS, and returns the CAD index and name of a 3195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * CAD endpoint. On input, the .id field contains the number of the 3205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * endpoint, and on exit it contains the SND index, while .name contains 3215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * the description of the endpoint. 3225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 3235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CAD_GET_ENDPOINT _IOWR(SND_IOCTL_MAGIC, 5, struct msm_cad_endpoint *) 3255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_audio_pcm_config { 3275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t pcm_feedback; /* 0 - disable > 0 - enable */ 3285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t buffer_count; /* Number of buffers to allocate */ 3295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t buffer_size; /* Size of buffer for capturing of 3305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin PCM samples */ 3315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 3325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_EVENT_SUSPEND 0 3345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_EVENT_RESUME 1 3355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_EVENT_WRITE_DONE 2 3365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_EVENT_READ_DONE 3 3375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_EVENT_STREAM_INFO 4 3385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_EVENT_BITSTREAM_ERROR_INFO 5 3395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_CODEC_TYPE_MP3 0 3415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_CODEC_TYPE_AAC 1 3425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_audio_bitstream_info { 3445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t codec_type; 3455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t chan_info; 3465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t sample_rate; 3475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t bit_stream_info; 3485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t bit_rate; 3495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t unused[3]; 3505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 3515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_audio_bitstream_error_info { 3535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t dec_id; 3545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t err_msg_indicator; 3555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t err_type; 3565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 3575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinunion msm_audio_event_payload { 3595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_audio_aio_buf aio_buf; 3605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_audio_bitstream_info stream_info; 3615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_audio_bitstream_error_info error_info; 3625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int reserved; 3635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 3645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_audio_event { 3665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int event_type; 3675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int timeout_ms; 3685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin union msm_audio_event_payload event_payload; 3695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 3705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_SNDDEV_CAP_RX 0x1 3725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_SNDDEV_CAP_TX 0x2 3735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_SNDDEV_CAP_VOICE 0x4 3745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_snd_device_info { 3765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t dev_id; 3775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t dev_cap; /* bitmask describe capability of device */ 3785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin char dev_name[64]; 3795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 3805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_snd_device_list { 3825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t num_dev; /* Indicate number of device info to be retrieved */ 3835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_snd_device_info *list; 3845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 3855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_dtmf_config { 3875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t path; 3885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t dtmf_hi; 3895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t dtmf_low; 3905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t duration; 3915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t tx_gain; 3925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t rx_gain; 3935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t mixing; 3945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 3955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_ROUTE_STREAM_VOICE_RX 0 3975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_ROUTE_STREAM_VOICE_TX 1 3985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_ROUTE_STREAM_PLAYBACK 2 3995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_ROUTE_STREAM_REC 3 4005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_audio_route_config { 4025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t stream_type; 4035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t stream_id; 4045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t dev_id; 4055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 4065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define AUDIO_MAX_EQ_BANDS 12 4085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_audio_eq_band { 4105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint16_t band_idx; /* The band index, 0 .. 11 */ 4115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t filter_type; /* Filter band type */ 4125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t center_freq_hz; /* Filter band center frequency */ 4135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t filter_gain; /* Filter band initial gain (dB) */ 4145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* Range is +12 dB to -12 dB with 1dB increments. */ 4155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t q_factor; 4165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin} __attribute__ ((packed)); 4175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_audio_eq_stream_config { 4195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t enable; /* Number of consequtive bands specified */ 4205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t num_bands; 4215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_audio_eq_band eq_bands[AUDIO_MAX_EQ_BANDS]; 4225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin} __attribute__ ((packed)); 4235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_acdb_cmd_device { 4255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t command_id; 4265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t device_id; 4275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t network_id; 4285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t sample_rate_id; /* Actual sample rate value */ 4295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t interface_id; /* See interface id's above */ 4305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t algorithm_block_id; /* See enumerations above */ 4315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t total_bytes; /* Length in bytes used by buffer */ 4325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t *phys_buf; /* Physical Address of data */ 4335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 4345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_hwacc_data_config { 4365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __u32 buf_size; 4375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __u32 num_buf; 4385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __u32 num_channels; 4395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __u8 channel_map[8]; 4405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __u32 sample_rate; 4415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __u32 bits_per_sample; 4425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 4435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_hwacc_buf_cfg { 4455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __u32 input_len; 4465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __u32 output_len; 4475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 4485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_hwacc_buf_avail { 4505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __u32 input_num_avail; 4515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __u32 output_num_avail; 4525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 4535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_hwacc_effects_config { 4555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_hwacc_data_config input; 4565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_hwacc_data_config output; 4575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct msm_hwacc_buf_cfg buf_cfg; 4585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __u32 meta_mode_enabled; 4595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __u32 overwrite_topology; 4605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __s32 topology; 4615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 4625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#endif 464