Loading hal/msm8974/platform.c +96 −20 Original line number Diff line number Diff line Loading @@ -293,6 +293,7 @@ struct platform_data { bool external_mic; bool speaker_lr_swap; bool fluence_sb_enabled; bool fluence_nn_enabled; int fluence_type; int fluence_mode; char fluence_cap[PROPERTY_VALUE_MAX]; Loading Loading @@ -610,13 +611,17 @@ static const char * const device_table[SND_DEVICE_MAX] = { /* Capture sound devices */ [SND_DEVICE_IN_HANDSET_MIC] = "handset-mic", [SND_DEVICE_IN_HANDSET_MIC_SB] = "handset-mic", [SND_DEVICE_IN_HANDSET_MIC_NN] = "handset-mic", [SND_DEVICE_IN_HANDSET_MIC_EXTERNAL] = "handset-mic-ext", [SND_DEVICE_IN_HANDSET_MIC_AEC] = "handset-mic", [SND_DEVICE_IN_HANDSET_MIC_AEC_SB] = "handset-mic", [SND_DEVICE_IN_HANDSET_MIC_AEC_NN] = "handset-mic", [SND_DEVICE_IN_HANDSET_MIC_NS] = "handset-mic", [SND_DEVICE_IN_HANDSET_MIC_NS_SB] = "handset-mic", [SND_DEVICE_IN_HANDSET_MIC_NS_NN] = "handset-mic", [SND_DEVICE_IN_HANDSET_MIC_AEC_NS] = "handset-mic", [SND_DEVICE_IN_HANDSET_MIC_AEC_NS_SB] = "handset-mic", [SND_DEVICE_IN_HANDSET_MIC_AEC_NS_NN] = "handset-mic", [SND_DEVICE_IN_HANDSET_DMIC] = "dmic-endfire", [SND_DEVICE_IN_HANDSET_DMIC_AEC] = "dmic-endfire", [SND_DEVICE_IN_HANDSET_DMIC_AEC_SB] = "dmic-endfire", Loading @@ -626,12 +631,16 @@ static const char * const device_table[SND_DEVICE_MAX] = { [SND_DEVICE_IN_HANDSET_DMIC_AEC_NS_SB] = "dmic-endfire", [SND_DEVICE_IN_SPEAKER_MIC] = "speaker-mic", [SND_DEVICE_IN_SPEAKER_MIC_SB] = "speaker-mic", [SND_DEVICE_IN_SPEAKER_MIC_NN] = "speaker-mic", [SND_DEVICE_IN_SPEAKER_MIC_AEC] = "speaker-mic", [SND_DEVICE_IN_SPEAKER_MIC_AEC_SB] = "speaker-mic", [SND_DEVICE_IN_SPEAKER_MIC_AEC_NN] = "speaker-mic", [SND_DEVICE_IN_SPEAKER_MIC_NS] = "speaker-mic", [SND_DEVICE_IN_SPEAKER_MIC_NS_SB] = "speaker-mic", [SND_DEVICE_IN_SPEAKER_MIC_NS_NN] = "speaker-mic", [SND_DEVICE_IN_SPEAKER_MIC_AEC_NS] = "speaker-mic", [SND_DEVICE_IN_SPEAKER_MIC_AEC_NS_SB] = "speaker-mic", [SND_DEVICE_IN_SPEAKER_MIC_AEC_NS_NN] = "speaker-mic", [SND_DEVICE_IN_SPEAKER_DMIC] = "speaker-dmic-endfire", [SND_DEVICE_IN_SPEAKER_DMIC_AEC] = "speaker-dmic-endfire", [SND_DEVICE_IN_SPEAKER_DMIC_AEC_SB] = "speaker-dmic-endfire", Loading @@ -644,6 +653,7 @@ static const char * const device_table[SND_DEVICE_MAX] = { [SND_DEVICE_IN_HEADSET_MIC_FLUENCE] = "headset-mic", [SND_DEVICE_IN_VOICE_SPEAKER_MIC] = "voice-speaker-mic", [SND_DEVICE_IN_VOICE_SPEAKER_MIC_SB] = "voice-speaker-mic", [SND_DEVICE_IN_VOICE_SPEAKER_MIC_NN] = "voice-speaker-mic", [SND_DEVICE_IN_VOICE_HEADSET_MIC] = "voice-headset-mic", [SND_DEVICE_IN_SPDIF] = "spdif-in", [SND_DEVICE_IN_HDMI_MIC] = "hdmi-in", Loading Loading @@ -779,6 +789,11 @@ static struct audio_effect_config effect_config_table[GET_IN_DEVICE_INDEX(SND_DE [GET_IN_DEVICE_INDEX(SND_DEVICE_IN_HANDSET_DMIC_AEC_NS_SB)][EFFECT_NS] = {TX_VOICE_FLUENCE_MM_SB, 0x8000, 0x10EAF, 0x02}, [GET_IN_DEVICE_INDEX(SND_DEVICE_IN_HANDSET_MIC_SB)][EFFECT_AEC] = {TX_VOICE_FLUENCE_SM_SB, 0x8000, 0x10EAF, 0x01}, [GET_IN_DEVICE_INDEX(SND_DEVICE_IN_HANDSET_MIC_SB)][EFFECT_NS] = {TX_VOICE_FLUENCE_SM_SB, 0x8000, 0x10EAF, 0x02}, [GET_IN_DEVICE_INDEX(SND_DEVICE_IN_SPEAKER_MIC_NN)][EFFECT_AEC] = {TX_VOICE_FLUENCE_SM_NN, 0x8000, 0x10EAF, 0x01}, [GET_IN_DEVICE_INDEX(SND_DEVICE_IN_SPEAKER_MIC_NN)][EFFECT_NS] = {TX_VOICE_FLUENCE_SM_NN, 0x8000, 0x10EAF, 0x02}, [GET_IN_DEVICE_INDEX(SND_DEVICE_IN_HANDSET_MIC_NN)][EFFECT_AEC] = {TX_VOICE_FLUENCE_SM_NN, 0x8000, 0x10EAF, 0x01}, [GET_IN_DEVICE_INDEX(SND_DEVICE_IN_HANDSET_MIC_NN)][EFFECT_NS] = {TX_VOICE_FLUENCE_SM_NN, 0x8000, 0x10EAF, 0x02}, }; static struct audio_fluence_mmsecns_config fluence_mmsecns_table = {TOPOLOGY_ID_MM_HFP_ECNS, MODULE_ID_MM_HFP_ECNS, Loading Loading @@ -885,13 +900,17 @@ static int acdb_device_table[SND_DEVICE_MAX] = { [SND_DEVICE_OUT_CALL_PROXY] = 32, [SND_DEVICE_IN_HANDSET_MIC] = 4, [SND_DEVICE_IN_HANDSET_MIC_SB] = 163, [SND_DEVICE_IN_HANDSET_MIC_NN] = 183, [SND_DEVICE_IN_HANDSET_MIC_EXTERNAL] = 4, [SND_DEVICE_IN_HANDSET_MIC_AEC] = 106, [SND_DEVICE_IN_HANDSET_MIC_AEC_SB] = 164, [SND_DEVICE_IN_HANDSET_MIC_AEC_NN] = 184, [SND_DEVICE_IN_HANDSET_MIC_NS] = 107, [SND_DEVICE_IN_HANDSET_MIC_NS_SB] = 165, [SND_DEVICE_IN_HANDSET_MIC_NS_NN] = 185, [SND_DEVICE_IN_HANDSET_MIC_AEC_NS] = 108, [SND_DEVICE_IN_HANDSET_MIC_AEC_NS_SB] = 166, [SND_DEVICE_IN_HANDSET_MIC_AEC_NS_NN] = 186, [SND_DEVICE_IN_HANDSET_DMIC] = 41, [SND_DEVICE_IN_HANDSET_DMIC_AEC] = 109, [SND_DEVICE_IN_HANDSET_DMIC_AEC_SB] = 168, Loading @@ -901,12 +920,16 @@ static int acdb_device_table[SND_DEVICE_MAX] = { [SND_DEVICE_IN_HANDSET_DMIC_AEC_NS_SB] = 170, [SND_DEVICE_IN_SPEAKER_MIC] = 11, [SND_DEVICE_IN_SPEAKER_MIC_SB] = 171, [SND_DEVICE_IN_SPEAKER_MIC_NN] = 187, [SND_DEVICE_IN_SPEAKER_MIC_AEC] = 112, [SND_DEVICE_IN_SPEAKER_MIC_AEC_SB] = 172, [SND_DEVICE_IN_SPEAKER_MIC_AEC_NN] = 189, [SND_DEVICE_IN_SPEAKER_MIC_NS] = 113, [SND_DEVICE_IN_SPEAKER_MIC_NS_SB] = 173, [SND_DEVICE_IN_SPEAKER_MIC_NS_NN] = 190, [SND_DEVICE_IN_SPEAKER_MIC_AEC_NS] = 114, [SND_DEVICE_IN_SPEAKER_MIC_AEC_NS_SB] = 174, [SND_DEVICE_IN_SPEAKER_MIC_AEC_NS_NN] = 192, [SND_DEVICE_IN_SPEAKER_DMIC] = 43, [SND_DEVICE_IN_SPEAKER_DMIC_AEC] = 115, [SND_DEVICE_IN_SPEAKER_DMIC_AEC_SB] = 176, Loading @@ -919,6 +942,7 @@ static int acdb_device_table[SND_DEVICE_MAX] = { [SND_DEVICE_IN_HEADSET_MIC_FLUENCE] = 47, [SND_DEVICE_IN_VOICE_SPEAKER_MIC] = 11, [SND_DEVICE_IN_VOICE_SPEAKER_MIC_SB] = 171, [SND_DEVICE_IN_VOICE_SPEAKER_MIC_NN] = 187, [SND_DEVICE_IN_VOICE_SPEAKER_MIC_HFP] = 11, [SND_DEVICE_IN_VOICE_SPEAKER_MIC_HFP_MMSECNS] = 131, [SND_DEVICE_IN_VOICE_HEADSET_MIC] = 8, Loading Loading @@ -1123,13 +1147,17 @@ static struct name_to_index snd_device_name_index[SND_DEVICE_MAX] = { {TO_NAME_INDEX(SND_DEVICE_OUT_CALL_PROXY)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_MIC)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_MIC_SB)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_MIC_NN)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_MIC_EXTERNAL)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_MIC_AEC)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_MIC_AEC_SB)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_MIC_AEC_NN)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_MIC_NS)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_MIC_NS_SB)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_MIC_NS_NN)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_MIC_AEC_NS)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_MIC_AEC_NS_SB)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_MIC_AEC_NS_NN)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_DMIC)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_DMIC_AEC)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_DMIC_AEC_SB)}, Loading @@ -1139,12 +1167,16 @@ static struct name_to_index snd_device_name_index[SND_DEVICE_MAX] = { {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_DMIC_AEC_NS_SB)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_MIC)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_MIC_SB)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_MIC_NN)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_MIC_AEC)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_MIC_AEC_SB)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_MIC_AEC_NN)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_MIC_NS)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_MIC_NS_SB)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_MIC_NS_NN)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_MIC_AEC_NS)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_MIC_AEC_NS_SB)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_MIC_AEC_NS_NN)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_DMIC)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_DMIC_AEC)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_DMIC_AEC_SB)}, Loading @@ -1158,6 +1190,7 @@ static struct name_to_index snd_device_name_index[SND_DEVICE_MAX] = { {TO_NAME_INDEX(SND_DEVICE_IN_HEADSET_MIC_FLUENCE)}, {TO_NAME_INDEX(SND_DEVICE_IN_VOICE_SPEAKER_MIC)}, {TO_NAME_INDEX(SND_DEVICE_IN_VOICE_SPEAKER_MIC_SB)}, {TO_NAME_INDEX(SND_DEVICE_IN_VOICE_SPEAKER_MIC_NN)}, {TO_NAME_INDEX(SND_DEVICE_IN_VOICE_SPEAKER_MIC_HFP)}, {TO_NAME_INDEX(SND_DEVICE_IN_VOICE_SPEAKER_MIC_HFP_MMSECNS)}, {TO_NAME_INDEX(SND_DEVICE_IN_VOICE_HEADSET_MIC)}, Loading Loading @@ -2354,13 +2387,17 @@ static void set_platform_defaults(struct platform_data * my_data) hw_interface_table[SND_DEVICE_OUT_CALL_PROXY] = strdup("CALL_PROXY_RX"); hw_interface_table[SND_DEVICE_IN_HANDSET_MIC] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_HANDSET_MIC_SB] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_HANDSET_MIC_NN] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_HANDSET_MIC_EXTERNAL] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_HANDSET_MIC_AEC] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_HANDSET_MIC_AEC_SB] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_HANDSET_MIC_AEC_NN] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_HANDSET_MIC_NS] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_HANDSET_MIC_NS_SB] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_HANDSET_MIC_NS_NN] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_HANDSET_MIC_AEC_NS] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_HANDSET_MIC_AEC_NS_SB] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_HANDSET_MIC_AEC_NS_NN] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_HANDSET_DMIC] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_HANDSET_DMIC_AEC] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_HANDSET_DMIC_AEC_SB] = strdup("SLIMBUS_0_TX"); Loading @@ -2373,12 +2410,16 @@ static void set_platform_defaults(struct platform_data * my_data) hw_interface_table[SND_DEVICE_IN_CAMCORDER_LANDSCAPE] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_SPEAKER_MIC] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_SPEAKER_MIC_SB] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_SPEAKER_MIC_NN] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_SPEAKER_MIC_AEC] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_SPEAKER_MIC_AEC_SB] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_SPEAKER_MIC_AEC_NN] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_SPEAKER_MIC_NS] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_SPEAKER_MIC_NS_SB] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_SPEAKER_MIC_NS_NN] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_SPEAKER_MIC_AEC_NS] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_SPEAKER_MIC_AEC_NS_SB] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_SPEAKER_MIC_AEC_NS_NN] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_SPEAKER_DMIC] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_SPEAKER_DMIC_AEC] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_SPEAKER_DMIC_AEC_SB] = strdup("SLIMBUS_0_TX"); Loading @@ -2391,6 +2432,7 @@ static void set_platform_defaults(struct platform_data * my_data) hw_interface_table[SND_DEVICE_IN_HEADSET_MIC_FLUENCE] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_VOICE_SPEAKER_MIC] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_VOICE_SPEAKER_MIC_SB] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_VOICE_SPEAKER_MIC_NN] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_VOICE_HEADSET_MIC] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_SPDIF] = strdup("PRI_SPDIF_TX"); hw_interface_table[SND_DEVICE_IN_HDMI_MIC] = strdup("SEC_MI2S_TX"); Loading Loading @@ -3089,6 +3131,7 @@ void *platform_init(struct audio_device *adev) my_data->external_spk_2 = false; my_data->external_mic = false; my_data->fluence_sb_enabled = false; my_data->fluence_nn_enabled = false; my_data->fluence_type = FLUENCE_NONE; my_data->fluence_mode = FLUENCE_ENDFIRE; my_data->ambisonic_capture = false; Loading Loading @@ -3123,6 +3166,10 @@ void *platform_init(struct audio_device *adev) if (property_get_bool("ro.vendor.audio.sdk.fluence.subband.enabled",false)) my_data->fluence_sb_enabled = true; /* Check for Fluence NN Enablement */ if (property_get_bool("ro.vendor.audio.sdk.fluence.nn.enabled",false)) my_data->fluence_nn_enabled = true; my_data->fluence_type = FLUENCE_NONE; if (property_get("ro.vendor.audio.sdk.fluencetype", my_data->fluence_cap, NULL) > 0) { Loading Loading @@ -3549,11 +3596,11 @@ acdb_init_fail: /* obtain source mic type from max mic count*/ get_source_mic_type(my_data); ALOGD("%s: Fluence_Type(%d) max_mic_count(%d) mic_type(0x%x) fluence_in_voice_call(%d)" " fluence_in_voice_rec(%d) fluence_in_spkr_mode(%d) fluence_in_hfp_call(%d)" "fluence_sb_enabled(%d)", __func__, my_data->fluence_type, my_data->max_mic_count, " fluence_in_voice_rec(%d) fluence_in_spkr_mode(%d) fluence_in_hfp_call(%d) fluence_sb_enabled(%d)" "fluence_nn_enabled(%d) ", __func__, my_data->fluence_type, my_data->max_mic_count, my_data->source_mic_type, my_data->fluence_in_voice_call, my_data->fluence_in_voice_rec, my_data->fluence_in_spkr_mode, my_data->fluence_in_hfp_call, my_data->fluence_sb_enabled); my_data->fluence_in_hfp_call, my_data->fluence_sb_enabled, my_data->fluence_nn_enabled); /* init usb */ audio_extn_usb_init(adev); Loading Loading @@ -6546,7 +6593,9 @@ static snd_device_t get_snd_device_for_voice_comm_ecns_enabled(struct platform_d } else snd_device = my_data->fluence_sb_enabled ? SND_DEVICE_IN_SPEAKER_MIC_SB : SND_DEVICE_IN_SPEAKER_MIC; : (my_data->fluence_nn_enabled ? SND_DEVICE_IN_SPEAKER_MIC_NN : SND_DEVICE_IN_SPEAKER_MIC); } else if (compare_device_type(in_devices, AUDIO_DEVICE_IN_BUILTIN_MIC)) { if ((my_data->fluence_type & FLUENCE_TRI_MIC) && (my_data->source_mic_type & SOURCE_THREE_MIC)) { Loading @@ -6561,7 +6610,9 @@ static snd_device_t get_snd_device_for_voice_comm_ecns_enabled(struct platform_d } else snd_device = my_data->fluence_sb_enabled ? SND_DEVICE_IN_HANDSET_MIC_SB : SND_DEVICE_IN_HANDSET_MIC; : (my_data->fluence_nn_enabled ? SND_DEVICE_IN_HANDSET_MIC_NN : SND_DEVICE_IN_HANDSET_MIC); } else if (compare_device_type(in_devices, AUDIO_DEVICE_IN_WIRED_HEADSET)) { snd_device = SND_DEVICE_IN_HEADSET_MIC; } Loading Loading @@ -6601,7 +6652,9 @@ static snd_device_t get_snd_device_for_voice_comm_ecns_disabled(struct platform_ } else snd_device = my_data->fluence_sb_enabled ? SND_DEVICE_IN_SPEAKER_MIC_AEC_NS_SB : SND_DEVICE_IN_SPEAKER_MIC_AEC_NS; : (my_data->fluence_nn_enabled? SND_DEVICE_IN_SPEAKER_MIC_AEC_NS_NN : SND_DEVICE_IN_SPEAKER_MIC_AEC_NS); } else if (compare_device_type(in_devices, AUDIO_DEVICE_IN_BUILTIN_MIC)) { if ((my_data->fluence_type & FLUENCE_TRI_MIC) && (my_data->source_mic_type & SOURCE_THREE_MIC)) { Loading @@ -6617,7 +6670,9 @@ static snd_device_t get_snd_device_for_voice_comm_ecns_disabled(struct platform_ } else snd_device = my_data->fluence_sb_enabled ? SND_DEVICE_IN_HANDSET_MIC_AEC_NS_SB : SND_DEVICE_IN_HANDSET_MIC_AEC_NS; : (my_data->fluence_nn_enabled ? SND_DEVICE_IN_HANDSET_MIC_AEC_NS_NN : SND_DEVICE_IN_HANDSET_MIC_AEC_NS); } else if (compare_device_type(in_devices, AUDIO_DEVICE_IN_WIRED_HEADSET)) { snd_device = SND_DEVICE_IN_HEADSET_MIC_FLUENCE; } else if (audio_extn_usb_connected(NULL) && Loading Loading @@ -6647,7 +6702,9 @@ static snd_device_t get_snd_device_for_voice_comm_ecns_disabled(struct platform_ } else snd_device = my_data->fluence_sb_enabled ? SND_DEVICE_IN_SPEAKER_MIC_AEC_SB : SND_DEVICE_IN_SPEAKER_MIC_AEC; : (my_data->fluence_nn_enabled ? SND_DEVICE_IN_SPEAKER_MIC_AEC_NN : SND_DEVICE_IN_SPEAKER_MIC_AEC); } else if (compare_device_type(in_devices, AUDIO_DEVICE_IN_BUILTIN_MIC)) { if ((my_data->fluence_type & FLUENCE_TRI_MIC) && (my_data->source_mic_type & SOURCE_THREE_MIC)) { Loading Loading @@ -6690,7 +6747,9 @@ static snd_device_t get_snd_device_for_voice_comm_ecns_disabled(struct platform_ } else snd_device = my_data->fluence_sb_enabled ? SND_DEVICE_IN_SPEAKER_MIC_NS_SB : SND_DEVICE_IN_SPEAKER_MIC_NS; : (my_data->fluence_nn_enabled ? SND_DEVICE_IN_SPEAKER_MIC_NS_NN : SND_DEVICE_IN_SPEAKER_MIC_NS); } else if (compare_device_type(in_devices, AUDIO_DEVICE_IN_BUILTIN_MIC)) { if ((my_data->fluence_type & FLUENCE_TRI_MIC) && (my_data->source_mic_type & SOURCE_THREE_MIC)) { Loading Loading @@ -6842,11 +6901,15 @@ snd_device_t platform_get_input_snd_device(void *platform, audio_extn_hfp_is_active(adev)) { snd_device = my_data->fluence_sb_enabled ? SND_DEVICE_IN_VOICE_SPEAKER_MIC_SB : SND_DEVICE_IN_VOICE_SPEAKER_MIC; : (my_data->fluence_nn_enabled ? SND_DEVICE_IN_VOICE_SPEAKER_MIC_NN : SND_DEVICE_IN_VOICE_SPEAKER_MIC); } else { snd_device = my_data->fluence_sb_enabled ? SND_DEVICE_IN_HANDSET_MIC_SB : SND_DEVICE_IN_HANDSET_MIC; : (my_data->fluence_nn_enabled ? SND_DEVICE_IN_HANDSET_MIC_NN : SND_DEVICE_IN_HANDSET_MIC); } if (audio_extn_hfp_is_active(adev)) platform_set_echo_reference(adev, true, out_devices); Loading Loading @@ -6930,7 +6993,9 @@ snd_device_t platform_get_input_snd_device(void *platform, } else { snd_device = my_data->fluence_sb_enabled ? SND_DEVICE_IN_VOICE_SPEAKER_MIC_SB : SND_DEVICE_IN_VOICE_SPEAKER_MIC; : (my_data->fluence_nn_enabled ? SND_DEVICE_IN_VOICE_SPEAKER_MIC_NN : SND_DEVICE_IN_VOICE_SPEAKER_MIC); if (audio_extn_hfp_is_active(adev)) platform_set_echo_reference(adev, true, out_devices); } Loading Loading @@ -7211,7 +7276,8 @@ snd_device_t platform_get_input_snd_device(void *platform, snd_device = SND_DEVICE_IN_HANDSET_DMIC_STEREO; else snd_device = my_data->fluence_sb_enabled ? SND_DEVICE_IN_HANDSET_MIC_SB : SND_DEVICE_IN_HANDSET_MIC; : (my_data->fluence_nn_enabled? SND_DEVICE_IN_HANDSET_MIC_NN : SND_DEVICE_IN_HANDSET_MIC); } else if (compare_device_type(&in_devices, AUDIO_DEVICE_IN_BACK_MIC)) { if ((my_data->source_mic_type & SOURCE_DUAL_MIC) && channel_count == 2) Loading @@ -7219,7 +7285,9 @@ snd_device_t platform_get_input_snd_device(void *platform, else snd_device = my_data->fluence_sb_enabled ? SND_DEVICE_IN_SPEAKER_MIC_SB : SND_DEVICE_IN_SPEAKER_MIC; : (my_data->fluence_nn_enabled ? SND_DEVICE_IN_SPEAKER_MIC_NN : SND_DEVICE_IN_SPEAKER_MIC); } else if (compare_device_type(&in_devices, AUDIO_DEVICE_IN_LINE)) { snd_device = SND_DEVICE_IN_LINE; } else if (compare_device_type(&in_devices, AUDIO_DEVICE_IN_WIRED_HEADSET)) { Loading Loading @@ -7263,12 +7331,14 @@ snd_device_t platform_get_input_snd_device(void *platform, ALOGE("%s: Unknown input device(s) %#x", __func__, get_device_types(&in_devices)); ALOGW("%s: Using default handset-mic", __func__); snd_device = my_data->fluence_sb_enabled ? SND_DEVICE_IN_HANDSET_MIC_SB : SND_DEVICE_IN_HANDSET_MIC; : (my_data->fluence_nn_enabled ? SND_DEVICE_IN_HANDSET_MIC_NN : SND_DEVICE_IN_HANDSET_MIC); } } else { if (compare_device_type(out_devices, AUDIO_DEVICE_OUT_EARPIECE)) { snd_device = my_data->fluence_sb_enabled ? SND_DEVICE_IN_HANDSET_MIC_SB : SND_DEVICE_IN_HANDSET_MIC; : (my_data->fluence_nn_enabled ? SND_DEVICE_IN_HANDSET_MIC_NN : SND_DEVICE_IN_HANDSET_MIC); } else if (compare_device_type(out_devices, AUDIO_DEVICE_OUT_WIRED_HEADSET)) { snd_device = SND_DEVICE_IN_HEADSET_MIC; } else if (compare_device_type(out_devices, AUDIO_DEVICE_OUT_SPEAKER) || Loading @@ -7280,19 +7350,24 @@ snd_device_t platform_get_input_snd_device(void *platform, (channel_count == 1)) { snd_device = my_data->fluence_sb_enabled ? SND_DEVICE_IN_SPEAKER_MIC_SB : SND_DEVICE_IN_SPEAKER_MIC; : (my_data->fluence_nn_enabled ? SND_DEVICE_IN_SPEAKER_MIC_NN : SND_DEVICE_IN_SPEAKER_MIC); } else { ALOGE("%s: something wrong: source type (%d) channel_count (%d) .." " no combination found .. setting to mono", __func__, my_data->source_mic_type, channel_count); snd_device = my_data->fluence_sb_enabled ? SND_DEVICE_IN_SPEAKER_MIC_SB : SND_DEVICE_IN_SPEAKER_MIC; : (my_data->fluence_nn_enabled ? SND_DEVICE_IN_SPEAKER_MIC_NN : SND_DEVICE_IN_SPEAKER_MIC); } } else if (compare_device_type(out_devices, AUDIO_DEVICE_OUT_WIRED_HEADPHONE) || compare_device_type(out_devices, AUDIO_DEVICE_OUT_LINE)) { snd_device = my_data->fluence_sb_enabled ? SND_DEVICE_IN_HANDSET_MIC_SB : SND_DEVICE_IN_HANDSET_MIC; : (my_data->fluence_nn_enabled ? SND_DEVICE_IN_HANDSET_MIC_NN : SND_DEVICE_IN_HANDSET_MIC); } else if (compare_device_type(out_devices, AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET)) { if (adev->swb_speech_mode != SPEECH_MODE_INVALID) { if (adev->bluetooth_nrec) Loading Loading @@ -7328,7 +7403,8 @@ snd_device_t platform_get_input_snd_device(void *platform, ALOGE("%s: Unknown output device(s) %#x", __func__, get_device_types(out_devices)); ALOGW("%s: Using default handset-mic", __func__); snd_device = my_data->fluence_sb_enabled ? SND_DEVICE_IN_HANDSET_MIC_SB : SND_DEVICE_IN_HANDSET_MIC; : (my_data->fluence_nn_enabled ? SND_DEVICE_IN_HANDSET_MIC_NN : SND_DEVICE_IN_HANDSET_MIC); } } exit: Loading hal/msm8974/platform.h +10 −0 Original line number Diff line number Diff line Loading @@ -176,11 +176,15 @@ enum { SND_DEVICE_IN_HANDSET_MIC = SND_DEVICE_IN_BEGIN, SND_DEVICE_IN_HANDSET_MIC_SB, SND_DEVICE_IN_HANDSET_MIC_EXTERNAL, SND_DEVICE_IN_HANDSET_MIC_NN, SND_DEVICE_IN_HANDSET_MIC_AEC, SND_DEVICE_IN_HANDSET_MIC_AEC_SB, SND_DEVICE_IN_HANDSET_MIC_AEC_NN, SND_DEVICE_IN_HANDSET_MIC_NS, SND_DEVICE_IN_HANDSET_MIC_NS_NN, SND_DEVICE_IN_HANDSET_MIC_NS_SB, SND_DEVICE_IN_HANDSET_MIC_AEC_NS, SND_DEVICE_IN_HANDSET_MIC_AEC_NS_NN, SND_DEVICE_IN_HANDSET_MIC_AEC_NS_SB, SND_DEVICE_IN_HANDSET_DMIC, SND_DEVICE_IN_HANDSET_DMIC_AEC, Loading @@ -191,12 +195,16 @@ enum { SND_DEVICE_IN_HANDSET_DMIC_AEC_NS_SB, SND_DEVICE_IN_SPEAKER_MIC, SND_DEVICE_IN_SPEAKER_MIC_SB, SND_DEVICE_IN_SPEAKER_MIC_NN, SND_DEVICE_IN_SPEAKER_MIC_AEC, SND_DEVICE_IN_SPEAKER_MIC_AEC_SB, SND_DEVICE_IN_SPEAKER_MIC_AEC_NN, SND_DEVICE_IN_SPEAKER_MIC_NS, SND_DEVICE_IN_SPEAKER_MIC_NS_SB, SND_DEVICE_IN_SPEAKER_MIC_NS_NN, SND_DEVICE_IN_SPEAKER_MIC_AEC_NS, SND_DEVICE_IN_SPEAKER_MIC_AEC_NS_SB, SND_DEVICE_IN_SPEAKER_MIC_AEC_NS_NN, SND_DEVICE_IN_SPEAKER_DMIC, SND_DEVICE_IN_SPEAKER_DMIC_AEC, SND_DEVICE_IN_SPEAKER_DMIC_AEC_SB, Loading @@ -209,6 +217,7 @@ enum { SND_DEVICE_IN_HEADSET_MIC_FLUENCE, SND_DEVICE_IN_VOICE_SPEAKER_MIC, SND_DEVICE_IN_VOICE_SPEAKER_MIC_SB, SND_DEVICE_IN_VOICE_SPEAKER_MIC_NN, SND_DEVICE_IN_VOICE_SPEAKER_MIC_HFP, SND_DEVICE_IN_VOICE_SPEAKER_MIC_HFP_MMSECNS, SND_DEVICE_IN_VOICE_HEADSET_MIC, Loading Loading @@ -682,6 +691,7 @@ enum { #define TX_VOICE_FV5ECNS_DM 0x10F0A #define TX_VOICE_FLUENCE_SM_SB 0x10F38 #define TX_VOICE_FLUENCE_MM_SB 0x10F39 #define TX_VOICE_FLUENCE_SM_NN 0x10B0F /* multi-mic surround ECNS zone control */ #define TOPOLOGY_ID_MM_HFP_ECNS 0x1FFF0002 Loading Loading
hal/msm8974/platform.c +96 −20 Original line number Diff line number Diff line Loading @@ -293,6 +293,7 @@ struct platform_data { bool external_mic; bool speaker_lr_swap; bool fluence_sb_enabled; bool fluence_nn_enabled; int fluence_type; int fluence_mode; char fluence_cap[PROPERTY_VALUE_MAX]; Loading Loading @@ -610,13 +611,17 @@ static const char * const device_table[SND_DEVICE_MAX] = { /* Capture sound devices */ [SND_DEVICE_IN_HANDSET_MIC] = "handset-mic", [SND_DEVICE_IN_HANDSET_MIC_SB] = "handset-mic", [SND_DEVICE_IN_HANDSET_MIC_NN] = "handset-mic", [SND_DEVICE_IN_HANDSET_MIC_EXTERNAL] = "handset-mic-ext", [SND_DEVICE_IN_HANDSET_MIC_AEC] = "handset-mic", [SND_DEVICE_IN_HANDSET_MIC_AEC_SB] = "handset-mic", [SND_DEVICE_IN_HANDSET_MIC_AEC_NN] = "handset-mic", [SND_DEVICE_IN_HANDSET_MIC_NS] = "handset-mic", [SND_DEVICE_IN_HANDSET_MIC_NS_SB] = "handset-mic", [SND_DEVICE_IN_HANDSET_MIC_NS_NN] = "handset-mic", [SND_DEVICE_IN_HANDSET_MIC_AEC_NS] = "handset-mic", [SND_DEVICE_IN_HANDSET_MIC_AEC_NS_SB] = "handset-mic", [SND_DEVICE_IN_HANDSET_MIC_AEC_NS_NN] = "handset-mic", [SND_DEVICE_IN_HANDSET_DMIC] = "dmic-endfire", [SND_DEVICE_IN_HANDSET_DMIC_AEC] = "dmic-endfire", [SND_DEVICE_IN_HANDSET_DMIC_AEC_SB] = "dmic-endfire", Loading @@ -626,12 +631,16 @@ static const char * const device_table[SND_DEVICE_MAX] = { [SND_DEVICE_IN_HANDSET_DMIC_AEC_NS_SB] = "dmic-endfire", [SND_DEVICE_IN_SPEAKER_MIC] = "speaker-mic", [SND_DEVICE_IN_SPEAKER_MIC_SB] = "speaker-mic", [SND_DEVICE_IN_SPEAKER_MIC_NN] = "speaker-mic", [SND_DEVICE_IN_SPEAKER_MIC_AEC] = "speaker-mic", [SND_DEVICE_IN_SPEAKER_MIC_AEC_SB] = "speaker-mic", [SND_DEVICE_IN_SPEAKER_MIC_AEC_NN] = "speaker-mic", [SND_DEVICE_IN_SPEAKER_MIC_NS] = "speaker-mic", [SND_DEVICE_IN_SPEAKER_MIC_NS_SB] = "speaker-mic", [SND_DEVICE_IN_SPEAKER_MIC_NS_NN] = "speaker-mic", [SND_DEVICE_IN_SPEAKER_MIC_AEC_NS] = "speaker-mic", [SND_DEVICE_IN_SPEAKER_MIC_AEC_NS_SB] = "speaker-mic", [SND_DEVICE_IN_SPEAKER_MIC_AEC_NS_NN] = "speaker-mic", [SND_DEVICE_IN_SPEAKER_DMIC] = "speaker-dmic-endfire", [SND_DEVICE_IN_SPEAKER_DMIC_AEC] = "speaker-dmic-endfire", [SND_DEVICE_IN_SPEAKER_DMIC_AEC_SB] = "speaker-dmic-endfire", Loading @@ -644,6 +653,7 @@ static const char * const device_table[SND_DEVICE_MAX] = { [SND_DEVICE_IN_HEADSET_MIC_FLUENCE] = "headset-mic", [SND_DEVICE_IN_VOICE_SPEAKER_MIC] = "voice-speaker-mic", [SND_DEVICE_IN_VOICE_SPEAKER_MIC_SB] = "voice-speaker-mic", [SND_DEVICE_IN_VOICE_SPEAKER_MIC_NN] = "voice-speaker-mic", [SND_DEVICE_IN_VOICE_HEADSET_MIC] = "voice-headset-mic", [SND_DEVICE_IN_SPDIF] = "spdif-in", [SND_DEVICE_IN_HDMI_MIC] = "hdmi-in", Loading Loading @@ -779,6 +789,11 @@ static struct audio_effect_config effect_config_table[GET_IN_DEVICE_INDEX(SND_DE [GET_IN_DEVICE_INDEX(SND_DEVICE_IN_HANDSET_DMIC_AEC_NS_SB)][EFFECT_NS] = {TX_VOICE_FLUENCE_MM_SB, 0x8000, 0x10EAF, 0x02}, [GET_IN_DEVICE_INDEX(SND_DEVICE_IN_HANDSET_MIC_SB)][EFFECT_AEC] = {TX_VOICE_FLUENCE_SM_SB, 0x8000, 0x10EAF, 0x01}, [GET_IN_DEVICE_INDEX(SND_DEVICE_IN_HANDSET_MIC_SB)][EFFECT_NS] = {TX_VOICE_FLUENCE_SM_SB, 0x8000, 0x10EAF, 0x02}, [GET_IN_DEVICE_INDEX(SND_DEVICE_IN_SPEAKER_MIC_NN)][EFFECT_AEC] = {TX_VOICE_FLUENCE_SM_NN, 0x8000, 0x10EAF, 0x01}, [GET_IN_DEVICE_INDEX(SND_DEVICE_IN_SPEAKER_MIC_NN)][EFFECT_NS] = {TX_VOICE_FLUENCE_SM_NN, 0x8000, 0x10EAF, 0x02}, [GET_IN_DEVICE_INDEX(SND_DEVICE_IN_HANDSET_MIC_NN)][EFFECT_AEC] = {TX_VOICE_FLUENCE_SM_NN, 0x8000, 0x10EAF, 0x01}, [GET_IN_DEVICE_INDEX(SND_DEVICE_IN_HANDSET_MIC_NN)][EFFECT_NS] = {TX_VOICE_FLUENCE_SM_NN, 0x8000, 0x10EAF, 0x02}, }; static struct audio_fluence_mmsecns_config fluence_mmsecns_table = {TOPOLOGY_ID_MM_HFP_ECNS, MODULE_ID_MM_HFP_ECNS, Loading Loading @@ -885,13 +900,17 @@ static int acdb_device_table[SND_DEVICE_MAX] = { [SND_DEVICE_OUT_CALL_PROXY] = 32, [SND_DEVICE_IN_HANDSET_MIC] = 4, [SND_DEVICE_IN_HANDSET_MIC_SB] = 163, [SND_DEVICE_IN_HANDSET_MIC_NN] = 183, [SND_DEVICE_IN_HANDSET_MIC_EXTERNAL] = 4, [SND_DEVICE_IN_HANDSET_MIC_AEC] = 106, [SND_DEVICE_IN_HANDSET_MIC_AEC_SB] = 164, [SND_DEVICE_IN_HANDSET_MIC_AEC_NN] = 184, [SND_DEVICE_IN_HANDSET_MIC_NS] = 107, [SND_DEVICE_IN_HANDSET_MIC_NS_SB] = 165, [SND_DEVICE_IN_HANDSET_MIC_NS_NN] = 185, [SND_DEVICE_IN_HANDSET_MIC_AEC_NS] = 108, [SND_DEVICE_IN_HANDSET_MIC_AEC_NS_SB] = 166, [SND_DEVICE_IN_HANDSET_MIC_AEC_NS_NN] = 186, [SND_DEVICE_IN_HANDSET_DMIC] = 41, [SND_DEVICE_IN_HANDSET_DMIC_AEC] = 109, [SND_DEVICE_IN_HANDSET_DMIC_AEC_SB] = 168, Loading @@ -901,12 +920,16 @@ static int acdb_device_table[SND_DEVICE_MAX] = { [SND_DEVICE_IN_HANDSET_DMIC_AEC_NS_SB] = 170, [SND_DEVICE_IN_SPEAKER_MIC] = 11, [SND_DEVICE_IN_SPEAKER_MIC_SB] = 171, [SND_DEVICE_IN_SPEAKER_MIC_NN] = 187, [SND_DEVICE_IN_SPEAKER_MIC_AEC] = 112, [SND_DEVICE_IN_SPEAKER_MIC_AEC_SB] = 172, [SND_DEVICE_IN_SPEAKER_MIC_AEC_NN] = 189, [SND_DEVICE_IN_SPEAKER_MIC_NS] = 113, [SND_DEVICE_IN_SPEAKER_MIC_NS_SB] = 173, [SND_DEVICE_IN_SPEAKER_MIC_NS_NN] = 190, [SND_DEVICE_IN_SPEAKER_MIC_AEC_NS] = 114, [SND_DEVICE_IN_SPEAKER_MIC_AEC_NS_SB] = 174, [SND_DEVICE_IN_SPEAKER_MIC_AEC_NS_NN] = 192, [SND_DEVICE_IN_SPEAKER_DMIC] = 43, [SND_DEVICE_IN_SPEAKER_DMIC_AEC] = 115, [SND_DEVICE_IN_SPEAKER_DMIC_AEC_SB] = 176, Loading @@ -919,6 +942,7 @@ static int acdb_device_table[SND_DEVICE_MAX] = { [SND_DEVICE_IN_HEADSET_MIC_FLUENCE] = 47, [SND_DEVICE_IN_VOICE_SPEAKER_MIC] = 11, [SND_DEVICE_IN_VOICE_SPEAKER_MIC_SB] = 171, [SND_DEVICE_IN_VOICE_SPEAKER_MIC_NN] = 187, [SND_DEVICE_IN_VOICE_SPEAKER_MIC_HFP] = 11, [SND_DEVICE_IN_VOICE_SPEAKER_MIC_HFP_MMSECNS] = 131, [SND_DEVICE_IN_VOICE_HEADSET_MIC] = 8, Loading Loading @@ -1123,13 +1147,17 @@ static struct name_to_index snd_device_name_index[SND_DEVICE_MAX] = { {TO_NAME_INDEX(SND_DEVICE_OUT_CALL_PROXY)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_MIC)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_MIC_SB)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_MIC_NN)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_MIC_EXTERNAL)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_MIC_AEC)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_MIC_AEC_SB)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_MIC_AEC_NN)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_MIC_NS)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_MIC_NS_SB)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_MIC_NS_NN)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_MIC_AEC_NS)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_MIC_AEC_NS_SB)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_MIC_AEC_NS_NN)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_DMIC)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_DMIC_AEC)}, {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_DMIC_AEC_SB)}, Loading @@ -1139,12 +1167,16 @@ static struct name_to_index snd_device_name_index[SND_DEVICE_MAX] = { {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_DMIC_AEC_NS_SB)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_MIC)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_MIC_SB)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_MIC_NN)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_MIC_AEC)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_MIC_AEC_SB)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_MIC_AEC_NN)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_MIC_NS)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_MIC_NS_SB)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_MIC_NS_NN)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_MIC_AEC_NS)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_MIC_AEC_NS_SB)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_MIC_AEC_NS_NN)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_DMIC)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_DMIC_AEC)}, {TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_DMIC_AEC_SB)}, Loading @@ -1158,6 +1190,7 @@ static struct name_to_index snd_device_name_index[SND_DEVICE_MAX] = { {TO_NAME_INDEX(SND_DEVICE_IN_HEADSET_MIC_FLUENCE)}, {TO_NAME_INDEX(SND_DEVICE_IN_VOICE_SPEAKER_MIC)}, {TO_NAME_INDEX(SND_DEVICE_IN_VOICE_SPEAKER_MIC_SB)}, {TO_NAME_INDEX(SND_DEVICE_IN_VOICE_SPEAKER_MIC_NN)}, {TO_NAME_INDEX(SND_DEVICE_IN_VOICE_SPEAKER_MIC_HFP)}, {TO_NAME_INDEX(SND_DEVICE_IN_VOICE_SPEAKER_MIC_HFP_MMSECNS)}, {TO_NAME_INDEX(SND_DEVICE_IN_VOICE_HEADSET_MIC)}, Loading Loading @@ -2354,13 +2387,17 @@ static void set_platform_defaults(struct platform_data * my_data) hw_interface_table[SND_DEVICE_OUT_CALL_PROXY] = strdup("CALL_PROXY_RX"); hw_interface_table[SND_DEVICE_IN_HANDSET_MIC] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_HANDSET_MIC_SB] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_HANDSET_MIC_NN] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_HANDSET_MIC_EXTERNAL] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_HANDSET_MIC_AEC] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_HANDSET_MIC_AEC_SB] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_HANDSET_MIC_AEC_NN] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_HANDSET_MIC_NS] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_HANDSET_MIC_NS_SB] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_HANDSET_MIC_NS_NN] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_HANDSET_MIC_AEC_NS] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_HANDSET_MIC_AEC_NS_SB] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_HANDSET_MIC_AEC_NS_NN] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_HANDSET_DMIC] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_HANDSET_DMIC_AEC] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_HANDSET_DMIC_AEC_SB] = strdup("SLIMBUS_0_TX"); Loading @@ -2373,12 +2410,16 @@ static void set_platform_defaults(struct platform_data * my_data) hw_interface_table[SND_DEVICE_IN_CAMCORDER_LANDSCAPE] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_SPEAKER_MIC] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_SPEAKER_MIC_SB] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_SPEAKER_MIC_NN] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_SPEAKER_MIC_AEC] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_SPEAKER_MIC_AEC_SB] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_SPEAKER_MIC_AEC_NN] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_SPEAKER_MIC_NS] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_SPEAKER_MIC_NS_SB] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_SPEAKER_MIC_NS_NN] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_SPEAKER_MIC_AEC_NS] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_SPEAKER_MIC_AEC_NS_SB] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_SPEAKER_MIC_AEC_NS_NN] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_SPEAKER_DMIC] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_SPEAKER_DMIC_AEC] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_SPEAKER_DMIC_AEC_SB] = strdup("SLIMBUS_0_TX"); Loading @@ -2391,6 +2432,7 @@ static void set_platform_defaults(struct platform_data * my_data) hw_interface_table[SND_DEVICE_IN_HEADSET_MIC_FLUENCE] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_VOICE_SPEAKER_MIC] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_VOICE_SPEAKER_MIC_SB] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_VOICE_SPEAKER_MIC_NN] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_VOICE_HEADSET_MIC] = strdup("SLIMBUS_0_TX"); hw_interface_table[SND_DEVICE_IN_SPDIF] = strdup("PRI_SPDIF_TX"); hw_interface_table[SND_DEVICE_IN_HDMI_MIC] = strdup("SEC_MI2S_TX"); Loading Loading @@ -3089,6 +3131,7 @@ void *platform_init(struct audio_device *adev) my_data->external_spk_2 = false; my_data->external_mic = false; my_data->fluence_sb_enabled = false; my_data->fluence_nn_enabled = false; my_data->fluence_type = FLUENCE_NONE; my_data->fluence_mode = FLUENCE_ENDFIRE; my_data->ambisonic_capture = false; Loading Loading @@ -3123,6 +3166,10 @@ void *platform_init(struct audio_device *adev) if (property_get_bool("ro.vendor.audio.sdk.fluence.subband.enabled",false)) my_data->fluence_sb_enabled = true; /* Check for Fluence NN Enablement */ if (property_get_bool("ro.vendor.audio.sdk.fluence.nn.enabled",false)) my_data->fluence_nn_enabled = true; my_data->fluence_type = FLUENCE_NONE; if (property_get("ro.vendor.audio.sdk.fluencetype", my_data->fluence_cap, NULL) > 0) { Loading Loading @@ -3549,11 +3596,11 @@ acdb_init_fail: /* obtain source mic type from max mic count*/ get_source_mic_type(my_data); ALOGD("%s: Fluence_Type(%d) max_mic_count(%d) mic_type(0x%x) fluence_in_voice_call(%d)" " fluence_in_voice_rec(%d) fluence_in_spkr_mode(%d) fluence_in_hfp_call(%d)" "fluence_sb_enabled(%d)", __func__, my_data->fluence_type, my_data->max_mic_count, " fluence_in_voice_rec(%d) fluence_in_spkr_mode(%d) fluence_in_hfp_call(%d) fluence_sb_enabled(%d)" "fluence_nn_enabled(%d) ", __func__, my_data->fluence_type, my_data->max_mic_count, my_data->source_mic_type, my_data->fluence_in_voice_call, my_data->fluence_in_voice_rec, my_data->fluence_in_spkr_mode, my_data->fluence_in_hfp_call, my_data->fluence_sb_enabled); my_data->fluence_in_hfp_call, my_data->fluence_sb_enabled, my_data->fluence_nn_enabled); /* init usb */ audio_extn_usb_init(adev); Loading Loading @@ -6546,7 +6593,9 @@ static snd_device_t get_snd_device_for_voice_comm_ecns_enabled(struct platform_d } else snd_device = my_data->fluence_sb_enabled ? SND_DEVICE_IN_SPEAKER_MIC_SB : SND_DEVICE_IN_SPEAKER_MIC; : (my_data->fluence_nn_enabled ? SND_DEVICE_IN_SPEAKER_MIC_NN : SND_DEVICE_IN_SPEAKER_MIC); } else if (compare_device_type(in_devices, AUDIO_DEVICE_IN_BUILTIN_MIC)) { if ((my_data->fluence_type & FLUENCE_TRI_MIC) && (my_data->source_mic_type & SOURCE_THREE_MIC)) { Loading @@ -6561,7 +6610,9 @@ static snd_device_t get_snd_device_for_voice_comm_ecns_enabled(struct platform_d } else snd_device = my_data->fluence_sb_enabled ? SND_DEVICE_IN_HANDSET_MIC_SB : SND_DEVICE_IN_HANDSET_MIC; : (my_data->fluence_nn_enabled ? SND_DEVICE_IN_HANDSET_MIC_NN : SND_DEVICE_IN_HANDSET_MIC); } else if (compare_device_type(in_devices, AUDIO_DEVICE_IN_WIRED_HEADSET)) { snd_device = SND_DEVICE_IN_HEADSET_MIC; } Loading Loading @@ -6601,7 +6652,9 @@ static snd_device_t get_snd_device_for_voice_comm_ecns_disabled(struct platform_ } else snd_device = my_data->fluence_sb_enabled ? SND_DEVICE_IN_SPEAKER_MIC_AEC_NS_SB : SND_DEVICE_IN_SPEAKER_MIC_AEC_NS; : (my_data->fluence_nn_enabled? SND_DEVICE_IN_SPEAKER_MIC_AEC_NS_NN : SND_DEVICE_IN_SPEAKER_MIC_AEC_NS); } else if (compare_device_type(in_devices, AUDIO_DEVICE_IN_BUILTIN_MIC)) { if ((my_data->fluence_type & FLUENCE_TRI_MIC) && (my_data->source_mic_type & SOURCE_THREE_MIC)) { Loading @@ -6617,7 +6670,9 @@ static snd_device_t get_snd_device_for_voice_comm_ecns_disabled(struct platform_ } else snd_device = my_data->fluence_sb_enabled ? SND_DEVICE_IN_HANDSET_MIC_AEC_NS_SB : SND_DEVICE_IN_HANDSET_MIC_AEC_NS; : (my_data->fluence_nn_enabled ? SND_DEVICE_IN_HANDSET_MIC_AEC_NS_NN : SND_DEVICE_IN_HANDSET_MIC_AEC_NS); } else if (compare_device_type(in_devices, AUDIO_DEVICE_IN_WIRED_HEADSET)) { snd_device = SND_DEVICE_IN_HEADSET_MIC_FLUENCE; } else if (audio_extn_usb_connected(NULL) && Loading Loading @@ -6647,7 +6702,9 @@ static snd_device_t get_snd_device_for_voice_comm_ecns_disabled(struct platform_ } else snd_device = my_data->fluence_sb_enabled ? SND_DEVICE_IN_SPEAKER_MIC_AEC_SB : SND_DEVICE_IN_SPEAKER_MIC_AEC; : (my_data->fluence_nn_enabled ? SND_DEVICE_IN_SPEAKER_MIC_AEC_NN : SND_DEVICE_IN_SPEAKER_MIC_AEC); } else if (compare_device_type(in_devices, AUDIO_DEVICE_IN_BUILTIN_MIC)) { if ((my_data->fluence_type & FLUENCE_TRI_MIC) && (my_data->source_mic_type & SOURCE_THREE_MIC)) { Loading Loading @@ -6690,7 +6747,9 @@ static snd_device_t get_snd_device_for_voice_comm_ecns_disabled(struct platform_ } else snd_device = my_data->fluence_sb_enabled ? SND_DEVICE_IN_SPEAKER_MIC_NS_SB : SND_DEVICE_IN_SPEAKER_MIC_NS; : (my_data->fluence_nn_enabled ? SND_DEVICE_IN_SPEAKER_MIC_NS_NN : SND_DEVICE_IN_SPEAKER_MIC_NS); } else if (compare_device_type(in_devices, AUDIO_DEVICE_IN_BUILTIN_MIC)) { if ((my_data->fluence_type & FLUENCE_TRI_MIC) && (my_data->source_mic_type & SOURCE_THREE_MIC)) { Loading Loading @@ -6842,11 +6901,15 @@ snd_device_t platform_get_input_snd_device(void *platform, audio_extn_hfp_is_active(adev)) { snd_device = my_data->fluence_sb_enabled ? SND_DEVICE_IN_VOICE_SPEAKER_MIC_SB : SND_DEVICE_IN_VOICE_SPEAKER_MIC; : (my_data->fluence_nn_enabled ? SND_DEVICE_IN_VOICE_SPEAKER_MIC_NN : SND_DEVICE_IN_VOICE_SPEAKER_MIC); } else { snd_device = my_data->fluence_sb_enabled ? SND_DEVICE_IN_HANDSET_MIC_SB : SND_DEVICE_IN_HANDSET_MIC; : (my_data->fluence_nn_enabled ? SND_DEVICE_IN_HANDSET_MIC_NN : SND_DEVICE_IN_HANDSET_MIC); } if (audio_extn_hfp_is_active(adev)) platform_set_echo_reference(adev, true, out_devices); Loading Loading @@ -6930,7 +6993,9 @@ snd_device_t platform_get_input_snd_device(void *platform, } else { snd_device = my_data->fluence_sb_enabled ? SND_DEVICE_IN_VOICE_SPEAKER_MIC_SB : SND_DEVICE_IN_VOICE_SPEAKER_MIC; : (my_data->fluence_nn_enabled ? SND_DEVICE_IN_VOICE_SPEAKER_MIC_NN : SND_DEVICE_IN_VOICE_SPEAKER_MIC); if (audio_extn_hfp_is_active(adev)) platform_set_echo_reference(adev, true, out_devices); } Loading Loading @@ -7211,7 +7276,8 @@ snd_device_t platform_get_input_snd_device(void *platform, snd_device = SND_DEVICE_IN_HANDSET_DMIC_STEREO; else snd_device = my_data->fluence_sb_enabled ? SND_DEVICE_IN_HANDSET_MIC_SB : SND_DEVICE_IN_HANDSET_MIC; : (my_data->fluence_nn_enabled? SND_DEVICE_IN_HANDSET_MIC_NN : SND_DEVICE_IN_HANDSET_MIC); } else if (compare_device_type(&in_devices, AUDIO_DEVICE_IN_BACK_MIC)) { if ((my_data->source_mic_type & SOURCE_DUAL_MIC) && channel_count == 2) Loading @@ -7219,7 +7285,9 @@ snd_device_t platform_get_input_snd_device(void *platform, else snd_device = my_data->fluence_sb_enabled ? SND_DEVICE_IN_SPEAKER_MIC_SB : SND_DEVICE_IN_SPEAKER_MIC; : (my_data->fluence_nn_enabled ? SND_DEVICE_IN_SPEAKER_MIC_NN : SND_DEVICE_IN_SPEAKER_MIC); } else if (compare_device_type(&in_devices, AUDIO_DEVICE_IN_LINE)) { snd_device = SND_DEVICE_IN_LINE; } else if (compare_device_type(&in_devices, AUDIO_DEVICE_IN_WIRED_HEADSET)) { Loading Loading @@ -7263,12 +7331,14 @@ snd_device_t platform_get_input_snd_device(void *platform, ALOGE("%s: Unknown input device(s) %#x", __func__, get_device_types(&in_devices)); ALOGW("%s: Using default handset-mic", __func__); snd_device = my_data->fluence_sb_enabled ? SND_DEVICE_IN_HANDSET_MIC_SB : SND_DEVICE_IN_HANDSET_MIC; : (my_data->fluence_nn_enabled ? SND_DEVICE_IN_HANDSET_MIC_NN : SND_DEVICE_IN_HANDSET_MIC); } } else { if (compare_device_type(out_devices, AUDIO_DEVICE_OUT_EARPIECE)) { snd_device = my_data->fluence_sb_enabled ? SND_DEVICE_IN_HANDSET_MIC_SB : SND_DEVICE_IN_HANDSET_MIC; : (my_data->fluence_nn_enabled ? SND_DEVICE_IN_HANDSET_MIC_NN : SND_DEVICE_IN_HANDSET_MIC); } else if (compare_device_type(out_devices, AUDIO_DEVICE_OUT_WIRED_HEADSET)) { snd_device = SND_DEVICE_IN_HEADSET_MIC; } else if (compare_device_type(out_devices, AUDIO_DEVICE_OUT_SPEAKER) || Loading @@ -7280,19 +7350,24 @@ snd_device_t platform_get_input_snd_device(void *platform, (channel_count == 1)) { snd_device = my_data->fluence_sb_enabled ? SND_DEVICE_IN_SPEAKER_MIC_SB : SND_DEVICE_IN_SPEAKER_MIC; : (my_data->fluence_nn_enabled ? SND_DEVICE_IN_SPEAKER_MIC_NN : SND_DEVICE_IN_SPEAKER_MIC); } else { ALOGE("%s: something wrong: source type (%d) channel_count (%d) .." " no combination found .. setting to mono", __func__, my_data->source_mic_type, channel_count); snd_device = my_data->fluence_sb_enabled ? SND_DEVICE_IN_SPEAKER_MIC_SB : SND_DEVICE_IN_SPEAKER_MIC; : (my_data->fluence_nn_enabled ? SND_DEVICE_IN_SPEAKER_MIC_NN : SND_DEVICE_IN_SPEAKER_MIC); } } else if (compare_device_type(out_devices, AUDIO_DEVICE_OUT_WIRED_HEADPHONE) || compare_device_type(out_devices, AUDIO_DEVICE_OUT_LINE)) { snd_device = my_data->fluence_sb_enabled ? SND_DEVICE_IN_HANDSET_MIC_SB : SND_DEVICE_IN_HANDSET_MIC; : (my_data->fluence_nn_enabled ? SND_DEVICE_IN_HANDSET_MIC_NN : SND_DEVICE_IN_HANDSET_MIC); } else if (compare_device_type(out_devices, AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET)) { if (adev->swb_speech_mode != SPEECH_MODE_INVALID) { if (adev->bluetooth_nrec) Loading Loading @@ -7328,7 +7403,8 @@ snd_device_t platform_get_input_snd_device(void *platform, ALOGE("%s: Unknown output device(s) %#x", __func__, get_device_types(out_devices)); ALOGW("%s: Using default handset-mic", __func__); snd_device = my_data->fluence_sb_enabled ? SND_DEVICE_IN_HANDSET_MIC_SB : SND_DEVICE_IN_HANDSET_MIC; : (my_data->fluence_nn_enabled ? SND_DEVICE_IN_HANDSET_MIC_NN : SND_DEVICE_IN_HANDSET_MIC); } } exit: Loading
hal/msm8974/platform.h +10 −0 Original line number Diff line number Diff line Loading @@ -176,11 +176,15 @@ enum { SND_DEVICE_IN_HANDSET_MIC = SND_DEVICE_IN_BEGIN, SND_DEVICE_IN_HANDSET_MIC_SB, SND_DEVICE_IN_HANDSET_MIC_EXTERNAL, SND_DEVICE_IN_HANDSET_MIC_NN, SND_DEVICE_IN_HANDSET_MIC_AEC, SND_DEVICE_IN_HANDSET_MIC_AEC_SB, SND_DEVICE_IN_HANDSET_MIC_AEC_NN, SND_DEVICE_IN_HANDSET_MIC_NS, SND_DEVICE_IN_HANDSET_MIC_NS_NN, SND_DEVICE_IN_HANDSET_MIC_NS_SB, SND_DEVICE_IN_HANDSET_MIC_AEC_NS, SND_DEVICE_IN_HANDSET_MIC_AEC_NS_NN, SND_DEVICE_IN_HANDSET_MIC_AEC_NS_SB, SND_DEVICE_IN_HANDSET_DMIC, SND_DEVICE_IN_HANDSET_DMIC_AEC, Loading @@ -191,12 +195,16 @@ enum { SND_DEVICE_IN_HANDSET_DMIC_AEC_NS_SB, SND_DEVICE_IN_SPEAKER_MIC, SND_DEVICE_IN_SPEAKER_MIC_SB, SND_DEVICE_IN_SPEAKER_MIC_NN, SND_DEVICE_IN_SPEAKER_MIC_AEC, SND_DEVICE_IN_SPEAKER_MIC_AEC_SB, SND_DEVICE_IN_SPEAKER_MIC_AEC_NN, SND_DEVICE_IN_SPEAKER_MIC_NS, SND_DEVICE_IN_SPEAKER_MIC_NS_SB, SND_DEVICE_IN_SPEAKER_MIC_NS_NN, SND_DEVICE_IN_SPEAKER_MIC_AEC_NS, SND_DEVICE_IN_SPEAKER_MIC_AEC_NS_SB, SND_DEVICE_IN_SPEAKER_MIC_AEC_NS_NN, SND_DEVICE_IN_SPEAKER_DMIC, SND_DEVICE_IN_SPEAKER_DMIC_AEC, SND_DEVICE_IN_SPEAKER_DMIC_AEC_SB, Loading @@ -209,6 +217,7 @@ enum { SND_DEVICE_IN_HEADSET_MIC_FLUENCE, SND_DEVICE_IN_VOICE_SPEAKER_MIC, SND_DEVICE_IN_VOICE_SPEAKER_MIC_SB, SND_DEVICE_IN_VOICE_SPEAKER_MIC_NN, SND_DEVICE_IN_VOICE_SPEAKER_MIC_HFP, SND_DEVICE_IN_VOICE_SPEAKER_MIC_HFP_MMSECNS, SND_DEVICE_IN_VOICE_HEADSET_MIC, Loading Loading @@ -682,6 +691,7 @@ enum { #define TX_VOICE_FV5ECNS_DM 0x10F0A #define TX_VOICE_FLUENCE_SM_SB 0x10F38 #define TX_VOICE_FLUENCE_MM_SB 0x10F39 #define TX_VOICE_FLUENCE_SM_NN 0x10B0F /* multi-mic surround ECNS zone control */ #define TOPOLOGY_ID_MM_HFP_ECNS 0x1FFF0002 Loading