Loading hal/msm8916/platform.c +37 −6 Original line number Diff line number Diff line Loading @@ -117,6 +117,7 @@ struct platform_data { bool fluence_in_audio_rec; int fluence_type; char fluence_cap[PROPERTY_VALUE_MAX]; int fluence_mode; bool slowtalk; /* Audio calibration related functions */ void *acdb_handle; Loading Loading @@ -249,6 +250,11 @@ static const char * const device_table[SND_DEVICE_MAX] = { [SND_DEVICE_IN_HANDSET_STEREO_DMIC] = "handset-stereo-dmic-ef", [SND_DEVICE_IN_SPEAKER_STEREO_DMIC] = "speaker-stereo-dmic-ef", [SND_DEVICE_IN_CAPTURE_VI_FEEDBACK] = "vi-feedback", [SND_DEVICE_IN_VOICE_SPEAKER_DMIC_BROADSIDE] = "voice-speaker-dmic-broadside", [SND_DEVICE_IN_SPEAKER_DMIC_BROADSIDE] = "speaker-dmic-broadside", [SND_DEVICE_IN_SPEAKER_DMIC_AEC_BROADSIDE] = "speaker-dmic-broadside", [SND_DEVICE_IN_SPEAKER_DMIC_NS_BROADSIDE] = "speaker-dmic-broadside", [SND_DEVICE_IN_SPEAKER_DMIC_AEC_NS_BROADSIDE] = "speaker-dmic-broadside", }; /* ACDB IDs (audio DSP path configuration IDs) for each sound device */ Loading Loading @@ -322,6 +328,11 @@ static int acdb_device_table[SND_DEVICE_MAX] = { [SND_DEVICE_IN_HANDSET_STEREO_DMIC] = 34, [SND_DEVICE_IN_SPEAKER_STEREO_DMIC] = 35, [SND_DEVICE_IN_CAPTURE_VI_FEEDBACK] = 102, [SND_DEVICE_IN_VOICE_SPEAKER_DMIC_BROADSIDE] = 12, [SND_DEVICE_IN_SPEAKER_DMIC_BROADSIDE] = 12, [SND_DEVICE_IN_SPEAKER_DMIC_AEC_BROADSIDE] = 119, [SND_DEVICE_IN_SPEAKER_DMIC_NS_BROADSIDE] = 121, [SND_DEVICE_IN_SPEAKER_DMIC_AEC_NS_BROADSIDE] = 120, }; struct snd_device_index { Loading Loading @@ -670,6 +681,7 @@ void *platform_init(struct audio_device *adev) my_data->fluence_in_voice_rec = false; my_data->fluence_in_audio_rec = false; my_data->fluence_type = FLUENCE_NONE; my_data->fluence_mode = FLUENCE_ENDFIRE; property_get("ro.qc.sdk.audio.fluencetype", my_data->fluence_cap, ""); if (!strncmp("fluencepro", my_data->fluence_cap, sizeof("fluencepro"))) { Loading Loading @@ -700,6 +712,11 @@ void *platform_init(struct audio_device *adev) if (!strncmp("true", value, sizeof("true"))) { my_data->fluence_in_spkr_mode = true; } property_get("persist.audio.fluence.mode",value,""); if (!strncmp("broadside", value, sizeof("broadside"))) { my_data->fluence_mode = FLUENCE_BROADSIDE; } } my_data->voice_feature_set = VOICE_FEATURE_SET_DEFAULT; Loading Loading @@ -1424,6 +1441,9 @@ snd_device_t platform_get_input_snd_device(void *platform, audio_devices_t out_d snd_device = SND_DEVICE_IN_VOICE_SPEAKER_QMIC; } else { adev->acdb_settings |= DMIC_FLAG; if (my_data->fluence_mode == FLUENCE_BROADSIDE) snd_device = SND_DEVICE_IN_VOICE_SPEAKER_DMIC_BROADSIDE; else snd_device = SND_DEVICE_IN_VOICE_SPEAKER_DMIC; } } else { Loading Loading @@ -1464,6 +1484,9 @@ snd_device_t platform_get_input_snd_device(void *platform, audio_devices_t out_d if (in_device & AUDIO_DEVICE_IN_BACK_MIC) { if (my_data->fluence_type & FLUENCE_DUAL_MIC && my_data->fluence_in_spkr_mode) { if (my_data->fluence_mode == FLUENCE_BROADSIDE) snd_device = SND_DEVICE_IN_SPEAKER_DMIC_AEC_NS_BROADSIDE; else snd_device = SND_DEVICE_IN_SPEAKER_DMIC_AEC_NS; adev->acdb_settings |= DMIC_FLAG; } else Loading @@ -1480,7 +1503,11 @@ snd_device_t platform_get_input_snd_device(void *platform, audio_devices_t out_d set_echo_reference(adev->mixer, EC_REF_RX); } else if (adev->active_input->enable_aec) { if (in_device & AUDIO_DEVICE_IN_BACK_MIC) { if (my_data->fluence_type & FLUENCE_DUAL_MIC) { if (my_data->fluence_type & FLUENCE_DUAL_MIC && my_data->fluence_in_spkr_mode) { if (my_data->fluence_mode == FLUENCE_BROADSIDE) snd_device = SND_DEVICE_IN_SPEAKER_DMIC_AEC_BROADSIDE; else snd_device = SND_DEVICE_IN_SPEAKER_DMIC_AEC; adev->acdb_settings |= DMIC_FLAG; } else Loading @@ -1497,7 +1524,11 @@ snd_device_t platform_get_input_snd_device(void *platform, audio_devices_t out_d set_echo_reference(adev->mixer, EC_REF_RX); } else if (adev->active_input->enable_ns) { if (in_device & AUDIO_DEVICE_IN_BACK_MIC) { if (my_data->fluence_type & FLUENCE_DUAL_MIC) { if (my_data->fluence_type & FLUENCE_DUAL_MIC && my_data->fluence_in_spkr_mode) { if (my_data->fluence_mode == FLUENCE_BROADSIDE) snd_device = SND_DEVICE_IN_SPEAKER_DMIC_NS_BROADSIDE; else snd_device = SND_DEVICE_IN_SPEAKER_DMIC_NS; adev->acdb_settings |= DMIC_FLAG; } else Loading hal/msm8916/platform.h +10 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,11 @@ enum { FLUENCE_QUAD_MIC = 0x2, }; enum { FLUENCE_ENDFIRE = 0x1, FLUENCE_BROADSIDE = 0x2, }; /* * Below are the devices for which is back end is same, SLIMBUS_0_RX. * All these devices are handled by the internal HW codec. We can Loading Loading @@ -121,6 +126,11 @@ enum { SND_DEVICE_IN_HANDSET_STEREO_DMIC, SND_DEVICE_IN_SPEAKER_STEREO_DMIC, SND_DEVICE_IN_CAPTURE_VI_FEEDBACK, SND_DEVICE_IN_VOICE_SPEAKER_DMIC_BROADSIDE, SND_DEVICE_IN_SPEAKER_DMIC_BROADSIDE, SND_DEVICE_IN_SPEAKER_DMIC_AEC_BROADSIDE, SND_DEVICE_IN_SPEAKER_DMIC_NS_BROADSIDE, SND_DEVICE_IN_SPEAKER_DMIC_AEC_NS_BROADSIDE, SND_DEVICE_IN_END, SND_DEVICE_MAX = SND_DEVICE_IN_END, Loading Loading
hal/msm8916/platform.c +37 −6 Original line number Diff line number Diff line Loading @@ -117,6 +117,7 @@ struct platform_data { bool fluence_in_audio_rec; int fluence_type; char fluence_cap[PROPERTY_VALUE_MAX]; int fluence_mode; bool slowtalk; /* Audio calibration related functions */ void *acdb_handle; Loading Loading @@ -249,6 +250,11 @@ static const char * const device_table[SND_DEVICE_MAX] = { [SND_DEVICE_IN_HANDSET_STEREO_DMIC] = "handset-stereo-dmic-ef", [SND_DEVICE_IN_SPEAKER_STEREO_DMIC] = "speaker-stereo-dmic-ef", [SND_DEVICE_IN_CAPTURE_VI_FEEDBACK] = "vi-feedback", [SND_DEVICE_IN_VOICE_SPEAKER_DMIC_BROADSIDE] = "voice-speaker-dmic-broadside", [SND_DEVICE_IN_SPEAKER_DMIC_BROADSIDE] = "speaker-dmic-broadside", [SND_DEVICE_IN_SPEAKER_DMIC_AEC_BROADSIDE] = "speaker-dmic-broadside", [SND_DEVICE_IN_SPEAKER_DMIC_NS_BROADSIDE] = "speaker-dmic-broadside", [SND_DEVICE_IN_SPEAKER_DMIC_AEC_NS_BROADSIDE] = "speaker-dmic-broadside", }; /* ACDB IDs (audio DSP path configuration IDs) for each sound device */ Loading Loading @@ -322,6 +328,11 @@ static int acdb_device_table[SND_DEVICE_MAX] = { [SND_DEVICE_IN_HANDSET_STEREO_DMIC] = 34, [SND_DEVICE_IN_SPEAKER_STEREO_DMIC] = 35, [SND_DEVICE_IN_CAPTURE_VI_FEEDBACK] = 102, [SND_DEVICE_IN_VOICE_SPEAKER_DMIC_BROADSIDE] = 12, [SND_DEVICE_IN_SPEAKER_DMIC_BROADSIDE] = 12, [SND_DEVICE_IN_SPEAKER_DMIC_AEC_BROADSIDE] = 119, [SND_DEVICE_IN_SPEAKER_DMIC_NS_BROADSIDE] = 121, [SND_DEVICE_IN_SPEAKER_DMIC_AEC_NS_BROADSIDE] = 120, }; struct snd_device_index { Loading Loading @@ -670,6 +681,7 @@ void *platform_init(struct audio_device *adev) my_data->fluence_in_voice_rec = false; my_data->fluence_in_audio_rec = false; my_data->fluence_type = FLUENCE_NONE; my_data->fluence_mode = FLUENCE_ENDFIRE; property_get("ro.qc.sdk.audio.fluencetype", my_data->fluence_cap, ""); if (!strncmp("fluencepro", my_data->fluence_cap, sizeof("fluencepro"))) { Loading Loading @@ -700,6 +712,11 @@ void *platform_init(struct audio_device *adev) if (!strncmp("true", value, sizeof("true"))) { my_data->fluence_in_spkr_mode = true; } property_get("persist.audio.fluence.mode",value,""); if (!strncmp("broadside", value, sizeof("broadside"))) { my_data->fluence_mode = FLUENCE_BROADSIDE; } } my_data->voice_feature_set = VOICE_FEATURE_SET_DEFAULT; Loading Loading @@ -1424,6 +1441,9 @@ snd_device_t platform_get_input_snd_device(void *platform, audio_devices_t out_d snd_device = SND_DEVICE_IN_VOICE_SPEAKER_QMIC; } else { adev->acdb_settings |= DMIC_FLAG; if (my_data->fluence_mode == FLUENCE_BROADSIDE) snd_device = SND_DEVICE_IN_VOICE_SPEAKER_DMIC_BROADSIDE; else snd_device = SND_DEVICE_IN_VOICE_SPEAKER_DMIC; } } else { Loading Loading @@ -1464,6 +1484,9 @@ snd_device_t platform_get_input_snd_device(void *platform, audio_devices_t out_d if (in_device & AUDIO_DEVICE_IN_BACK_MIC) { if (my_data->fluence_type & FLUENCE_DUAL_MIC && my_data->fluence_in_spkr_mode) { if (my_data->fluence_mode == FLUENCE_BROADSIDE) snd_device = SND_DEVICE_IN_SPEAKER_DMIC_AEC_NS_BROADSIDE; else snd_device = SND_DEVICE_IN_SPEAKER_DMIC_AEC_NS; adev->acdb_settings |= DMIC_FLAG; } else Loading @@ -1480,7 +1503,11 @@ snd_device_t platform_get_input_snd_device(void *platform, audio_devices_t out_d set_echo_reference(adev->mixer, EC_REF_RX); } else if (adev->active_input->enable_aec) { if (in_device & AUDIO_DEVICE_IN_BACK_MIC) { if (my_data->fluence_type & FLUENCE_DUAL_MIC) { if (my_data->fluence_type & FLUENCE_DUAL_MIC && my_data->fluence_in_spkr_mode) { if (my_data->fluence_mode == FLUENCE_BROADSIDE) snd_device = SND_DEVICE_IN_SPEAKER_DMIC_AEC_BROADSIDE; else snd_device = SND_DEVICE_IN_SPEAKER_DMIC_AEC; adev->acdb_settings |= DMIC_FLAG; } else Loading @@ -1497,7 +1524,11 @@ snd_device_t platform_get_input_snd_device(void *platform, audio_devices_t out_d set_echo_reference(adev->mixer, EC_REF_RX); } else if (adev->active_input->enable_ns) { if (in_device & AUDIO_DEVICE_IN_BACK_MIC) { if (my_data->fluence_type & FLUENCE_DUAL_MIC) { if (my_data->fluence_type & FLUENCE_DUAL_MIC && my_data->fluence_in_spkr_mode) { if (my_data->fluence_mode == FLUENCE_BROADSIDE) snd_device = SND_DEVICE_IN_SPEAKER_DMIC_NS_BROADSIDE; else snd_device = SND_DEVICE_IN_SPEAKER_DMIC_NS; adev->acdb_settings |= DMIC_FLAG; } else Loading
hal/msm8916/platform.h +10 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,11 @@ enum { FLUENCE_QUAD_MIC = 0x2, }; enum { FLUENCE_ENDFIRE = 0x1, FLUENCE_BROADSIDE = 0x2, }; /* * Below are the devices for which is back end is same, SLIMBUS_0_RX. * All these devices are handled by the internal HW codec. We can Loading Loading @@ -121,6 +126,11 @@ enum { SND_DEVICE_IN_HANDSET_STEREO_DMIC, SND_DEVICE_IN_SPEAKER_STEREO_DMIC, SND_DEVICE_IN_CAPTURE_VI_FEEDBACK, SND_DEVICE_IN_VOICE_SPEAKER_DMIC_BROADSIDE, SND_DEVICE_IN_SPEAKER_DMIC_BROADSIDE, SND_DEVICE_IN_SPEAKER_DMIC_AEC_BROADSIDE, SND_DEVICE_IN_SPEAKER_DMIC_NS_BROADSIDE, SND_DEVICE_IN_SPEAKER_DMIC_AEC_NS_BROADSIDE, SND_DEVICE_IN_END, SND_DEVICE_MAX = SND_DEVICE_IN_END, Loading