Loading hal/msm8974/platform.c +42 −6 Original line number Diff line number Diff line Loading @@ -112,6 +112,7 @@ struct platform_data { bool fluence_in_voice_rec; bool fluence_in_audio_rec; int fluence_type; int fluence_mode; int btsco_sample_rate; bool slowtalk; bool is_i2s_ext_modem; Loading Loading @@ -245,6 +246,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 @@ -318,6 +324,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 @@ -396,6 +407,11 @@ struct snd_device_index snd_device_name_index[SND_DEVICE_MAX] = { {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_STEREO_DMIC)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_STEREO_DMIC)}, {TO_NAME_INDEX(SND_DEVICE_IN_CAPTURE_VI_FEEDBACK)}, {TO_NAME_INDEX(SND_DEVICE_IN_VOICE_SPEAKER_DMIC_BROADSIDE)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_DMIC_BROADSIDE)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_DMIC_AEC_BROADSIDE)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_DMIC_NS_BROADSIDE)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_DMIC_AEC_NS_BROADSIDE)}, }; #define DEEP_BUFFER_PLATFORM_DELAY (29*1000LL) Loading Loading @@ -663,6 +679,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", value, ""); if (!strncmp("fluencepro", value, sizeof("fluencepro"))) { Loading Loading @@ -693,6 +710,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 @@ -1344,6 +1366,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 @@ -1379,6 +1404,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 @@ -1395,7 +1423,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 @@ -1412,7 +1444,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/msm8974/platform.h +11 −1 Original line number Diff line number Diff line /* * Copyright (c) 2013, The Linux Foundation. All rights reserved. * Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. * Not a Contribution. * * Copyright (C) 2013 The Android Open Source Project Loading @@ -26,6 +26,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 @@ -120,6 +125,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/msm8974/platform.c +42 −6 Original line number Diff line number Diff line Loading @@ -112,6 +112,7 @@ struct platform_data { bool fluence_in_voice_rec; bool fluence_in_audio_rec; int fluence_type; int fluence_mode; int btsco_sample_rate; bool slowtalk; bool is_i2s_ext_modem; Loading Loading @@ -245,6 +246,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 @@ -318,6 +324,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 @@ -396,6 +407,11 @@ struct snd_device_index snd_device_name_index[SND_DEVICE_MAX] = { {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_STEREO_DMIC)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_STEREO_DMIC)}, {TO_NAME_INDEX(SND_DEVICE_IN_CAPTURE_VI_FEEDBACK)}, {TO_NAME_INDEX(SND_DEVICE_IN_VOICE_SPEAKER_DMIC_BROADSIDE)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_DMIC_BROADSIDE)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_DMIC_AEC_BROADSIDE)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_DMIC_NS_BROADSIDE)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_DMIC_AEC_NS_BROADSIDE)}, }; #define DEEP_BUFFER_PLATFORM_DELAY (29*1000LL) Loading Loading @@ -663,6 +679,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", value, ""); if (!strncmp("fluencepro", value, sizeof("fluencepro"))) { Loading Loading @@ -693,6 +710,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 @@ -1344,6 +1366,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 @@ -1379,6 +1404,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 @@ -1395,7 +1423,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 @@ -1412,7 +1444,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/msm8974/platform.h +11 −1 Original line number Diff line number Diff line /* * Copyright (c) 2013, The Linux Foundation. All rights reserved. * Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. * Not a Contribution. * * Copyright (C) 2013 The Android Open Source Project Loading @@ -26,6 +26,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 @@ -120,6 +125,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