1772b7facf972926b14fe303d0348c200cb20a313Prashant Malani/*
2464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry * Copyright (c) 2013-2015, The Linux Foundation. All rights reserved.
3772b7facf972926b14fe303d0348c200cb20a313Prashant Malani *
4772b7facf972926b14fe303d0348c200cb20a313Prashant Malani * This program is free software; you can redistribute it and/or modify
5772b7facf972926b14fe303d0348c200cb20a313Prashant Malani * it under the terms of the GNU General Public License version 2 and
6772b7facf972926b14fe303d0348c200cb20a313Prashant Malani * only version 2 as published by the Free Software Foundation.
7772b7facf972926b14fe303d0348c200cb20a313Prashant Malani *
8772b7facf972926b14fe303d0348c200cb20a313Prashant Malani * This program is distributed in the hope that it will be useful,
9772b7facf972926b14fe303d0348c200cb20a313Prashant Malani * but WITHOUT ANY WARRANTY; without even the implied warranty of
10772b7facf972926b14fe303d0348c200cb20a313Prashant Malani * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11772b7facf972926b14fe303d0348c200cb20a313Prashant Malani * GNU General Public License for more details.
12772b7facf972926b14fe303d0348c200cb20a313Prashant Malani */
13772b7facf972926b14fe303d0348c200cb20a313Prashant Malani
14772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#ifndef _AUDIO_EFFECTS_H
15772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define _AUDIO_EFFECTS_H
16772b7facf972926b14fe303d0348c200cb20a313Prashant Malani
17772b7facf972926b14fe303d0348c200cb20a313Prashant Malani/** AUDIO EFFECTS **/
18772b7facf972926b14fe303d0348c200cb20a313Prashant Malani
19772b7facf972926b14fe303d0348c200cb20a313Prashant Malani
20772b7facf972926b14fe303d0348c200cb20a313Prashant Malani/* CONFIG GET/SET */
21772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define CONFIG_CACHE			0
22772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define CONFIG_SET			1
23772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define CONFIG_GET			2
24772b7facf972926b14fe303d0348c200cb20a313Prashant Malani
25772b7facf972926b14fe303d0348c200cb20a313Prashant Malani/* CONFIG HEADER */
26772b7facf972926b14fe303d0348c200cb20a313Prashant Malani/*
27772b7facf972926b14fe303d0348c200cb20a313Prashant Malani
28772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	MODULE_ID,
29772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	DEVICE,
30772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	NUM_COMMANDS,
31772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	COMMAND_ID_1,
32772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	CONFIG_CACHE/SET/GET,
33772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	OFFSET_1,
34772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	LENGTH_1,
35772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	VALUES_1,
36772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	...,
37772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	...,
38772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	COMMAND_ID_2,
39772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	CONFIG_CACHE/SET/GET,
40772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	OFFSET_2,
41772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	LENGTH_2,
42772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	VALUES_2,
43772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	...,
44772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	...,
45772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	COMMAND_ID_3,
46772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	...
47772b7facf972926b14fe303d0348c200cb20a313Prashant Malani*/
48772b7facf972926b14fe303d0348c200cb20a313Prashant Malani
49772b7facf972926b14fe303d0348c200cb20a313Prashant Malani
50772b7facf972926b14fe303d0348c200cb20a313Prashant Malani/* CONFIG PARAM IDs */
51772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define VIRTUALIZER_MODULE		0x00001000
52772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define VIRTUALIZER_ENABLE		0x00001001
53772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define VIRTUALIZER_STRENGTH		0x00001002
54772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define VIRTUALIZER_OUT_TYPE		0x00001003
55772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define VIRTUALIZER_GAIN_ADJUST		0x00001004
56772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define VIRTUALIZER_ENABLE_PARAM_LEN		1
57772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define VIRTUALIZER_STRENGTH_PARAM_LEN		1
58772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define VIRTUALIZER_OUT_TYPE_PARAM_LEN		1
59772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define VIRTUALIZER_GAIN_ADJUST_PARAM_LEN	1
60772b7facf972926b14fe303d0348c200cb20a313Prashant Malani
61772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_MODULE			0x00002000
62772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_ENABLE			0x00002001
63772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_MODE			0x00002002
64772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_PRESET			0x00002003
65772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_WET_MIX			0x00002004
66772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_GAIN_ADJUST		0x00002005
67772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_ROOM_LEVEL		0x00002006
68772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_ROOM_HF_LEVEL		0x00002007
69772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_DECAY_TIME		0x00002008
70772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_DECAY_HF_RATIO		0x00002009
71772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_REFLECTIONS_LEVEL	0x0000200a
72772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_REFLECTIONS_DELAY	0x0000200b
73772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_LEVEL			0x0000200c
74772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_DELAY			0x0000200d
75772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_DIFFUSION		0x0000200e
76772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_DENSITY			0x0000200f
77772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_ENABLE_PARAM_LEN			1
78772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_MODE_PARAM_LEN			1
79772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_PRESET_PARAM_LEN			1
80772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_WET_MIX_PARAM_LEN		1
81772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_GAIN_ADJUST_PARAM_LEN		1
82772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_ROOM_LEVEL_PARAM_LEN		1
83772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_ROOM_HF_LEVEL_PARAM_LEN		1
84772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_DECAY_TIME_PARAM_LEN		1
85772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_DECAY_HF_RATIO_PARAM_LEN		1
86772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_REFLECTIONS_LEVEL_PARAM_LEN	1
87772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_REFLECTIONS_DELAY_PARAM_LEN	1
88772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_LEVEL_PARAM_LEN			1
89772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_DELAY_PARAM_LEN			1
90772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_DIFFUSION_PARAM_LEN		1
91772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_DENSITY_PARAM_LEN		1
92772b7facf972926b14fe303d0348c200cb20a313Prashant Malani
93772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define BASS_BOOST_MODULE		0x00003000
94772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define BASS_BOOST_ENABLE		0x00003001
95772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define BASS_BOOST_MODE			0x00003002
96772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define BASS_BOOST_STRENGTH		0x00003003
97772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define BASS_BOOST_ENABLE_PARAM_LEN		1
98772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define BASS_BOOST_MODE_PARAM_LEN		1
99772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define BASS_BOOST_STRENGTH_PARAM_LEN		1
100772b7facf972926b14fe303d0348c200cb20a313Prashant Malani
101772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_MODULE			0x00004000
102772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_ENABLE			0x00004001
103772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_CONFIG			0x00004002
104772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_NUM_BANDS			0x00004003
105772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_BAND_LEVELS			0x00004004
106772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_BAND_LEVEL_RANGE		0x00004005
107772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_BAND_FREQS			0x00004006
108772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_SINGLE_BAND_FREQ_RANGE	0x00004007
109772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_SINGLE_BAND_FREQ		0x00004008
110772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_BAND_INDEX			0x00004009
111772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_PRESET_ID			0x0000400a
112772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_NUM_PRESETS			0x0000400b
113772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_PRESET_NAME			0x0000400c
114772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_ENABLE_PARAM_LEN			1
115772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_CONFIG_PARAM_LEN			3
116772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_CONFIG_PER_BAND_PARAM_LEN		5
117772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_NUM_BANDS_PARAM_LEN			1
118772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_BAND_LEVELS_PARAM_LEN		13
119772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_BAND_LEVEL_RANGE_PARAM_LEN		2
120772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_BAND_FREQS_PARAM_LEN			13
121772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_SINGLE_BAND_FREQ_RANGE_PARAM_LEN	2
122772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_SINGLE_BAND_FREQ_PARAM_LEN		1
123772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_BAND_INDEX_PARAM_LEN			1
124772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_PRESET_ID_PARAM_LEN			1
125772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_NUM_PRESETS_PARAM_LEN		1
126772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_PRESET_NAME_PARAM_LEN		32
127772b7facf972926b14fe303d0348c200cb20a313Prashant Malani
128772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_TYPE_NONE	0
129772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_BASS_BOOST	1
130772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_BASS_CUT	2
131772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_TREBLE_BOOST	3
132772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_TREBLE_CUT	4
133772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_BAND_BOOST	5
134772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_BAND_CUT	6
135772b7facf972926b14fe303d0348c200cb20a313Prashant Malani
136772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define SOFT_VOLUME_MODULE		0x00006000
137772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define SOFT_VOLUME_ENABLE		0x00006001
138772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define SOFT_VOLUME_GAIN_2CH		0x00006002
139772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define SOFT_VOLUME_GAIN_MASTER		0x00006003
140772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define SOFT_VOLUME_ENABLE_PARAM_LEN		1
141772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define SOFT_VOLUME_GAIN_2CH_PARAM_LEN		2
142772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define SOFT_VOLUME_GAIN_MASTER_PARAM_LEN	1
143772b7facf972926b14fe303d0348c200cb20a313Prashant Malani
144772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define SOFT_VOLUME2_MODULE		0x00007000
145772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define SOFT_VOLUME2_ENABLE		0x00007001
146772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define SOFT_VOLUME2_GAIN_2CH		0x00007002
147772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define SOFT_VOLUME2_GAIN_MASTER	0x00007003
148772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define SOFT_VOLUME2_ENABLE_PARAM_LEN		SOFT_VOLUME_ENABLE_PARAM_LEN
149772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define SOFT_VOLUME2_GAIN_2CH_PARAM_LEN		SOFT_VOLUME_GAIN_2CH_PARAM_LEN
150772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define SOFT_VOLUME2_GAIN_MASTER_PARAM_LEN	\
151772b7facf972926b14fe303d0348c200cb20a313Prashant Malani					SOFT_VOLUME_GAIN_MASTER_PARAM_LEN
152772b7facf972926b14fe303d0348c200cb20a313Prashant Malani
153464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry#define PBE_CONF_MODULE_ID	0x00010C2A
154464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry#define PBE_CONF_PARAM_ID	0x00010C49
155464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry
156464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry#define PBE_MODULE		0x00008000
157464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry#define PBE_ENABLE		0x00008001
158464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry#define PBE_CONFIG		0x00008002
159464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry#define PBE_ENABLE_PARAM_LEN		1
160464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry#define PBE_CONFIG_PARAM_LEN		28
161464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry
162772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define COMMAND_PAYLOAD_LEN	3
163772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define COMMAND_PAYLOAD_SZ	(COMMAND_PAYLOAD_LEN * sizeof(uint32_t))
164772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define MAX_INBAND_PARAM_SZ	4096
165772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define Q27_UNITY		(1 << 27)
166772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define Q8_UNITY		(1 << 8)
167772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define CUSTOM_OPENSL_PRESET	18
168772b7facf972926b14fe303d0348c200cb20a313Prashant Malani
169772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define VIRTUALIZER_ENABLE_PARAM_SZ	\
170772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(VIRTUALIZER_ENABLE_PARAM_LEN*sizeof(uint32_t))
171772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define VIRTUALIZER_STRENGTH_PARAM_SZ	\
172772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(VIRTUALIZER_STRENGTH_PARAM_LEN*sizeof(uint32_t))
173772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define VIRTUALIZER_OUT_TYPE_PARAM_SZ	\
174772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(VIRTUALIZER_OUT_TYPE_PARAM_LEN*sizeof(uint32_t))
175772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define VIRTUALIZER_GAIN_ADJUST_PARAM_SZ	\
176772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(VIRTUALIZER_GAIN_ADJUST_PARAM_LEN*sizeof(uint32_t))
177772b7facf972926b14fe303d0348c200cb20a313Prashant Malanistruct virtualizer_params {
178772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	uint32_t device;
179772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	uint32_t enable_flag;
180772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	uint32_t strength;
181772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	uint32_t out_type;
182772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	int32_t gain_adjust;
183772b7facf972926b14fe303d0348c200cb20a313Prashant Malani};
184772b7facf972926b14fe303d0348c200cb20a313Prashant Malani
185772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define NUM_OSL_REVERB_PRESETS_SUPPORTED	6
186772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_ENABLE_PARAM_SZ		\
187772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(REVERB_ENABLE_PARAM_LEN*sizeof(uint32_t))
188772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_MODE_PARAM_SZ		\
189772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(REVERB_MODE_PARAM_LEN*sizeof(uint32_t))
190772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_PRESET_PARAM_SZ		\
191772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(REVERB_PRESET_PARAM_LEN*sizeof(uint32_t))
192772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_WET_MIX_PARAM_SZ		\
193772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(REVERB_WET_MIX_PARAM_LEN*sizeof(uint32_t))
194772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_GAIN_ADJUST_PARAM_SZ	\
195772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(REVERB_GAIN_ADJUST_PARAM_LEN*sizeof(uint32_t))
196772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_ROOM_LEVEL_PARAM_SZ	\
197772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(REVERB_ROOM_LEVEL_PARAM_LEN*sizeof(uint32_t))
198772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_ROOM_HF_LEVEL_PARAM_SZ	\
199772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(REVERB_ROOM_HF_LEVEL_PARAM_LEN*sizeof(uint32_t))
200772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_DECAY_TIME_PARAM_SZ	\
201772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(REVERB_DECAY_TIME_PARAM_LEN*sizeof(uint32_t))
202772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_DECAY_HF_RATIO_PARAM_SZ	\
203772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(REVERB_DECAY_HF_RATIO_PARAM_LEN*sizeof(uint32_t))
204772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_REFLECTIONS_LEVEL_PARAM_SZ	\
205772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(REVERB_REFLECTIONS_LEVEL_PARAM_LEN*sizeof(uint32_t))
206772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_REFLECTIONS_DELAY_PARAM_SZ	\
207772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(REVERB_REFLECTIONS_DELAY_PARAM_LEN*sizeof(uint32_t))
208772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_LEVEL_PARAM_SZ		\
209772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(REVERB_LEVEL_PARAM_LEN*sizeof(uint32_t))
210772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_DELAY_PARAM_SZ		\
211772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(REVERB_DELAY_PARAM_LEN*sizeof(uint32_t))
212772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_DIFFUSION_PARAM_SZ	\
213772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(REVERB_DIFFUSION_PARAM_LEN*sizeof(uint32_t))
214772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define REVERB_DENSITY_PARAM_SZ		\
215772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(REVERB_DENSITY_PARAM_LEN*sizeof(uint32_t))
216772b7facf972926b14fe303d0348c200cb20a313Prashant Malanistruct reverb_params {
217772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	uint32_t device;
218772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	uint32_t enable_flag;
219772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	uint32_t mode;
220772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	uint32_t preset;
221772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	uint32_t wet_mix;
222772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	int32_t  gain_adjust;
223772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	int32_t  room_level;
224772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	int32_t  room_hf_level;
225772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	uint32_t decay_time;
226772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	uint32_t decay_hf_ratio;
227772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	int32_t  reflections_level;
228772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	uint32_t reflections_delay;
229772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	int32_t  level;
230772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	uint32_t delay;
231772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	uint32_t diffusion;
232772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	uint32_t density;
233772b7facf972926b14fe303d0348c200cb20a313Prashant Malani};
234772b7facf972926b14fe303d0348c200cb20a313Prashant Malani
235772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define BASS_BOOST_ENABLE_PARAM_SZ	\
236772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(BASS_BOOST_ENABLE_PARAM_LEN*sizeof(uint32_t))
237772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define BASS_BOOST_MODE_PARAM_SZ	\
238772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(BASS_BOOST_MODE_PARAM_LEN*sizeof(uint32_t))
239772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define BASS_BOOST_STRENGTH_PARAM_SZ	\
240772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(BASS_BOOST_STRENGTH_PARAM_LEN*sizeof(uint32_t))
241772b7facf972926b14fe303d0348c200cb20a313Prashant Malanistruct bass_boost_params {
242772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	uint32_t device;
243772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	uint32_t enable_flag;
244772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	uint32_t mode;
245772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	uint32_t strength;
246772b7facf972926b14fe303d0348c200cb20a313Prashant Malani};
247772b7facf972926b14fe303d0348c200cb20a313Prashant Malani
248772b7facf972926b14fe303d0348c200cb20a313Prashant Malani
249772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define MAX_EQ_BANDS 12
250772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define MAX_OSL_EQ_BANDS 5
251772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_ENABLE_PARAM_SZ			\
252772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(EQ_ENABLE_PARAM_LEN*sizeof(uint32_t))
253772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_CONFIG_PARAM_SZ			\
254772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(EQ_CONFIG_PARAM_LEN*sizeof(uint32_t))
255772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_CONFIG_PER_BAND_PARAM_SZ		\
256772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(EQ_CONFIG_PER_BAND_PARAM_LEN*sizeof(uint32_t))
257772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_CONFIG_PARAM_MAX_LEN			(EQ_CONFIG_PARAM_LEN+\
258772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			MAX_EQ_BANDS*EQ_CONFIG_PER_BAND_PARAM_LEN)
259772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_CONFIG_PARAM_MAX_SZ			\
260772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(EQ_CONFIG_PARAM_MAX_LEN*sizeof(uint32_t))
261772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_NUM_BANDS_PARAM_SZ			\
262772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(EQ_NUM_BANDS_PARAM_LEN*sizeof(uint32_t))
263772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_BAND_LEVELS_PARAM_SZ			\
264772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(EQ_BAND_LEVELS_PARAM_LEN*sizeof(uint32_t))
265772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_BAND_LEVEL_RANGE_PARAM_SZ		\
266772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(EQ_BAND_LEVEL_RANGE_PARAM_LEN*sizeof(uint32_t))
267772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_BAND_FREQS_PARAM_SZ			\
268772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(EQ_BAND_FREQS_PARAM_LEN*sizeof(uint32_t))
269772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_SINGLE_BAND_FREQ_RANGE_PARAM_SZ	\
270772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(EQ_SINGLE_BAND_FREQ_RANGE_PARAM_LEN*sizeof(uint32_t))
271772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_SINGLE_BAND_FREQ_PARAM_SZ		\
272772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(EQ_SINGLE_BAND_FREQ_PARAM_LEN*sizeof(uint32_t))
273772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_BAND_INDEX_PARAM_SZ			\
274772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(EQ_BAND_INDEX_PARAM_LEN*sizeof(uint32_t))
275772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_PRESET_ID_PARAM_SZ			\
276772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(EQ_PRESET_ID_PARAM_LEN*sizeof(uint32_t))
277772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define EQ_NUM_PRESETS_PARAM_SZ			\
278772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(EQ_NUM_PRESETS_PARAM_LEN*sizeof(uint8_t))
279772b7facf972926b14fe303d0348c200cb20a313Prashant Malanistruct eq_config_t {
280772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	int32_t eq_pregain;
281772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	int32_t preset_id;
282772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	uint32_t num_bands;
283772b7facf972926b14fe303d0348c200cb20a313Prashant Malani};
284772b7facf972926b14fe303d0348c200cb20a313Prashant Malanistruct eq_per_band_config_t {
285772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	int32_t band_idx;
286772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	uint32_t filter_type;
287772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	uint32_t freq_millihertz;
288772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	int32_t  gain_millibels;
289772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	uint32_t quality_factor;
290772b7facf972926b14fe303d0348c200cb20a313Prashant Malani};
291772b7facf972926b14fe303d0348c200cb20a313Prashant Malanistruct eq_per_band_freq_range_t {
292772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	uint32_t band_index;
293772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	uint32_t min_freq_millihertz;
294772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	uint32_t max_freq_millihertz;
295772b7facf972926b14fe303d0348c200cb20a313Prashant Malani};
296772b7facf972926b14fe303d0348c200cb20a313Prashant Malani
297772b7facf972926b14fe303d0348c200cb20a313Prashant Malanistruct eq_params {
298772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	uint32_t device;
299772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	uint32_t enable_flag;
300772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	struct eq_config_t config;
301772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	struct eq_per_band_config_t per_band_cfg[MAX_EQ_BANDS];
302772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	struct eq_per_band_freq_range_t per_band_freq_range[MAX_EQ_BANDS];
303772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	uint32_t band_index;
304772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	uint32_t freq_millihertz;
305772b7facf972926b14fe303d0348c200cb20a313Prashant Malani};
306772b7facf972926b14fe303d0348c200cb20a313Prashant Malani
307464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry#define PBE_ENABLE_PARAM_SZ	\
308464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry			(PBE_ENABLE_PARAM_LEN*sizeof(uint32_t))
309464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry#define PBE_CONFIG_PARAM_SZ	\
310464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry			(PBE_CONFIG_PARAM_LEN*sizeof(uint16_t))
311464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherrystruct pbe_config_t {
312464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	int16_t  real_bass_mix;
313464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	int16_t  bass_color_control;
314464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	uint16_t main_chain_delay;
315464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	uint16_t xover_filter_order;
316464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	uint16_t bandpass_filter_order;
317464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	int16_t  drc_delay;
318464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	uint16_t rms_tav;
319464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	int16_t exp_threshold;
320464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	uint16_t exp_slope;
321464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	int16_t comp_threshold;
322464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	uint16_t comp_slope;
323464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	uint16_t makeup_gain;
324464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	uint32_t comp_attack;
325464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	uint32_t comp_release;
326464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	uint32_t exp_attack;
327464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	uint32_t exp_release;
328464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	int16_t limiter_bass_threshold;
329464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	int16_t limiter_high_threshold;
330464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	int16_t limiter_bass_makeup_gain;
331464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	int16_t limiter_high_makeup_gain;
332464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	int16_t limiter_bass_gc;
333464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	int16_t limiter_high_gc;
334464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	int16_t  limiter_delay;
335464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	uint16_t reserved;
336464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	/* place holder for filter coeffs to be followed */
337464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	int32_t p1LowPassCoeffs[5*2];
338464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	int32_t p1HighPassCoeffs[5*2];
339464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	int32_t p1BandPassCoeffs[5*3];
340464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	int32_t p1BassShelfCoeffs[5];
341464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	int32_t p1TrebleShelfCoeffs[5];
342464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry} __packed;
343464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry
344464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherrystruct pbe_params {
345464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	uint32_t device;
346464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	uint32_t enable_flag;
347464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	uint32_t cfg_len;
348464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	struct pbe_config_t config;
349464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry};
350464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry
351772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define SOFT_VOLUME_ENABLE_PARAM_SZ		\
352772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(SOFT_VOLUME_ENABLE_PARAM_LEN*sizeof(uint32_t))
353772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define SOFT_VOLUME_GAIN_MASTER_PARAM_SZ	\
354772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(SOFT_VOLUME_GAIN_MASTER_PARAM_LEN*sizeof(uint32_t))
355772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#define SOFT_VOLUME_GAIN_2CH_PARAM_SZ		\
356772b7facf972926b14fe303d0348c200cb20a313Prashant Malani			(SOFT_VOLUME_GAIN_2CH_PARAM_LEN*sizeof(uint16_t))
357772b7facf972926b14fe303d0348c200cb20a313Prashant Malanistruct soft_volume_params {
358772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	uint32_t device;
359772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	uint32_t enable_flag;
360772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	uint32_t master_gain;
361772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	uint32_t left_gain;
362772b7facf972926b14fe303d0348c200cb20a313Prashant Malani	uint32_t right_gain;
363772b7facf972926b14fe303d0348c200cb20a313Prashant Malani};
364772b7facf972926b14fe303d0348c200cb20a313Prashant Malani
365464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherrystruct msm_nt_eff_all_config {
366464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	struct bass_boost_params bass_boost;
367464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	struct pbe_params pbe;
368464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	struct virtualizer_params virtualizer;
369464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	struct reverb_params reverb;
370464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	struct eq_params equalizer;
371464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	struct soft_volume_params saplus_vol;
372464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry	struct soft_volume_params topo_switch_vol;
373464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry};
374464aadab995fc0ef1616362ad795e9a3ba6c4f16Tom Cherry
375772b7facf972926b14fe303d0348c200cb20a313Prashant Malani#endif /*_MSM_AUDIO_EFFECTS_H*/
376