14d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*
24d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
34d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *
44d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * This program is free software; you can redistribute it and/or modify
54d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * it under the terms of the GNU General Public License version 2 and
64d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * only version 2 as published by the Free Software Foundation.
74d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *
84d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * This program is distributed in the hope that it will be useful,
94d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * but WITHOUT ANY WARRANTY; without even the implied warranty of
104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * GNU General Public License for more details.
124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#ifndef _AUDIO_EFFECTS_H
154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define _AUDIO_EFFECTS_H
164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/** AUDIO EFFECTS **/
184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* CONFIG GET/SET */
214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define CONFIG_CACHE			0
224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define CONFIG_SET			1
234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define CONFIG_GET			2
244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* CONFIG HEADER */
264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*
274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	MODULE_ID,
294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	DEVICE,
304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	NUM_COMMANDS,
314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	COMMAND_ID_1,
324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	CONFIG_CACHE/SET/GET,
334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	OFFSET_1,
344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	LENGTH_1,
354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	VALUES_1,
364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	...,
374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	...,
384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	COMMAND_ID_2,
394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	CONFIG_CACHE/SET/GET,
404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	OFFSET_2,
414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	LENGTH_2,
424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	VALUES_2,
434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	...,
444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	...,
454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	COMMAND_ID_3,
464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	...
474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin*/
484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* CONFIG PARAM IDs */
514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIRTUALIZER_MODULE		0x00001000
524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIRTUALIZER_ENABLE		0x00001001
534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIRTUALIZER_STRENGTH		0x00001002
544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIRTUALIZER_OUT_TYPE		0x00001003
554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIRTUALIZER_GAIN_ADJUST		0x00001004
564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIRTUALIZER_ENABLE_PARAM_LEN		1
574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIRTUALIZER_STRENGTH_PARAM_LEN		1
584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIRTUALIZER_OUT_TYPE_PARAM_LEN		1
594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIRTUALIZER_GAIN_ADJUST_PARAM_LEN	1
604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_MODULE			0x00002000
624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_ENABLE			0x00002001
634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_MODE			0x00002002
644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_PRESET			0x00002003
654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_WET_MIX			0x00002004
664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_GAIN_ADJUST		0x00002005
674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_ROOM_LEVEL		0x00002006
684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_ROOM_HF_LEVEL		0x00002007
694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_DECAY_TIME		0x00002008
704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_DECAY_HF_RATIO		0x00002009
714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_REFLECTIONS_LEVEL	0x0000200a
724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_REFLECTIONS_DELAY	0x0000200b
734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_LEVEL			0x0000200c
744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_DELAY			0x0000200d
754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_DIFFUSION		0x0000200e
764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_DENSITY			0x0000200f
774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_ENABLE_PARAM_LEN			1
784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_MODE_PARAM_LEN			1
794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_PRESET_PARAM_LEN			1
804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_WET_MIX_PARAM_LEN		1
814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_GAIN_ADJUST_PARAM_LEN		1
824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_ROOM_LEVEL_PARAM_LEN		1
834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_ROOM_HF_LEVEL_PARAM_LEN		1
844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_DECAY_TIME_PARAM_LEN		1
854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_DECAY_HF_RATIO_PARAM_LEN		1
864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_REFLECTIONS_LEVEL_PARAM_LEN	1
874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_REFLECTIONS_DELAY_PARAM_LEN	1
884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_LEVEL_PARAM_LEN			1
894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_DELAY_PARAM_LEN			1
904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_DIFFUSION_PARAM_LEN		1
914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_DENSITY_PARAM_LEN		1
924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define BASS_BOOST_MODULE		0x00003000
944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define BASS_BOOST_ENABLE		0x00003001
954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define BASS_BOOST_MODE			0x00003002
964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define BASS_BOOST_STRENGTH		0x00003003
974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define BASS_BOOST_ENABLE_PARAM_LEN		1
984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define BASS_BOOST_MODE_PARAM_LEN		1
994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define BASS_BOOST_STRENGTH_PARAM_LEN		1
1004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
1014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_MODULE			0x00004000
1024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_ENABLE			0x00004001
1034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_CONFIG			0x00004002
1044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_NUM_BANDS			0x00004003
1054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_BAND_LEVELS			0x00004004
1064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_BAND_LEVEL_RANGE		0x00004005
1074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_BAND_FREQS			0x00004006
1084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_SINGLE_BAND_FREQ_RANGE	0x00004007
1094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_SINGLE_BAND_FREQ		0x00004008
1104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_BAND_INDEX			0x00004009
1114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_PRESET_ID			0x0000400a
1124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_NUM_PRESETS			0x0000400b
1134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_PRESET_NAME			0x0000400c
1144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_ENABLE_PARAM_LEN			1
1154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_CONFIG_PARAM_LEN			3
1164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_CONFIG_PER_BAND_PARAM_LEN		5
1174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_NUM_BANDS_PARAM_LEN			1
1184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_BAND_LEVELS_PARAM_LEN		13
1194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_BAND_LEVEL_RANGE_PARAM_LEN		2
1204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_BAND_FREQS_PARAM_LEN			13
1214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_SINGLE_BAND_FREQ_RANGE_PARAM_LEN	2
1224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_SINGLE_BAND_FREQ_PARAM_LEN		1
1234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_BAND_INDEX_PARAM_LEN			1
1244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_PRESET_ID_PARAM_LEN			1
1254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_NUM_PRESETS_PARAM_LEN		1
1264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_PRESET_NAME_PARAM_LEN		32
1274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
1284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_TYPE_NONE	0
1294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_BASS_BOOST	1
1304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_BASS_CUT	2
1314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_TREBLE_BOOST	3
1324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_TREBLE_CUT	4
1334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_BAND_BOOST	5
1344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_BAND_CUT	6
1354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
1364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define SOFT_VOLUME_MODULE		0x00006000
1374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define SOFT_VOLUME_ENABLE		0x00006001
1384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define SOFT_VOLUME_GAIN_2CH		0x00006002
1394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define SOFT_VOLUME_GAIN_MASTER		0x00006003
1404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define SOFT_VOLUME_ENABLE_PARAM_LEN		1
1414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define SOFT_VOLUME_GAIN_2CH_PARAM_LEN		2
1424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define SOFT_VOLUME_GAIN_MASTER_PARAM_LEN	1
1434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
1444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define SOFT_VOLUME2_MODULE		0x00007000
1454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define SOFT_VOLUME2_ENABLE		0x00007001
1464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define SOFT_VOLUME2_GAIN_2CH		0x00007002
1474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define SOFT_VOLUME2_GAIN_MASTER	0x00007003
1484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define SOFT_VOLUME2_ENABLE_PARAM_LEN		SOFT_VOLUME_ENABLE_PARAM_LEN
1494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define SOFT_VOLUME2_GAIN_2CH_PARAM_LEN		SOFT_VOLUME_GAIN_2CH_PARAM_LEN
1504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define SOFT_VOLUME2_GAIN_MASTER_PARAM_LEN	\
1514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin					SOFT_VOLUME_GAIN_MASTER_PARAM_LEN
1524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
1534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define COMMAND_PAYLOAD_LEN	3
1544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define COMMAND_PAYLOAD_SZ	(COMMAND_PAYLOAD_LEN * sizeof(uint32_t))
1554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define MAX_INBAND_PARAM_SZ	4096
1564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define Q27_UNITY		(1 << 27)
1574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define Q8_UNITY		(1 << 8)
1584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define CUSTOM_OPENSL_PRESET	18
1594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
1604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIRTUALIZER_ENABLE_PARAM_SZ	\
1614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(VIRTUALIZER_ENABLE_PARAM_LEN*sizeof(uint32_t))
1624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIRTUALIZER_STRENGTH_PARAM_SZ	\
1634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(VIRTUALIZER_STRENGTH_PARAM_LEN*sizeof(uint32_t))
1644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIRTUALIZER_OUT_TYPE_PARAM_SZ	\
1654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(VIRTUALIZER_OUT_TYPE_PARAM_LEN*sizeof(uint32_t))
1664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIRTUALIZER_GAIN_ADJUST_PARAM_SZ	\
1674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(VIRTUALIZER_GAIN_ADJUST_PARAM_LEN*sizeof(uint32_t))
1684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct virtualizer_params {
1694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	uint32_t device;
1704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	uint32_t enable_flag;
1714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	uint32_t strength;
1724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	uint32_t out_type;
1734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	int32_t gain_adjust;
1744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
1754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
1764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define NUM_OSL_REVERB_PRESETS_SUPPORTED	6
1774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_ENABLE_PARAM_SZ		\
1784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(REVERB_ENABLE_PARAM_LEN*sizeof(uint32_t))
1794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_MODE_PARAM_SZ		\
1804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(REVERB_MODE_PARAM_LEN*sizeof(uint32_t))
1814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_PRESET_PARAM_SZ		\
1824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(REVERB_PRESET_PARAM_LEN*sizeof(uint32_t))
1834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_WET_MIX_PARAM_SZ		\
1844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(REVERB_WET_MIX_PARAM_LEN*sizeof(uint32_t))
1854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_GAIN_ADJUST_PARAM_SZ	\
1864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(REVERB_GAIN_ADJUST_PARAM_LEN*sizeof(uint32_t))
1874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_ROOM_LEVEL_PARAM_SZ	\
1884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(REVERB_ROOM_LEVEL_PARAM_LEN*sizeof(uint32_t))
1894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_ROOM_HF_LEVEL_PARAM_SZ	\
1904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(REVERB_ROOM_HF_LEVEL_PARAM_LEN*sizeof(uint32_t))
1914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_DECAY_TIME_PARAM_SZ	\
1924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(REVERB_DECAY_TIME_PARAM_LEN*sizeof(uint32_t))
1934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_DECAY_HF_RATIO_PARAM_SZ	\
1944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(REVERB_DECAY_HF_RATIO_PARAM_LEN*sizeof(uint32_t))
1954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_REFLECTIONS_LEVEL_PARAM_SZ	\
1964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(REVERB_REFLECTIONS_LEVEL_PARAM_LEN*sizeof(uint32_t))
1974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_REFLECTIONS_DELAY_PARAM_SZ	\
1984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(REVERB_REFLECTIONS_DELAY_PARAM_LEN*sizeof(uint32_t))
1994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_LEVEL_PARAM_SZ		\
2004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(REVERB_LEVEL_PARAM_LEN*sizeof(uint32_t))
2014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_DELAY_PARAM_SZ		\
2024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(REVERB_DELAY_PARAM_LEN*sizeof(uint32_t))
2034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_DIFFUSION_PARAM_SZ	\
2044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(REVERB_DIFFUSION_PARAM_LEN*sizeof(uint32_t))
2054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define REVERB_DENSITY_PARAM_SZ		\
2064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(REVERB_DENSITY_PARAM_LEN*sizeof(uint32_t))
2074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct reverb_params {
2084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	uint32_t device;
2094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	uint32_t enable_flag;
2104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	uint32_t mode;
2114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	uint32_t preset;
2124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	uint32_t wet_mix;
2134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	int32_t  gain_adjust;
2144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	int32_t  room_level;
2154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	int32_t  room_hf_level;
2164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	uint32_t decay_time;
2174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	uint32_t decay_hf_ratio;
2184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	int32_t  reflections_level;
2194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	uint32_t reflections_delay;
2204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	int32_t  level;
2214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	uint32_t delay;
2224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	uint32_t diffusion;
2234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	uint32_t density;
2244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
2254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
2264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define BASS_BOOST_ENABLE_PARAM_SZ	\
2274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(BASS_BOOST_ENABLE_PARAM_LEN*sizeof(uint32_t))
2284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define BASS_BOOST_MODE_PARAM_SZ	\
2294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(BASS_BOOST_MODE_PARAM_LEN*sizeof(uint32_t))
2304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define BASS_BOOST_STRENGTH_PARAM_SZ	\
2314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(BASS_BOOST_STRENGTH_PARAM_LEN*sizeof(uint32_t))
2324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct bass_boost_params {
2334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	uint32_t device;
2344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	uint32_t enable_flag;
2354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	uint32_t mode;
2364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	uint32_t strength;
2374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
2384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
2394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
2404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define MAX_EQ_BANDS 12
2414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define MAX_OSL_EQ_BANDS 5
2424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_ENABLE_PARAM_SZ			\
2434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(EQ_ENABLE_PARAM_LEN*sizeof(uint32_t))
2444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_CONFIG_PARAM_SZ			\
2454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(EQ_CONFIG_PARAM_LEN*sizeof(uint32_t))
2464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_CONFIG_PER_BAND_PARAM_SZ		\
2474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(EQ_CONFIG_PER_BAND_PARAM_LEN*sizeof(uint32_t))
2484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_CONFIG_PARAM_MAX_LEN			(EQ_CONFIG_PARAM_LEN+\
2494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			MAX_EQ_BANDS*EQ_CONFIG_PER_BAND_PARAM_LEN)
2504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_CONFIG_PARAM_MAX_SZ			\
2514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(EQ_CONFIG_PARAM_MAX_LEN*sizeof(uint32_t))
2524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_NUM_BANDS_PARAM_SZ			\
2534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(EQ_NUM_BANDS_PARAM_LEN*sizeof(uint32_t))
2544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_BAND_LEVELS_PARAM_SZ			\
2554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(EQ_BAND_LEVELS_PARAM_LEN*sizeof(uint32_t))
2564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_BAND_LEVEL_RANGE_PARAM_SZ		\
2574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(EQ_BAND_LEVEL_RANGE_PARAM_LEN*sizeof(uint32_t))
2584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_BAND_FREQS_PARAM_SZ			\
2594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(EQ_BAND_FREQS_PARAM_LEN*sizeof(uint32_t))
2604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_SINGLE_BAND_FREQ_RANGE_PARAM_SZ	\
2614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(EQ_SINGLE_BAND_FREQ_RANGE_PARAM_LEN*sizeof(uint32_t))
2624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_SINGLE_BAND_FREQ_PARAM_SZ		\
2634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(EQ_SINGLE_BAND_FREQ_PARAM_LEN*sizeof(uint32_t))
2644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_BAND_INDEX_PARAM_SZ			\
2654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(EQ_BAND_INDEX_PARAM_LEN*sizeof(uint32_t))
2664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_PRESET_ID_PARAM_SZ			\
2674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(EQ_PRESET_ID_PARAM_LEN*sizeof(uint32_t))
2684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define EQ_NUM_PRESETS_PARAM_SZ			\
2694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(EQ_NUM_PRESETS_PARAM_LEN*sizeof(uint8_t))
2704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct eq_config_t {
2714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	int32_t eq_pregain;
2724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	int32_t preset_id;
2734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	uint32_t num_bands;
2744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
2754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct eq_per_band_config_t {
2764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	int32_t band_idx;
2774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	uint32_t filter_type;
2784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	uint32_t freq_millihertz;
2794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	int32_t  gain_millibels;
2804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	uint32_t quality_factor;
2814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
2824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct eq_per_band_freq_range_t {
2834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	uint32_t band_index;
2844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	uint32_t min_freq_millihertz;
2854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	uint32_t max_freq_millihertz;
2864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
2874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
2884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct eq_params {
2894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	uint32_t device;
2904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	uint32_t enable_flag;
2914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct eq_config_t config;
2924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct eq_per_band_config_t per_band_cfg[MAX_EQ_BANDS];
2934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct eq_per_band_freq_range_t per_band_freq_range[MAX_EQ_BANDS];
2944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	uint32_t band_index;
2954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	uint32_t freq_millihertz;
2964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
2974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
2984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define SOFT_VOLUME_ENABLE_PARAM_SZ		\
2994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(SOFT_VOLUME_ENABLE_PARAM_LEN*sizeof(uint32_t))
3004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define SOFT_VOLUME_GAIN_MASTER_PARAM_SZ	\
3014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(SOFT_VOLUME_GAIN_MASTER_PARAM_LEN*sizeof(uint32_t))
3024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define SOFT_VOLUME_GAIN_2CH_PARAM_SZ		\
3034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			(SOFT_VOLUME_GAIN_2CH_PARAM_LEN*sizeof(uint16_t))
3044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct soft_volume_params {
3054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	uint32_t device;
3064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	uint32_t enable_flag;
3074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	uint32_t master_gain;
3084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	uint32_t left_gain;
3094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	uint32_t right_gain;
3104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
3114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
3124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct msm_nt_eff_all_config {
3134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct bass_boost_params bass_boost;
3144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct virtualizer_params virtualizer;
3154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct reverb_params reverb;
3164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct eq_params equalizer;
3174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct soft_volume_params saplus_vol;
3184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct soft_volume_params topo_switch_vol;
3194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
3204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
3214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#endif /*_MSM_AUDIO_EFFECTS_H*/
322