hal: Add support for NN devices
Add fluence TX (single) NN devices for
voice/voip usecases.
Add fluence NN flag and select NN devices when
the flag is enabled via system property
Change-Id: I78d5c8b232e0841fc0d13aeaba457c0807688f38
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 985de83..cc19dbc 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -293,6 +293,7 @@
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];
@@ -609,13 +610,17 @@
/* 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",
@@ -625,12 +630,16 @@
[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",
@@ -643,6 +652,7 @@
[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",
@@ -778,6 +788,11 @@
[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,
@@ -884,13 +899,17 @@
[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,
@@ -900,12 +919,16 @@
[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,
@@ -918,6 +941,7 @@
[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,
@@ -1122,13 +1146,17 @@
{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)},
@@ -1138,12 +1166,16 @@
{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)},
@@ -1157,6 +1189,7 @@
{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)},
@@ -2341,13 +2374,17 @@
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");
@@ -2360,12 +2397,16 @@
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");
@@ -2378,6 +2419,7 @@
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");
@@ -3148,6 +3190,7 @@
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;
@@ -3181,6 +3224,10 @@
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) {
@@ -3530,11 +3577,11 @@
/* 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);
@@ -6504,7 +6551,9 @@
} 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)) {
@@ -6519,7 +6568,9 @@
} 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;
}
@@ -6559,7 +6610,9 @@
} 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)) {
@@ -6575,7 +6628,9 @@
} 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) &&
@@ -6605,7 +6660,9 @@
} 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)) {
@@ -6648,7 +6705,9 @@
} 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)) {
@@ -6800,11 +6859,15 @@
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);
@@ -6888,7 +6951,9 @@
} 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);
}
@@ -7169,7 +7234,8 @@
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)
@@ -7177,7 +7243,9 @@
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)) {
@@ -7221,12 +7289,14 @@
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) ||
@@ -7238,19 +7308,24 @@
(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)
@@ -7286,7 +7361,8 @@
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:
diff --git a/hal/msm8974/platform.h b/hal/msm8974/platform.h
index 9104080..70f2d95 100644
--- a/hal/msm8974/platform.h
+++ b/hal/msm8974/platform.h
@@ -176,11 +176,15 @@
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,
@@ -191,12 +195,16 @@
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,
@@ -209,6 +217,7 @@
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,
@@ -682,6 +691,7 @@
#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