1 /* 2 * Copyright (c) 2013-2015, The Linux Foundation. All rights reserved. 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License version 2 and 6 * only version 2 as published by the Free Software Foundation. 7 * 8 * This program is distributed in the hope that it will be useful, 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * GNU General Public License for more details. 12 */ 13 14 #ifndef _AUDIO_EFFECTS_H 15 #define _AUDIO_EFFECTS_H 16 17 /** AUDIO EFFECTS **/ 18 19 20 /* CONFIG GET/SET */ 21 #define CONFIG_CACHE 0 22 #define CONFIG_SET 1 23 #define CONFIG_GET 2 24 25 /* CONFIG HEADER */ 26 /* 27 28 MODULE_ID, 29 DEVICE, 30 NUM_COMMANDS, 31 COMMAND_ID_1, 32 CONFIG_CACHE/SET/GET, 33 OFFSET_1, 34 LENGTH_1, 35 VALUES_1, 36 ..., 37 ..., 38 COMMAND_ID_2, 39 CONFIG_CACHE/SET/GET, 40 OFFSET_2, 41 LENGTH_2, 42 VALUES_2, 43 ..., 44 ..., 45 COMMAND_ID_3, 46 ... 47 */ 48 49 50 /* CONFIG PARAM IDs */ 51 #define VIRTUALIZER_MODULE 0x00001000 52 #define VIRTUALIZER_ENABLE 0x00001001 53 #define VIRTUALIZER_STRENGTH 0x00001002 54 #define VIRTUALIZER_OUT_TYPE 0x00001003 55 #define VIRTUALIZER_GAIN_ADJUST 0x00001004 56 #define VIRTUALIZER_ENABLE_PARAM_LEN 1 57 #define VIRTUALIZER_STRENGTH_PARAM_LEN 1 58 #define VIRTUALIZER_OUT_TYPE_PARAM_LEN 1 59 #define VIRTUALIZER_GAIN_ADJUST_PARAM_LEN 1 60 61 #define REVERB_MODULE 0x00002000 62 #define REVERB_ENABLE 0x00002001 63 #define REVERB_MODE 0x00002002 64 #define REVERB_PRESET 0x00002003 65 #define REVERB_WET_MIX 0x00002004 66 #define REVERB_GAIN_ADJUST 0x00002005 67 #define REVERB_ROOM_LEVEL 0x00002006 68 #define REVERB_ROOM_HF_LEVEL 0x00002007 69 #define REVERB_DECAY_TIME 0x00002008 70 #define REVERB_DECAY_HF_RATIO 0x00002009 71 #define REVERB_REFLECTIONS_LEVEL 0x0000200a 72 #define REVERB_REFLECTIONS_DELAY 0x0000200b 73 #define REVERB_LEVEL 0x0000200c 74 #define REVERB_DELAY 0x0000200d 75 #define REVERB_DIFFUSION 0x0000200e 76 #define REVERB_DENSITY 0x0000200f 77 #define REVERB_ENABLE_PARAM_LEN 1 78 #define REVERB_MODE_PARAM_LEN 1 79 #define REVERB_PRESET_PARAM_LEN 1 80 #define REVERB_WET_MIX_PARAM_LEN 1 81 #define REVERB_GAIN_ADJUST_PARAM_LEN 1 82 #define REVERB_ROOM_LEVEL_PARAM_LEN 1 83 #define REVERB_ROOM_HF_LEVEL_PARAM_LEN 1 84 #define REVERB_DECAY_TIME_PARAM_LEN 1 85 #define REVERB_DECAY_HF_RATIO_PARAM_LEN 1 86 #define REVERB_REFLECTIONS_LEVEL_PARAM_LEN 1 87 #define REVERB_REFLECTIONS_DELAY_PARAM_LEN 1 88 #define REVERB_LEVEL_PARAM_LEN 1 89 #define REVERB_DELAY_PARAM_LEN 1 90 #define REVERB_DIFFUSION_PARAM_LEN 1 91 #define REVERB_DENSITY_PARAM_LEN 1 92 93 #define BASS_BOOST_MODULE 0x00003000 94 #define BASS_BOOST_ENABLE 0x00003001 95 #define BASS_BOOST_MODE 0x00003002 96 #define BASS_BOOST_STRENGTH 0x00003003 97 #define BASS_BOOST_ENABLE_PARAM_LEN 1 98 #define BASS_BOOST_MODE_PARAM_LEN 1 99 #define BASS_BOOST_STRENGTH_PARAM_LEN 1 100 101 #define EQ_MODULE 0x00004000 102 #define EQ_ENABLE 0x00004001 103 #define EQ_CONFIG 0x00004002 104 #define EQ_NUM_BANDS 0x00004003 105 #define EQ_BAND_LEVELS 0x00004004 106 #define EQ_BAND_LEVEL_RANGE 0x00004005 107 #define EQ_BAND_FREQS 0x00004006 108 #define EQ_SINGLE_BAND_FREQ_RANGE 0x00004007 109 #define EQ_SINGLE_BAND_FREQ 0x00004008 110 #define EQ_BAND_INDEX 0x00004009 111 #define EQ_PRESET_ID 0x0000400a 112 #define EQ_NUM_PRESETS 0x0000400b 113 #define EQ_PRESET_NAME 0x0000400c 114 #define EQ_ENABLE_PARAM_LEN 1 115 #define EQ_CONFIG_PARAM_LEN 3 116 #define EQ_CONFIG_PER_BAND_PARAM_LEN 5 117 #define EQ_NUM_BANDS_PARAM_LEN 1 118 #define EQ_BAND_LEVELS_PARAM_LEN 13 119 #define EQ_BAND_LEVEL_RANGE_PARAM_LEN 2 120 #define EQ_BAND_FREQS_PARAM_LEN 13 121 #define EQ_SINGLE_BAND_FREQ_RANGE_PARAM_LEN 2 122 #define EQ_SINGLE_BAND_FREQ_PARAM_LEN 1 123 #define EQ_BAND_INDEX_PARAM_LEN 1 124 #define EQ_PRESET_ID_PARAM_LEN 1 125 #define EQ_NUM_PRESETS_PARAM_LEN 1 126 #define EQ_PRESET_NAME_PARAM_LEN 32 127 128 #define EQ_TYPE_NONE 0 129 #define EQ_BASS_BOOST 1 130 #define EQ_BASS_CUT 2 131 #define EQ_TREBLE_BOOST 3 132 #define EQ_TREBLE_CUT 4 133 #define EQ_BAND_BOOST 5 134 #define EQ_BAND_CUT 6 135 136 #define SOFT_VOLUME_MODULE 0x00006000 137 #define SOFT_VOLUME_ENABLE 0x00006001 138 #define SOFT_VOLUME_GAIN_2CH 0x00006002 139 #define SOFT_VOLUME_GAIN_MASTER 0x00006003 140 #define SOFT_VOLUME_ENABLE_PARAM_LEN 1 141 #define SOFT_VOLUME_GAIN_2CH_PARAM_LEN 2 142 #define SOFT_VOLUME_GAIN_MASTER_PARAM_LEN 1 143 144 #define SOFT_VOLUME2_MODULE 0x00007000 145 #define SOFT_VOLUME2_ENABLE 0x00007001 146 #define SOFT_VOLUME2_GAIN_2CH 0x00007002 147 #define SOFT_VOLUME2_GAIN_MASTER 0x00007003 148 #define SOFT_VOLUME2_ENABLE_PARAM_LEN SOFT_VOLUME_ENABLE_PARAM_LEN 149 #define SOFT_VOLUME2_GAIN_2CH_PARAM_LEN SOFT_VOLUME_GAIN_2CH_PARAM_LEN 150 #define SOFT_VOLUME2_GAIN_MASTER_PARAM_LEN \ 151 SOFT_VOLUME_GAIN_MASTER_PARAM_LEN 152 153 #define PBE_CONF_MODULE_ID 0x00010C2A 154 #define PBE_CONF_PARAM_ID 0x00010C49 155 156 #define PBE_MODULE 0x00008000 157 #define PBE_ENABLE 0x00008001 158 #define PBE_CONFIG 0x00008002 159 #define PBE_ENABLE_PARAM_LEN 1 160 #define PBE_CONFIG_PARAM_LEN 28 161 162 #define COMMAND_PAYLOAD_LEN 3 163 #define COMMAND_PAYLOAD_SZ (COMMAND_PAYLOAD_LEN * sizeof(uint32_t)) 164 #define MAX_INBAND_PARAM_SZ 4096 165 #define Q27_UNITY (1 << 27) 166 #define Q8_UNITY (1 << 8) 167 #define CUSTOM_OPENSL_PRESET 18 168 169 #define VIRTUALIZER_ENABLE_PARAM_SZ \ 170 (VIRTUALIZER_ENABLE_PARAM_LEN*sizeof(uint32_t)) 171 #define VIRTUALIZER_STRENGTH_PARAM_SZ \ 172 (VIRTUALIZER_STRENGTH_PARAM_LEN*sizeof(uint32_t)) 173 #define VIRTUALIZER_OUT_TYPE_PARAM_SZ \ 174 (VIRTUALIZER_OUT_TYPE_PARAM_LEN*sizeof(uint32_t)) 175 #define VIRTUALIZER_GAIN_ADJUST_PARAM_SZ \ 176 (VIRTUALIZER_GAIN_ADJUST_PARAM_LEN*sizeof(uint32_t)) 177 struct virtualizer_params { 178 uint32_t device; 179 uint32_t enable_flag; 180 uint32_t strength; 181 uint32_t out_type; 182 int32_t gain_adjust; 183 }; 184 185 #define NUM_OSL_REVERB_PRESETS_SUPPORTED 6 186 #define REVERB_ENABLE_PARAM_SZ \ 187 (REVERB_ENABLE_PARAM_LEN*sizeof(uint32_t)) 188 #define REVERB_MODE_PARAM_SZ \ 189 (REVERB_MODE_PARAM_LEN*sizeof(uint32_t)) 190 #define REVERB_PRESET_PARAM_SZ \ 191 (REVERB_PRESET_PARAM_LEN*sizeof(uint32_t)) 192 #define REVERB_WET_MIX_PARAM_SZ \ 193 (REVERB_WET_MIX_PARAM_LEN*sizeof(uint32_t)) 194 #define REVERB_GAIN_ADJUST_PARAM_SZ \ 195 (REVERB_GAIN_ADJUST_PARAM_LEN*sizeof(uint32_t)) 196 #define REVERB_ROOM_LEVEL_PARAM_SZ \ 197 (REVERB_ROOM_LEVEL_PARAM_LEN*sizeof(uint32_t)) 198 #define REVERB_ROOM_HF_LEVEL_PARAM_SZ \ 199 (REVERB_ROOM_HF_LEVEL_PARAM_LEN*sizeof(uint32_t)) 200 #define REVERB_DECAY_TIME_PARAM_SZ \ 201 (REVERB_DECAY_TIME_PARAM_LEN*sizeof(uint32_t)) 202 #define REVERB_DECAY_HF_RATIO_PARAM_SZ \ 203 (REVERB_DECAY_HF_RATIO_PARAM_LEN*sizeof(uint32_t)) 204 #define REVERB_REFLECTIONS_LEVEL_PARAM_SZ \ 205 (REVERB_REFLECTIONS_LEVEL_PARAM_LEN*sizeof(uint32_t)) 206 #define REVERB_REFLECTIONS_DELAY_PARAM_SZ \ 207 (REVERB_REFLECTIONS_DELAY_PARAM_LEN*sizeof(uint32_t)) 208 #define REVERB_LEVEL_PARAM_SZ \ 209 (REVERB_LEVEL_PARAM_LEN*sizeof(uint32_t)) 210 #define REVERB_DELAY_PARAM_SZ \ 211 (REVERB_DELAY_PARAM_LEN*sizeof(uint32_t)) 212 #define REVERB_DIFFUSION_PARAM_SZ \ 213 (REVERB_DIFFUSION_PARAM_LEN*sizeof(uint32_t)) 214 #define REVERB_DENSITY_PARAM_SZ \ 215 (REVERB_DENSITY_PARAM_LEN*sizeof(uint32_t)) 216 struct reverb_params { 217 uint32_t device; 218 uint32_t enable_flag; 219 uint32_t mode; 220 uint32_t preset; 221 uint32_t wet_mix; 222 int32_t gain_adjust; 223 int32_t room_level; 224 int32_t room_hf_level; 225 uint32_t decay_time; 226 uint32_t decay_hf_ratio; 227 int32_t reflections_level; 228 uint32_t reflections_delay; 229 int32_t level; 230 uint32_t delay; 231 uint32_t diffusion; 232 uint32_t density; 233 }; 234 235 #define BASS_BOOST_ENABLE_PARAM_SZ \ 236 (BASS_BOOST_ENABLE_PARAM_LEN*sizeof(uint32_t)) 237 #define BASS_BOOST_MODE_PARAM_SZ \ 238 (BASS_BOOST_MODE_PARAM_LEN*sizeof(uint32_t)) 239 #define BASS_BOOST_STRENGTH_PARAM_SZ \ 240 (BASS_BOOST_STRENGTH_PARAM_LEN*sizeof(uint32_t)) 241 struct bass_boost_params { 242 uint32_t device; 243 uint32_t enable_flag; 244 uint32_t mode; 245 uint32_t strength; 246 }; 247 248 249 #define MAX_EQ_BANDS 12 250 #define MAX_OSL_EQ_BANDS 5 251 #define EQ_ENABLE_PARAM_SZ \ 252 (EQ_ENABLE_PARAM_LEN*sizeof(uint32_t)) 253 #define EQ_CONFIG_PARAM_SZ \ 254 (EQ_CONFIG_PARAM_LEN*sizeof(uint32_t)) 255 #define EQ_CONFIG_PER_BAND_PARAM_SZ \ 256 (EQ_CONFIG_PER_BAND_PARAM_LEN*sizeof(uint32_t)) 257 #define EQ_CONFIG_PARAM_MAX_LEN (EQ_CONFIG_PARAM_LEN+\ 258 MAX_EQ_BANDS*EQ_CONFIG_PER_BAND_PARAM_LEN) 259 #define EQ_CONFIG_PARAM_MAX_SZ \ 260 (EQ_CONFIG_PARAM_MAX_LEN*sizeof(uint32_t)) 261 #define EQ_NUM_BANDS_PARAM_SZ \ 262 (EQ_NUM_BANDS_PARAM_LEN*sizeof(uint32_t)) 263 #define EQ_BAND_LEVELS_PARAM_SZ \ 264 (EQ_BAND_LEVELS_PARAM_LEN*sizeof(uint32_t)) 265 #define EQ_BAND_LEVEL_RANGE_PARAM_SZ \ 266 (EQ_BAND_LEVEL_RANGE_PARAM_LEN*sizeof(uint32_t)) 267 #define EQ_BAND_FREQS_PARAM_SZ \ 268 (EQ_BAND_FREQS_PARAM_LEN*sizeof(uint32_t)) 269 #define EQ_SINGLE_BAND_FREQ_RANGE_PARAM_SZ \ 270 (EQ_SINGLE_BAND_FREQ_RANGE_PARAM_LEN*sizeof(uint32_t)) 271 #define EQ_SINGLE_BAND_FREQ_PARAM_SZ \ 272 (EQ_SINGLE_BAND_FREQ_PARAM_LEN*sizeof(uint32_t)) 273 #define EQ_BAND_INDEX_PARAM_SZ \ 274 (EQ_BAND_INDEX_PARAM_LEN*sizeof(uint32_t)) 275 #define EQ_PRESET_ID_PARAM_SZ \ 276 (EQ_PRESET_ID_PARAM_LEN*sizeof(uint32_t)) 277 #define EQ_NUM_PRESETS_PARAM_SZ \ 278 (EQ_NUM_PRESETS_PARAM_LEN*sizeof(uint8_t)) 279 struct eq_config_t { 280 int32_t eq_pregain; 281 int32_t preset_id; 282 uint32_t num_bands; 283 }; 284 struct eq_per_band_config_t { 285 int32_t band_idx; 286 uint32_t filter_type; 287 uint32_t freq_millihertz; 288 int32_t gain_millibels; 289 uint32_t quality_factor; 290 }; 291 struct eq_per_band_freq_range_t { 292 uint32_t band_index; 293 uint32_t min_freq_millihertz; 294 uint32_t max_freq_millihertz; 295 }; 296 297 struct eq_params { 298 uint32_t device; 299 uint32_t enable_flag; 300 struct eq_config_t config; 301 struct eq_per_band_config_t per_band_cfg[MAX_EQ_BANDS]; 302 struct eq_per_band_freq_range_t per_band_freq_range[MAX_EQ_BANDS]; 303 uint32_t band_index; 304 uint32_t freq_millihertz; 305 }; 306 307 #define PBE_ENABLE_PARAM_SZ \ 308 (PBE_ENABLE_PARAM_LEN*sizeof(uint32_t)) 309 #define PBE_CONFIG_PARAM_SZ \ 310 (PBE_CONFIG_PARAM_LEN*sizeof(uint16_t)) 311 struct pbe_config_t { 312 int16_t real_bass_mix; 313 int16_t bass_color_control; 314 uint16_t main_chain_delay; 315 uint16_t xover_filter_order; 316 uint16_t bandpass_filter_order; 317 int16_t drc_delay; 318 uint16_t rms_tav; 319 int16_t exp_threshold; 320 uint16_t exp_slope; 321 int16_t comp_threshold; 322 uint16_t comp_slope; 323 uint16_t makeup_gain; 324 uint32_t comp_attack; 325 uint32_t comp_release; 326 uint32_t exp_attack; 327 uint32_t exp_release; 328 int16_t limiter_bass_threshold; 329 int16_t limiter_high_threshold; 330 int16_t limiter_bass_makeup_gain; 331 int16_t limiter_high_makeup_gain; 332 int16_t limiter_bass_gc; 333 int16_t limiter_high_gc; 334 int16_t limiter_delay; 335 uint16_t reserved; 336 /* place holder for filter coeffs to be followed */ 337 int32_t p1LowPassCoeffs[5*2]; 338 int32_t p1HighPassCoeffs[5*2]; 339 int32_t p1BandPassCoeffs[5*3]; 340 int32_t p1BassShelfCoeffs[5]; 341 int32_t p1TrebleShelfCoeffs[5]; 342 } __packed; 343 344 struct pbe_params { 345 uint32_t device; 346 uint32_t enable_flag; 347 uint32_t cfg_len; 348 struct pbe_config_t config; 349 }; 350 351 #define SOFT_VOLUME_ENABLE_PARAM_SZ \ 352 (SOFT_VOLUME_ENABLE_PARAM_LEN*sizeof(uint32_t)) 353 #define SOFT_VOLUME_GAIN_MASTER_PARAM_SZ \ 354 (SOFT_VOLUME_GAIN_MASTER_PARAM_LEN*sizeof(uint32_t)) 355 #define SOFT_VOLUME_GAIN_2CH_PARAM_SZ \ 356 (SOFT_VOLUME_GAIN_2CH_PARAM_LEN*sizeof(uint16_t)) 357 struct soft_volume_params { 358 uint32_t device; 359 uint32_t enable_flag; 360 uint32_t master_gain; 361 uint32_t left_gain; 362 uint32_t right_gain; 363 }; 364 365 struct msm_nt_eff_all_config { 366 struct bass_boost_params bass_boost; 367 struct pbe_params pbe; 368 struct virtualizer_params virtualizer; 369 struct reverb_params reverb; 370 struct eq_params equalizer; 371 struct soft_volume_params saplus_vol; 372 struct soft_volume_params topo_switch_vol; 373 }; 374 375 #endif /*_MSM_AUDIO_EFFECTS_H*/ 376