hal: add generic handset mic definitions
-Add generic handset mic to support different use-cases
on this single device using tx app_type config.
-The change is guarded with a system property which should
be enabled only if tx app_type support is already available
and generic device definition is added in acdb files.
Change-Id: I3fea2e12bd99a0d229fb5753d47dba2501ea528b
diff --git a/hal/msm8916/platform.c b/hal/msm8916/platform.c
index 2739ab5..00ce5f3 100644
--- a/hal/msm8916/platform.c
+++ b/hal/msm8916/platform.c
@@ -302,6 +302,7 @@
bool is_dsd_supported;
bool is_asrc_supported;
struct listnode acdb_meta_key_list;
+ bool use_generic_handset;
};
static bool is_external_codec = false;
@@ -548,6 +549,7 @@
[SND_DEVICE_IN_HANDSET_8MIC] = "handset-8mic",
[SND_DEVICE_IN_EC_REF_LOOPBACK_MONO] = "ec-ref-loopback-mono",
[SND_DEVICE_IN_EC_REF_LOOPBACK_STEREO] = "ec-ref-loopback-stereo",
+ [SND_DEVICE_IN_HANDSET_GENERIC_QMIC] = "quad-mic",
};
// Platform specific backend bit width table
@@ -710,7 +712,8 @@
[SND_DEVICE_IN_HANDSET_6MIC] = 4,
[SND_DEVICE_IN_HANDSET_8MIC] = 4,
[SND_DEVICE_IN_EC_REF_LOOPBACK_MONO] = 4,
- [SND_DEVICE_IN_EC_REF_LOOPBACK_STEREO] = 4
+ [SND_DEVICE_IN_EC_REF_LOOPBACK_STEREO] = 4,
+ [SND_DEVICE_IN_HANDSET_GENERIC_QMIC] = 150
};
struct name_to_index {
@@ -859,6 +862,7 @@
{TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_8MIC)},
{TO_NAME_INDEX(SND_DEVICE_IN_EC_REF_LOOPBACK_MONO)},
{TO_NAME_INDEX(SND_DEVICE_IN_EC_REF_LOOPBACK_STEREO)},
+ {TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_GENERIC_QMIC)},
};
static char * backend_tag_table[SND_DEVICE_MAX] = {0};
@@ -1650,6 +1654,7 @@
hw_interface_table[SND_DEVICE_IN_UNPROCESSED_THREE_MIC] = strdup("SLIMBUS_0_TX");
hw_interface_table[SND_DEVICE_IN_UNPROCESSED_QUAD_MIC] = strdup("SLIMBUS_0_TX");
hw_interface_table[SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC] = strdup("SLIMBUS_0_TX");
+ hw_interface_table[SND_DEVICE_IN_HANDSET_GENERIC_QMIC] = strdup("SLIMBUS_0_TX");
my_data->max_mic_count = PLATFORM_DEFAULT_MIC_COUNT;
/*remove ALAC & APE from DSP decoder list based on software decoder availability*/
@@ -2623,6 +2628,9 @@
}
}
+ if (property_get_bool("vendor.audio.apptype.multirec.enabled", false))
+ my_data->use_generic_handset = true;
+
my_data->edid_info = NULL;
return my_data;
}
@@ -4347,6 +4355,17 @@
snd_device = SND_DEVICE_IN_VOICE_USB_HEADSET_MIC;
}
}
+ } else if (my_data->use_generic_handset == true && // system prop is enabled
+ (my_data->source_mic_type & SOURCE_QUAD_MIC) && // AND 4mic is available
+ ((in_device & AUDIO_DEVICE_IN_BUILTIN_MIC) || // AND device is buit-in mic or back mic
+ (in_device & AUDIO_DEVICE_IN_BACK_MIC)) &&
+ (my_data->fluence_in_audio_rec == true && // AND fluencepro is enabled
+ my_data->fluence_type & FLUENCE_QUAD_MIC) &&
+ (source == AUDIO_SOURCE_CAMCORDER || // AND source is cam/mic/unprocessed
+ source == AUDIO_SOURCE_UNPROCESSED ||
+ source == AUDIO_SOURCE_MIC)) {
+ snd_device = SND_DEVICE_IN_HANDSET_GENERIC_QMIC;
+ platform_set_echo_reference(adev, true, out_device);
} else if (source == AUDIO_SOURCE_CAMCORDER) {
if (in_device & AUDIO_DEVICE_IN_BUILTIN_MIC ||
in_device & AUDIO_DEVICE_IN_BACK_MIC) {