hal: Add support to enable fluence in sdxpoorwills
Add enable/disable support for fluence via audio_platform_info.xml file
as on MDM/SDX system/build.prop support is not present
CRs-fixed: 2316323
Change-Id: Ifbfd4e9786e95f3dd8ed51417c2d23a1ebfd79bc
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 0766311..498701c 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -123,7 +123,6 @@
/* Mixer path names */
#define AFE_SIDETONE_MIXER_PATH "afe-sidetone"
-#define AUDIO_PARAMETER_KEY_FLUENCE_TYPE "fluence"
#define AUDIO_PARAMETER_KEY_SLOWTALK "st_enable"
#define AUDIO_PARAMETER_KEY_HD_VOICE "hd_voice"
#define AUDIO_PARAMETER_KEY_VOLUME_BOOST "volume_boost"
@@ -132,6 +131,15 @@
#define AUDIO_PARAMETER_KEY_MONO_SPEAKER "mono_speaker"
+#define AUDIO_PARAMETER_KEY_FLUENCE_TYPE "fluence_type"
+#define AUDIO_PARAMETER_KEY_FLUENCE_VOICE_CALL "fluence_voice"
+#define AUDIO_PARAMETER_KEY_FLUENCE_VOICE_REC "fluence_voice_rec"
+#define AUDIO_PARAMETER_KEY_FLUENCE_AUDIO_REC "fluence_audio_rec"
+#define AUDIO_PARAMETER_KEY_FLUENCE_SPEAKER "fluence_speaker"
+#define AUDIO_PARAMETER_KEY_FLUENCE_MODE "fluence_mode"
+#define AUDIO_PARAMETER_KEY_FLUENCE_HFPCALL "fluence_hfp"
+#define AUDIO_PARAMETER_KEY_FLUENCE_TRI_MIC "fluence_tri_mic"
+
#define AUDIO_PARAMETER_KEY_PERF_LOCK_OPTS "perf_lock_opts"
/* Reload ACDB files from specified path */
@@ -5091,6 +5099,91 @@
}
}
+static void platform_set_fluence_params(void *platform, struct str_parms *parms, char *value, int len)
+{
+ struct platform_data *my_data = (struct platform_data *)platform;
+ int err = str_parms_get_str(parms, AUDIO_PARAMETER_KEY_FLUENCE_TYPE, value, len);
+
+ if (err >= 0) {
+ if (!strncmp("fluence", value, sizeof("fluence")))
+ my_data->fluence_type = FLUENCE_DUAL_MIC;
+ else if (!strncmp("fluencepro", value, sizeof("fluencepro")))
+ my_data->fluence_type = FLUENCE_QUAD_MIC | FLUENCE_DUAL_MIC;
+ else if (!strncmp("none", value, sizeof("none")))
+ my_data->fluence_type = FLUENCE_NONE;
+
+ str_parms_del(parms, AUDIO_PARAMETER_KEY_FLUENCE_TYPE);
+ }
+
+ err = str_parms_get_str(parms, AUDIO_PARAMETER_KEY_FLUENCE_TRI_MIC, value, len);
+ if (err >= 0) {
+ if (!strncmp("true", value, sizeof("true")))
+ my_data->fluence_type |= FLUENCE_TRI_MIC;
+
+ str_parms_del(parms, AUDIO_PARAMETER_KEY_FLUENCE_TRI_MIC);
+ }
+
+ err = str_parms_get_str(parms, AUDIO_PARAMETER_KEY_FLUENCE_VOICE_CALL, value, len);
+ if (err >= 0) {
+ if (!strncmp("true", value, sizeof("true")))
+ my_data->fluence_in_voice_call = true;
+ else
+ my_data->fluence_in_voice_call = false;
+
+ str_parms_del(parms, AUDIO_PARAMETER_KEY_FLUENCE_VOICE_CALL);
+ }
+
+ err = str_parms_get_str(parms, AUDIO_PARAMETER_KEY_FLUENCE_VOICE_REC, value, len);
+ if (err >= 0) {
+ if (!strncmp("true", value, sizeof("true")))
+ my_data->fluence_in_voice_rec = true;
+ else
+ my_data->fluence_in_voice_rec = false;
+
+ str_parms_del(parms, AUDIO_PARAMETER_KEY_FLUENCE_VOICE_REC);
+ }
+
+ err = str_parms_get_str(parms, AUDIO_PARAMETER_KEY_FLUENCE_AUDIO_REC, value, len);
+ if (err >= 0) {
+ if (!strncmp("true", value, sizeof("true")))
+ my_data->fluence_in_audio_rec = true;
+ else
+ my_data->fluence_in_audio_rec = false;
+
+ str_parms_del(parms, AUDIO_PARAMETER_KEY_FLUENCE_AUDIO_REC);
+ }
+
+ err = str_parms_get_str(parms, AUDIO_PARAMETER_KEY_FLUENCE_SPEAKER, value, len);
+ if (err >= 0) {
+ if (!strncmp("true", value, sizeof("true")))
+ my_data->fluence_in_spkr_mode = true;
+ else
+ my_data->fluence_in_spkr_mode = false;
+
+ str_parms_del(parms, AUDIO_PARAMETER_KEY_FLUENCE_SPEAKER);
+ }
+
+ err = str_parms_get_str(parms, AUDIO_PARAMETER_KEY_FLUENCE_MODE, value, len);
+ if (err >= 0) {
+ if (!strncmp("broadside", value, sizeof("broadside")))
+ my_data->fluence_mode = FLUENCE_BROADSIDE;
+ else if (!strncmp("endfire", value, sizeof("endfire")))
+ my_data->fluence_mode = FLUENCE_ENDFIRE;
+
+ str_parms_del(parms, AUDIO_PARAMETER_KEY_FLUENCE_MODE);
+ }
+
+ err = str_parms_get_str(parms, AUDIO_PARAMETER_KEY_FLUENCE_HFPCALL, value, len);
+ if (err >= 0) {
+ if (!strncmp("true", value, sizeof("true")))
+ my_data->fluence_in_hfp_call = true;
+ else
+ my_data->fluence_in_hfp_call = false;
+
+ str_parms_del(parms, AUDIO_PARAMETER_KEY_FLUENCE_HFPCALL);
+ }
+}
+
int platform_set_parameters(void *platform, struct str_parms *parms)
{
struct platform_data *my_data = (struct platform_data *)platform;
@@ -5224,6 +5317,8 @@
ALOGV("%s: max_mic_count %d", __func__, my_data->max_mic_count);
}
+ platform_set_fluence_params(platform, parms, value, len);
+
/* handle audio calibration parameters */
set_audiocal(platform, parms, value, len);
native_audio_set_params(platform, parms, value, len);