Merge "configs: Update for voice UI package 3.0"
diff --git a/configs/msm8909/msm8909.mk b/configs/msm8909/msm8909.mk
index 23cce99..14cca86 100644
--- a/configs/msm8909/msm8909.mk
+++ b/configs/msm8909/msm8909.mk
@@ -151,6 +151,9 @@
PRODUCT_PROPERTY_OVERRIDES += \
vendor.audio.dolby.ds2.enabled=true
+PRODUCT_PROPERTY_OVERRIDES += \
+persist.vendor.audio.hw.binder.size_kbyte=1024
+
PRODUCT_PACKAGES += \
android.hardware.audio@2.0-service \
android.hardware.audio@2.0-impl \
diff --git a/configs/msm8937/msm8937.mk b/configs/msm8937/msm8937.mk
index 385d862..50f3a10 100644
--- a/configs/msm8937/msm8937.mk
+++ b/configs/msm8937/msm8937.mk
@@ -235,6 +235,9 @@
PRODUCT_PROPERTY_OVERRIDES += \
ro.af.client_heap_size_kbyte=7168
+PRODUCT_PROPERTY_OVERRIDES += \
+persist.vendor.audio.hw.binder.size_kbyte=1024
+
# for HIDL related packages
PRODUCT_PACKAGES += \
android.hardware.audio@2.0-service \
diff --git a/configs/msm8937/sound_trigger_mixer_paths.xml b/configs/msm8937/sound_trigger_mixer_paths.xml
index f6abb6b..34ffd5b 100644
--- a/configs/msm8937/sound_trigger_mixer_paths.xml
+++ b/configs/msm8937/sound_trigger_mixer_paths.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--- Copyright (c) 2014, 2016-2017, The Linux Foundation. All rights reserved.-->
+<!--- Copyright (c) 2014, 2016-2018, The Linux Foundation. All rights reserved.-->
<!--- -->
<!--- Redistribution and use in source and binary forms, with or without -->
<!--- modification, are permitted provided that the following conditions are -->
@@ -94,6 +94,54 @@
<ctl name="LSM8 Mixer TERT_MI2S_TX" value="1" />
</path>
+ <path name="listen-voice-wakeup-1 preproc">
+ <ctl name="TERT_MI2S_TX LSM Function" value="SWAUDIO" />
+ <ctl name="LSM1 Port" value="ADM_LSM_TX" />
+ <ctl name="LSM1 Mixer TERT_MI2S_TX" value="1" />
+ </path>
+
+ <path name="listen-voice-wakeup-2 preproc">
+ <ctl name="TERT_MI2S_TX LSM Function" value="SWAUDIO" />
+ <ctl name="LSM2 Port" value="ADM_LSM_TX" />
+ <ctl name="LSM2 Mixer TERT_MI2S_TX" value="1" />
+ </path>
+
+ <path name="listen-voice-wakeup-3 preproc">
+ <ctl name="TERT_MI2S_TX LSM Function" value="SWAUDIO" />
+ <ctl name="LSM3 Port" value="ADM_LSM_TX" />
+ <ctl name="LSM3 Mixer TERT_MI2S_TX" value="1" />
+ </path>
+
+ <path name="listen-voice-wakeup-4 preproc">
+ <ctl name="TERT_MI2S_TX LSM Function" value="SWAUDIO" />
+ <ctl name="LSM4 Port" value="ADM_LSM_TX" />
+ <ctl name="LSM4 Mixer TERT_MI2S_TX" value="1" />
+ </path>
+
+ <path name="listen-voice-wakeup-5 preproc">
+ <ctl name="TERT_MI2S_TX LSM Function" value="SWAUDIO" />
+ <ctl name="LSM5 Port" value="ADM_LSM_TX" />
+ <ctl name="LSM5 Mixer TERT_MI2S_TX" value="1" />
+ </path>
+
+ <path name="listen-voice-wakeup-6 preproc">
+ <ctl name="TERT_MI2S_TX LSM Function" value="SWAUDIO" />
+ <ctl name="LSM6 Port" value="ADM_LSM_TX" />
+ <ctl name="LSM6 Mixer TERT_MI2S_TX" value="1" />
+ </path>
+
+ <path name="listen-voice-wakeup-7 preproc">
+ <ctl name="TERT_MI2S_TX LSM Function" value="SWAUDIO" />
+ <ctl name="LSM7 Port" value="ADM_LSM_TX" />
+ <ctl name="LSM7 Mixer TERT_MI2S_TX" value="1" />
+ </path>
+
+ <path name="listen-voice-wakeup-8 preproc">
+ <ctl name="TERT_MI2S_TX LSM Function" value="SWAUDIO" />
+ <ctl name="LSM8 Port" value="ADM_LSM_TX" />
+ <ctl name="LSM8 Mixer TERT_MI2S_TX" value="1" />
+ </path>
+
<path name="listen-ape-handset-mic">
<!-- this is to avoid codec mute when device is not enabled first -->
<ctl name="LOOPBACK Mode" value="ENABLE" />
@@ -102,4 +150,18 @@
<ctl name="ADC2 MUX" value="INP3" />
</path>
+ <path name="listen-ape-handset-mic-preproc">
+ <path name="listen-ape-handset-mic"/>
+ </path>
+
+ <path name="listen-ape-handset-dmic">
+ <ctl name="ADC1 Volume" value="6" />
+ <ctl name="DEC1 MUX" value="ADC1" />
+ <ctl name="ADC1_INP1 Switch" value="1" />
+ <ctl name="ADC3 Volume" value="6" />
+ <ctl name="DEC2 MUX" value="ADC2" />
+ <ctl name="MI2S_TX Channels" value="Two" />
+ <ctl name="ADC2 MUX" value="INP3" />
+ </path>
+
</mixer>
diff --git a/configs/msm8937/sound_trigger_mixer_paths_wcd9335.xml b/configs/msm8937/sound_trigger_mixer_paths_wcd9335.xml
index af630d0..cb6bd32 100644
--- a/configs/msm8937/sound_trigger_mixer_paths_wcd9335.xml
+++ b/configs/msm8937/sound_trigger_mixer_paths_wcd9335.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--- Copyright (c) 2015-2016, The Linux Foundation. All rights reserved.
+<!--- Copyright (c) 2015-2016, 2018, The Linux Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
@@ -56,7 +56,26 @@
<ctl name="CLK MODE" value="EXTERNAL" />
<ctl name="EC BUF MUX INP" value="ZERO" />
<ctl name="ADC MUX1" value="DMIC" />
+ <ctl name="ADC MUX5" value="AMIC" />
+ <ctl name="ADC MUX6" value="AMIC" />
+ <ctl name="ADC MUX7" value="AMIC" />
+ <ctl name="ADC MUX8" value="AMIC" />
<ctl name="DMIC MUX1" value="ZERO" />
+ <ctl name="DMIC MUX5" value="ZERO" />
+ <ctl name="DMIC MUX6" value="ZERO" />
+ <ctl name="DMIC MUX7" value="ZERO" />
+ <ctl name="DMIC MUX8" value="ZERO" />
+ <ctl name="IIR0 INP0 MUX" value="ZERO" />
+ <ctl name="AIF1_CAP Mixer SLIM TX7" value="0" />
+ <ctl name="SLIM_0_TX Channels" value="One" />
+ <ctl name="SLIM TX5 MUX" value="ZERO" />
+ <ctl name="SLIM TX6 MUX" value="ZERO" />
+ <ctl name="SLIM TX7 MUX" value="ZERO" />
+ <ctl name="SLIM TX8 MUX" value="ZERO" />
+ <ctl name="AIF1_CAP Mixer SLIM TX5" value="0" />
+ <ctl name="AIF1_CAP Mixer SLIM TX6" value="0" />
+ <ctl name="AIF1_CAP Mixer SLIM TX7" value="0" />
+ <ctl name="AIF1_CAP Mixer SLIM TX8" value="0" />
<path name="listen-voice-wakeup-1">
<ctl name="SLIMBUS_5_TX LSM Function" value="AUDIO" />
@@ -99,6 +118,46 @@
<ctl name="LSM8 Port" value="SLIMBUS_5_TX" />
<ctl name="LSM8 Mixer SLIMBUS_5_TX" value="1" />
</path>
+ <path name="listen-voice-wakeup-1 preproc">
+ <ctl name="SLIMBUS_0_TX LSM Function" value="SWAUDIO" />
+ <ctl name="LSM1 Port" value="ADM_LSM_TX" />
+ <ctl name="LSM1 Mixer SLIMBUS_0_TX" value="1" />
+ </path>
+ <path name="listen-voice-wakeup-2 preproc">
+ <ctl name="SLIMBUS_0_TX LSM Function" value="SWAUDIO" />
+ <ctl name="LSM2 Port" value="ADM_LSM_TX" />
+ <ctl name="LSM2 Mixer SLIMBUS_0_TX" value="1" />
+ </path>
+ <path name="listen-voice-wakeup-3 preproc">
+ <ctl name="SLIMBUS_0_TX LSM Function" value="SWAUDIO" />
+ <ctl name="LSM3 Port" value="ADM_LSM_TX" />
+ <ctl name="LSM3 Mixer SLIMBUS_0_TX" value="1" />
+ </path>
+ <path name="listen-voice-wakeup-4 preproc">
+ <ctl name="SLIMBUS_0_TX LSM Function" value="SWAUDIO" />
+ <ctl name="LSM4 Port" value="ADM_LSM_TX" />
+ <ctl name="LSM4 Mixer SLIMBUS_0_TX" value="1" />
+ </path>
+ <path name="listen-voice-wakeup-5 preproc">
+ <ctl name="SLIMBUS_0_TX LSM Function" value="SWAUDIO" />
+ <ctl name="LSM5 Port" value="ADM_LSM_TX" />
+ <ctl name="LSM5 Mixer SLIMBUS_0_TX" value="1" />
+ </path>
+ <path name="listen-voice-wakeup-6 preproc">
+ <ctl name="SLIMBUS_0_TX LSM Function" value="SWAUDIO" />
+ <ctl name="LSM6 Port" value="ADM_LSM_TX" />
+ <ctl name="LSM6 Mixer SLIMBUS_0_TX" value="1" />
+ </path>
+ <path name="listen-voice-wakeup-7 preproc">
+ <ctl name="SLIMBUS_0_TX LSM Function" value="SWAUDIO" />
+ <ctl name="LSM7 Port" value="ADM_LSM_TX" />
+ <ctl name="LSM7 Mixer SLIMBUS_0_TX" value="1" />
+ </path>
+ <path name="listen-voice-wakeup-8 preproc">
+ <ctl name="SLIMBUS_0_TX LSM Function" value="SWAUDIO" />
+ <ctl name="LSM8 Port" value="ADM_LSM_TX" />
+ <ctl name="LSM8 Mixer SLIMBUS_0_TX" value="1" />
+ </path>
<path name="listen-cpe-handset-mic">
<ctl name="MADONOFF Switch" value="1" />
@@ -130,4 +189,33 @@
<ctl name="MAD Input" value="DMIC0" />
</path>
+ <path name="listen-ape-handset-mic-preproc">
+ <ctl name="AIF1_CAP Mixer SLIM TX7" value="1"/>
+ <ctl name="SLIM_0_TX Channels" value="One" />
+ <ctl name="SLIM TX7 MUX" value="DEC7" />
+ <ctl name="ADC MUX7" value="DMIC" />
+ <ctl name="DMIC MUX7" value="DMIC0" />
+ <ctl name="IIR0 INP0 MUX" value="DEC7" />
+ </path>
+
+ <path name="listen-ape-handset-qmic">
+ <ctl name="AIF1_CAP Mixer SLIM TX5" value="1" />
+ <ctl name="AIF1_CAP Mixer SLIM TX6" value="1" />
+ <ctl name="AIF1_CAP Mixer SLIM TX7" value="1" />
+ <ctl name="AIF1_CAP Mixer SLIM TX8" value="1" />
+ <ctl name="SLIM_0_TX Channels" value="Four" />
+ <ctl name="SLIM TX5 MUX" value="DEC5" />
+ <ctl name="ADC MUX5" value="DMIC" />
+ <ctl name="DMIC MUX5" value="DMIC0" />
+ <ctl name="SLIM TX6 MUX" value="DEC6" />
+ <ctl name="ADC MUX6" value="DMIC" />
+ <ctl name="DMIC MUX6" value="DMIC2" />
+ <ctl name="SLIM TX7 MUX" value="DEC7" />
+ <ctl name="ADC MUX7" value="DMIC" />
+ <ctl name="DMIC MUX7" value="DMIC1" />
+ <ctl name="SLIM TX8 MUX" value="DEC8" />
+ <ctl name="ADC MUX8" value="DMIC" />
+ <ctl name="DMIC MUX8" value="DMIC3" />
+ </path>
+
</mixer>
diff --git a/configs/msm8937/sound_trigger_platform_info.xml b/configs/msm8937/sound_trigger_platform_info.xml
index 28026f7..1f4b4ab 100644
--- a/configs/msm8937/sound_trigger_platform_info.xml
+++ b/configs/msm8937/sound_trigger_platform_info.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--- Copyright (c) 2013-2016, The Linux Foundation. All rights reserved. -->
+<!--- Copyright (c) 2013-2016, 2018, The Linux Foundation. All rights reserved. -->
<!--- -->
<!--- Redistribution and use in source and binary forms, with or without -->
<!--- modification, are permitted provided that the following conditions are -->
@@ -29,18 +29,31 @@
<param version="0x0101" /> <!-- this must be the first param -->
<common_config>
- <param execution_type="APE" /> <!-- value: "CPE" "APE" -->
<param max_cpe_sessions="1" />
<param max_ape_sessions="5" />
<param enable_failure_detection="false" />
<param rx_concurrency_disabled="true" />
<param rx_conc_max_st_ses="1" />
+ <!-- Transition will only occur if execution_type="DYNAMIC" -->
+ <param transit_to_adsp_on_playback="false" />
+ <!-- Below backend params must match with port used in mixer path file -->
+ <!-- param used to configure backend sample rate, format and channels -->
+ <!--Enable below backend params for internal codec-->
+ <!--param backend_port_name="MI2S_TX" />
+ <param backend_dai_name="TERT_MI2S_TX" /-->
+ <param backend_port_name="SLIM_0_TX" />
+ <param backend_dai_name="SLIMBUS_0_TX" />
</common_config>
<acdb_ids>
- <param DEVICE_HANDSET_APE_ACDB_ID="130" />
- <param DEVICE_HANDSET_CPE_ACDB_ID="128" />
- <param DEVICE_HANDSET_CPE_ECPP_ACDB_ID="128" />
+ <!--For internal codec please enable below device-->
+ <!--param DEVICE_HANDSET_MIC_APE="130" /-->
+ <param DEVICE_HANDSET_MIC_APE="100" />
+ <param DEVICE_HANDSET_MIC_CPE="128" />
+ <param DEVICE_HANDSET_MIC_ECPP_CPE="128" />
+ <param DEVICE_HANDSET_MIC_PP_APE="151" />
+ <param DEVICE_HANDSET_QMIC_APE="150" />
+ <param DEVICE_HANDSET_DMIC_APE="149" />
</acdb_ids>
<!-- Multiple sound_model_config tags can be listed, each with unique -->
@@ -48,6 +61,7 @@
<!-- configuration. ISV must use their own unique vendor_uuid. -->
<sound_model_config>
<param vendor_uuid="68ab2d40-e860-11e3-95ef-0002a5d5c51b" />
+ <param execution_type="WDSP" /> <!-- value: "WDSP" "ADSP" "DYNAMIC" -->
<param app_type="2" /> <!-- app type used in ACDB -->
<param library="libsmwrapper.so" />
<param max_cpe_phrases="6" />
@@ -55,19 +69,74 @@
<param max_ape_phrases="10" />
<param max_ape_users="10" />
<param sample_rate="16000" />
+ <param bit_width="16" />
+ <param channel_count="1"/>
+
+ <!-- adm_cfg_profile should match with the one defined under adm_config -->
+ <!-- Set it to NONE if LSM directly connects to AFE -->
+ <param adm_cfg_profile="NONE" />
+ <!-- fluence_type: "FLUENCE", "FLUENCE_DMIC", "FLUENCE_TMIC", -->
+ <!-- "FLUENCE_QMIC". param value is valid when adm_cfg_profile="FLUENCE"-->
+ <param fluence_type="FLUENCE_QMIC" />
<!-- Module and param ids with which the algorithm is integrated in firmware -->
- <param load_sound_model_ids="0x00012C0D, 0x00012C14" />
- <param unload_sound_model_ids="0x00012C0D, 0x00012C15" />
- <param confidence_levels_ids="0x00012C0D, 0x00012C07" />
- <param operation_mode_ids="0x00012C0D, 0x00012C02" />
+ <lsm_usecase>
+ <param execution_mode="WDSP" />
+ <param load_sound_model_ids="0x00012C0D, 0x00012C14" />
+ <param unload_sound_model_ids="0x00012C0D, 0x00012C15" />
+ <param confidence_levels_ids="0x00012C0D, 0x00012C07" />
+ <param operation_mode_ids="0x00012C0D, 0x00012C02" />
+ <param custom_config_ids="0x00012C0D, 0x00012C20" />
+ </lsm_usecase>
+
+ <lsm_usecase>
+ <param execution_mode="ADSP" />
+ <param load_sound_model_ids="0x00012C0D, 0x00012C14" />
+ <param unload_sound_model_ids="0x00012C0D, 0x00012C15" />
+ <param confidence_levels_ids="0x00012C0D, 0x00012C07" />
+ <param operation_mode_ids="0x00012C0D, 0x00012C02" />
+ <param custom_config_ids="0x00012C0D, 0x00012C20" />
+ </lsm_usecase>
<!-- format: "ADPCM_packet" or "PCM_packet" !-->
<!-- transfer_mode: "FTRT" or "RT" -->
<!-- kw_duration is in milli seconds. It is valid only for FTRT transfer mode -->
<param capture_keyword="PCM_packet, RT, 2000" />
<param client_capture_read_delay="2000" />
+ <arm_ss_usecase>
+ <!-- Options are "KEYWORD_DETECTION", "USER_VERIFICATION", "CUSTOM_DETECTION" -->
+ <param sm_detection_type= "KEYWORD_DETECTION" />
+ <param sm_id="0x2" />
+ <param module_lib="libcapiv2svacnn.so"/>
+ <param sample_rate="16000"/>
+ <param bit_wdith="16"/>
+ <param channel_count="1"/>
+ </arm_ss_usecase>
+ <arm_ss_usecase>
+ <param sm_detection_type= "USER_VERIFICATION" />
+ <param sm_id="0x4" />
+ <param module_lib="libcapiv2vop.so"/>
+ <param sample_rate="16000"/>
+ <param bit_wdith="16"/>
+ <param channel_count="1"/>
+ </arm_ss_usecase>
</sound_model_config>
+ <!-- Multiple adm_config tags can be listed, each with unique profile name. -->
+ <!-- app_type to match corresponding value from ACDB -->
+ <adm_config>
+ <param adm_cfg_profile="DEFAULT" />
+ <param app_type="69938" />
+ <param sample_rate="16000" />
+ <param bit_width="16" />
+ </adm_config>
+
+ <adm_config>
+ <param adm_cfg_profile="FLUENCE" />
+ <param app_type="69944" />
+ <param sample_rate="16000" />
+ <param bit_width="16" />
+ </adm_config>
+
</sound_trigger_platform_info>
diff --git a/configs/msm8953/msm8953.mk b/configs/msm8953/msm8953.mk
index f2100cd..b60c56c 100644
--- a/configs/msm8953/msm8953.mk
+++ b/configs/msm8953/msm8953.mk
@@ -57,6 +57,7 @@
BOARD_SUPPORTS_QAHW := false
AUDIO_FEATURE_ENABLED_DYNAMIC_LOG := true
AUDIO_FEATURE_ENABLED_SND_MONITOR := true
+AUDIO_FEATURE_ENABLED_SVA_MULTI_STAGE := true
ifeq ($(TARGET_KERNEL_VERSION), 3.18)
AUDIO_FEATURE_ENABLED_DLKM := false
else
@@ -233,12 +234,15 @@
PRODUCT_PROPERTY_OVERRIDES += \
ro.af.client_heap_size_kbyte=7168
+PRODUCT_PROPERTY_OVERRIDES += \
+persist.vendor.audio.hw.binder.size_kbyte=1024
+
# for HIDL related packages
PRODUCT_PACKAGES += \
android.hardware.audio@2.0-service \
android.hardware.audio@2.0-impl \
android.hardware.audio.effect@2.0-impl \
- android.hardware.soundtrigger@2.0-impl \
+ android.hardware.soundtrigger@2.1-impl \
android.hardware.audio@4.0 \
android.hardware.audio.common@4.0 \
android.hardware.audio.common@4.0-util \
diff --git a/configs/msm8953/sound_trigger_mixer_paths.xml b/configs/msm8953/sound_trigger_mixer_paths.xml
index e7f3740..c889d65 100644
--- a/configs/msm8953/sound_trigger_mixer_paths.xml
+++ b/configs/msm8953/sound_trigger_mixer_paths.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--- Copyright (c) 2014, 2016-2017, The Linux Foundation. All rights reserved.-->
+<!--- Copyright (c) 2014, 2016-2018, The Linux Foundation. All rights reserved.-->
<!--- -->
<!--- Redistribution and use in source and binary forms, with or without -->
<!--- modification, are permitted provided that the following conditions are -->
@@ -158,6 +158,7 @@
<path name="listen-ape-handset-dmic">
<ctl name="ADC1 Volume" value="6" />
<ctl name="DEC1 MUX" value="ADC1" />
+ <ctl name="ADC1_INP1 Switch" value="1" />
<ctl name="ADC3 Volume" value="6" />
<ctl name="DEC2 MUX" value="ADC2" />
<ctl name="MI2S_TX Channels" value="Two" />
diff --git a/configs/msm8996/msm8996.mk b/configs/msm8996/msm8996.mk
index e3b31e5..c699535 100644
--- a/configs/msm8996/msm8996.mk
+++ b/configs/msm8996/msm8996.mk
@@ -194,6 +194,9 @@
PRODUCT_PROPERTY_OVERRIDES += \
ro.af.client_heap_size_kbyte=7168
+PRODUCT_PROPERTY_OVERRIDES += \
+persist.vendor.audio.hw.binder.size_kbyte=1024
+
# for HIDL related packages
PRODUCT_PACKAGES += \
android.hardware.audio@2.0-service \
diff --git a/configs/msm8998/msm8998.mk b/configs/msm8998/msm8998.mk
index 91b4348..acd5071 100644
--- a/configs/msm8998/msm8998.mk
+++ b/configs/msm8998/msm8998.mk
@@ -224,6 +224,9 @@
PRODUCT_PROPERTY_OVERRIDES += \
ro.af.client_heap_size_kbyte=7168
+PRODUCT_PROPERTY_OVERRIDES += \
+persist.vendor.audio.hw.binder.size_kbyte=1024
+
# for HIDL related packages
PRODUCT_PACKAGES += \
android.hardware.audio@2.0-service \
diff --git a/configs/msmnile/mixer_paths_tavil.xml b/configs/msmnile/mixer_paths_tavil.xml
old mode 100644
new mode 100755
index b1f8aed..15b6e04
--- a/configs/msmnile/mixer_paths_tavil.xml
+++ b/configs/msmnile/mixer_paths_tavil.xml
@@ -1939,6 +1939,7 @@
<path name="speaker-mic-qrd">
<path name="dmic1" />
+ <ctl name="DEC7 Volume" value="84" />
</path>
<path name="speaker-protected">
@@ -2016,6 +2017,15 @@
<path name="dmic3" />
</path>
+ <path name="handset-mic-qrd">
+ <path name="dmic3" />
+ <ctl name="DEC7 Volume" value="84" />
+ </path>
+
+ <path name="voice-handset-mic-qrd">
+ <path name="handset-mic-qrd" />
+ </path>
+
<path name="handset-mic-db">
</path>
@@ -2049,13 +2059,16 @@
<ctl name="SLIM_0_TX Channels" value="Three" />
<ctl name="CDC_IF TX5 MUX" value="DEC5" />
<ctl name="ADC MUX5" value="DMIC" />
- <ctl name="DMIC MUX5" value="DMIC2" />
+ <ctl name="DMIC MUX5" value="DMIC0" />
<ctl name="CDC_IF TX6 MUX" value="DEC6" />
<ctl name="ADC MUX6" value="DMIC" />
- <ctl name="DMIC MUX6" value="DMIC3" />
+ <ctl name="DMIC MUX6" value="DMIC2" />
<ctl name="CDC_IF TX8 MUX" value="DEC8" />
<ctl name="ADC MUX8" value="DMIC" />
<ctl name="DMIC MUX8" value="DMIC5" />
+ <ctl name="DEC5 Volume" value="84" />
+ <ctl name="DEC6 Volume" value="84" />
+ <ctl name="DEC8 Volume" value="84" />
</path>
<path name="anc-handset">
@@ -2355,11 +2368,14 @@
<ctl name="DMIC MUX6" value="DMIC2" />
<ctl name="CDC_IF TX8 MUX" value="DEC8" />
<ctl name="ADC MUX8" value="DMIC" />
- <ctl name="DMIC MUX8" value="DMIC0" />
+ <ctl name="DMIC MUX8" value="DMIC5" />
<ctl name="CDC_IF TX9 MUX" value="DEC7" />
<ctl name="ADC MUX7" value="DMIC" />
- <ctl name="DMIC MUX7" value="DMIC5" />
+ <ctl name="DMIC MUX7" value="DMIC0" />
<ctl name="IIR0 INP0 MUX" value="DEC6" />
+ <ctl name="DEC6 Volume" value="84" />
+ <ctl name="DEC8 Volume" value="84" />
+ <ctl name="DEC7 Volume" value="84" />
</path>
<!-- Dual MIC devices -->
@@ -2397,6 +2413,8 @@
<ctl name="ADC MUX8" value="DMIC" />
<ctl name="DMIC MUX8" value="DMIC5" />
<ctl name="SLIM_0_TX Channels" value="Two" />
+ <ctl name="DEC7 Volume" value="84" />
+ <ctl name="DEC8 Volume" value="84" />
</path>
<path name="speaker-dmic-endfire-qrd">
@@ -2404,11 +2422,13 @@
<ctl name="AIF1_CAP Mixer SLIM TX8" value="1" />
<ctl name="CDC_IF TX7 MUX" value="DEC7" />
<ctl name="ADC MUX7" value="DMIC" />
- <ctl name="DMIC MUX7" value="DMIC2" />
+ <ctl name="DMIC MUX7" value="DMIC0" />
<ctl name="CDC_IF TX8 MUX" value="DEC8" />
<ctl name="ADC MUX8" value="DMIC" />
- <ctl name="DMIC MUX8" value="DMIC0" />
+ <ctl name="DMIC MUX8" value="DMIC2" />
<ctl name="SLIM_0_TX Channels" value="Two" />
+ <ctl name="DEC7 Volume" value="84" />
+ <ctl name="DEC8 Volume" value="84" />
</path>
<path name="dmic-endfire">
@@ -2505,6 +2525,20 @@
<ctl name="DMIC MUX8" value="DMIC0" />
</path>
+ <path name="speaker-dmic-broadside-qrd">
+ <ctl name="AIF1_CAP Mixer SLIM TX7" value="1" />
+ <ctl name="AIF1_CAP Mixer SLIM TX8" value="1" />
+ <ctl name="SLIM_0_TX Channels" value="Two" />
+ <ctl name="CDC_IF TX7 MUX" value="DEC7" />
+ <ctl name="ADC MUX7" value="DMIC" />
+ <ctl name="DMIC MUX7" value="DMIC0" />
+ <ctl name="CDC_IF TX8 MUX" value="DEC8" />
+ <ctl name="ADC MUX8" value="DMIC" />
+ <ctl name="DMIC MUX8" value="DMIC2" />
+ <ctl name="DEC7 Volume" value="84" />
+ <ctl name="DEC8 Volume" value="84" />
+ </path>
+
<path name="dmic-broadside">
<path name="speaker-dmic-broadside" />
<ctl name="IIR0 INP0 MUX" value="DEC7" />
@@ -2514,6 +2548,10 @@
<path name="dmic-broadside" />
</path>
+ <path name="voice-speaker-dmic-broadside-qrd">
+ <path name="speaker-dmic-broadside-qrd" />
+ </path>
+
<!-- Tri MIC devices -->
<path name="speaker-tmic">
<ctl name="AIF1_CAP Mixer SLIM TX5" value="1" />
@@ -2538,13 +2576,16 @@
<ctl name="SLIM_0_TX Channels" value="Three" />
<ctl name="CDC_IF TX5 MUX" value="DEC5" />
<ctl name="ADC MUX5" value="DMIC" />
- <ctl name="DMIC MUX5" value="DMIC2" />
+ <ctl name="DMIC MUX5" value="DMIC0" />
<ctl name="CDC_IF TX6 MUX" value="DEC6" />
<ctl name="ADC MUX6" value="DMIC" />
- <ctl name="DMIC MUX6" value="DMIC0" />
+ <ctl name="DMIC MUX6" value="DMIC2" />
<ctl name="CDC_IF TX7 MUX" value="DEC7" />
<ctl name="ADC MUX7" value="DMIC" />
<ctl name="DMIC MUX7" value="DMIC5" />
+ <ctl name="DEC5 Volume" value="84" />
+ <ctl name="DEC6 Volume" value="84" />
+ <ctl name="DEC7 Volume" value="84" />
</path>
<path name="voice-speaker-tmic">
@@ -2584,16 +2625,20 @@
<ctl name="SLIM_0_TX Channels" value="Four" />
<ctl name="CDC_IF TX5 MUX" value="DEC5" />
<ctl name="ADC MUX5" value="DMIC" />
- <ctl name="DMIC MUX5" value="DMIC2" />
+ <ctl name="DMIC MUX5" value="DMIC0" />
<ctl name="CDC_IF TX6 MUX" value="DEC6" />
<ctl name="ADC MUX6" value="DMIC" />
- <ctl name="DMIC MUX6" value="DMIC3" />
+ <ctl name="DMIC MUX6" value="DMIC2" />
<ctl name="CDC_IF TX7 MUX" value="DEC7" />
<ctl name="ADC MUX7" value="DMIC" />
- <ctl name="DMIC MUX7" value="DMIC0" />
+ <ctl name="DMIC MUX7" value="DMIC5" />
<ctl name="CDC_IF TX8 MUX" value="DEC8" />
<ctl name="ADC MUX8" value="DMIC" />
- <ctl name="DMIC MUX8" value="DMIC5" />
+ <ctl name="DMIC MUX8" value="DMIC3" />
+ <ctl name="DEC5 Volume" value="84" />
+ <ctl name="DEC6 Volume" value="84" />
+ <ctl name="DEC7 Volume" value="84" />
+ <ctl name="DEC8 Volume" value="84" />
</path>
<path name="speaker-qmic-liquid">
diff --git a/configs/sdm660/sdm660.mk b/configs/sdm660/sdm660.mk
index e961a0e..b0bd431 100644
--- a/configs/sdm660/sdm660.mk
+++ b/configs/sdm660/sdm660.mk
@@ -236,6 +236,9 @@
PRODUCT_PROPERTY_OVERRIDES += \
ro.af.client_heap_size_kbyte=7168
+PRODUCT_PROPERTY_OVERRIDES += \
+persist.vendor.audio.hw.binder.size_kbyte=1024
+
# for HIDL related packages
PRODUCT_PACKAGES += \
android.hardware.audio@2.0-service \
diff --git a/hal/audio_extn/a2dp.c b/hal/audio_extn/a2dp.c
index 0d0a48b..f3c6bb6 100644
--- a/hal/audio_extn/a2dp.c
+++ b/hal/audio_extn/a2dp.c
@@ -1255,53 +1255,54 @@
if(aptx_bt_cfg == NULL)
return false;
+ ctl_enc_data = mixer_get_ctl_by_name(a2dp.adev->mixer, MIXER_ENC_CONFIG_BLOCK);
+ if (!ctl_enc_data) {
+ ALOGE(" ERROR a2dp encoder CONFIG data mixer control not identifed");
+ return false;
+ }
+
#ifndef LINUX_ENABLED
struct aptx_enc_cfg_t aptx_dsp_cfg;
struct aptx_ad_enc_cfg_t aptx_ad_dsp_cfg;
- if(a2dp.is_aptx_adaptive)
- mixer_size = sizeof(struct aptx_ad_enc_cfg_t);
- else {
+ if(a2dp.is_aptx_adaptive) {
+ mixer_size = sizeof(struct aptx_ad_enc_cfg_t);
+ ret = update_aptx_ad_dsp_config(&aptx_ad_dsp_cfg, aptx_bt_cfg);
+ sample_rate_backup = aptx_ad_dsp_cfg.custom_cfg.sample_rate;
+ } else {
mixer_size = sizeof(struct aptx_enc_cfg_t);
sample_rate_backup = aptx_bt_cfg->default_cfg->sampling_rate;
+ ret = update_aptx_dsp_config_v2(&aptx_dsp_cfg, aptx_bt_cfg);
+ }
+ if (ret) {
+ is_configured = false;
+ goto fail;
+ }
+
+ if(a2dp.is_aptx_adaptive) {
+ ret = mixer_ctl_set_array(ctl_enc_data, (void *)&aptx_ad_dsp_cfg,
+ mixer_size);
+ } else {
+ ret = mixer_ctl_set_array(ctl_enc_data, (void *)&aptx_dsp_cfg,
+ mixer_size);
}
#else
struct custom_enc_cfg_t aptx_dsp_cfg;
mixer_size = sizeof(struct custom_enc_cfg_t);
sample_rate_backup = aptx_bt_cfg->sampling_rate;
-#endif
-
- ctl_enc_data = mixer_get_ctl_by_name(a2dp.adev->mixer, MIXER_ENC_CONFIG_BLOCK);
- if (!ctl_enc_data) {
- ALOGE(" ERROR a2dp encoder CONFIG data mixer control not identifed");
- is_configured = false;
- goto fail;
- }
-
-#ifndef LINUX_ENABLED
- if(a2dp.is_aptx_adaptive) {
- ret = update_aptx_ad_dsp_config(&aptx_ad_dsp_cfg, aptx_bt_cfg);
- sample_rate_backup = aptx_ad_dsp_cfg.custom_cfg.sample_rate;
- } else
- ret = update_aptx_dsp_config_v2(&aptx_dsp_cfg, aptx_bt_cfg);
-#else
ret = update_aptx_dsp_config_v1(&aptx_dsp_cfg, aptx_bt_cfg);
-#endif
-
if (ret) {
is_configured = false;
goto fail;
}
- if(a2dp.is_aptx_adaptive)
- ret = mixer_ctl_set_array(ctl_enc_data, (void *)&aptx_ad_dsp_cfg,
- mixer_size);
- else
- ret = mixer_ctl_set_array(ctl_enc_data, (void *)&aptx_dsp_cfg,
- mixer_size);
+ ret = mixer_ctl_set_array(ctl_enc_data, (void *)&aptx_dsp_cfg,
+ mixer_size);
+#endif
if (ret != 0) {
ALOGE("%s: Failed to set APTX encoder config", __func__);
is_configured = false;
goto fail;
}
+
ctrl_bit_format = mixer_get_ctl_by_name(a2dp.adev->mixer,
MIXER_ENC_BIT_FORMAT);
if (!ctrl_bit_format) {
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index fbb590d..7baef12 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -897,6 +897,11 @@
ALOGD("%s: effect_type:%d enable:%d", __func__, effect_type, enable);
usecase = get_usecase_from_list(adev, in->usecase);
+ if (usecase == NULL) {
+ ALOGE("%s: Could not find the usecase (%d) in the list",
+ __func__, in->usecase);
+ return -EINVAL;
+ }
ret = platform_get_effect_config_data(usecase->in_snd_device, &effect_config, effect_type);
if (ret < 0) {
diff --git a/hal/msm8974/hw_info.c b/hal/msm8974/hw_info.c
index e7a3ff9..b18c4f8 100644
--- a/hal/msm8974/hw_info.c
+++ b/hal/msm8974/hw_info.c
@@ -225,13 +225,24 @@
SND_DEVICE_OUT_HANDSET,
SND_DEVICE_OUT_VOICE_HANDSET,
SND_DEVICE_OUT_VOICE_TTY_HCO_HANDSET,
+ SND_DEVICE_IN_HANDSET_MIC,
+ SND_DEVICE_IN_HANDSET_MIC_AEC,
+ SND_DEVICE_IN_HANDSET_MIC_NS,
+ SND_DEVICE_IN_HANDSET_MIC_AEC_NS,
SND_DEVICE_IN_SPEAKER_MIC,
SND_DEVICE_IN_VOICE_SPEAKER_MIC,
+ SND_DEVICE_IN_SPEAKER_MIC_AEC,
+ SND_DEVICE_IN_SPEAKER_MIC_NS,
+ SND_DEVICE_IN_SPEAKER_MIC_AEC_NS,
SND_DEVICE_IN_VOICE_DMIC,
SND_DEVICE_IN_HANDSET_DMIC,
SND_DEVICE_IN_HANDSET_STEREO_DMIC,
SND_DEVICE_IN_SPEAKER_STEREO_DMIC,
SND_DEVICE_IN_VOICE_SPEAKER_DMIC,
+ SND_DEVICE_IN_VOICE_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_THREE_MIC,
SND_DEVICE_IN_HANDSET_TMIC,
SND_DEVICE_IN_HANDSET_TMIC_FLUENCE_PRO,
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 5202b73..6f80d1c 100755
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -265,7 +265,7 @@
void *edid_info;
bool edid_valid;
int ext_disp_type;
- char ec_ref_mixer_path[64];
+ char ec_ref_mixer_path[MIXER_PATH_MAX_LENGTH];
codec_backend_cfg_t current_backend_cfg[MAX_CODEC_BACKENDS];
char codec_version[CODEC_VERSION_MAX_LENGTH];
int hw_dep_fd;
@@ -1172,6 +1172,7 @@
audio_devices_t out_device __unused)
{
struct platform_data *my_data = (struct platform_data *)adev->platform;
+ char ec_ref_mixer_path[MIXER_PATH_MAX_LENGTH] = "echo-reference";
if (strcmp(my_data->ec_ref_mixer_path, "")) {
ALOGV("%s: disabling %s", __func__, my_data->ec_ref_mixer_path);
@@ -1180,22 +1181,26 @@
}
if (enable) {
+#ifndef COMPRESS_VOIP_ENABLED
+ if (adev->mode == AUDIO_MODE_IN_COMMUNICATION)
+ strlcat(ec_ref_mixer_path, "-voip", MIXER_PATH_MAX_LENGTH);
+#endif
/*
* If native audio device reference count > 0, then apply codec EC otherwise
* fallback to Speakers with VBat if enabled or default
*/
if (adev->snd_dev_ref_cnt[SND_DEVICE_OUT_HEADPHONES_44_1] > 0)
- strlcpy(my_data->ec_ref_mixer_path, "echo-reference headphones-44.1",
- sizeof(my_data->ec_ref_mixer_path));
+ strlcat(ec_ref_mixer_path, " headphones-44.1",
+ MIXER_PATH_MAX_LENGTH);
else if (adev->snd_dev_ref_cnt[SND_DEVICE_OUT_SPEAKER_VBAT] > 0)
- strlcpy(my_data->ec_ref_mixer_path, "echo-reference speaker-vbat",
- sizeof(my_data->ec_ref_mixer_path));
+ strlcat(ec_ref_mixer_path, " speaker-vbat",
+ MIXER_PATH_MAX_LENGTH);
else if (adev->snd_dev_ref_cnt[SND_DEVICE_OUT_DISPLAY_PORT] > 0)
- strlcpy(my_data->ec_ref_mixer_path, "echo-reference display-port",
- sizeof(my_data->ec_ref_mixer_path));
- else
- strlcpy(my_data->ec_ref_mixer_path, "echo-reference",
- sizeof(my_data->ec_ref_mixer_path));
+ strlcat(ec_ref_mixer_path, " display-port",
+ MIXER_PATH_MAX_LENGTH);
+
+ strlcpy(my_data->ec_ref_mixer_path, ec_ref_mixer_path,
+ MIXER_PATH_MAX_LENGTH);
ALOGD("%s: enabling %s", __func__, my_data->ec_ref_mixer_path);
audio_route_apply_and_update_path(adev->audio_route, my_data->ec_ref_mixer_path);
diff --git a/hal/platform_info.c b/hal/platform_info.c
index dca577b..e35b7c4 100644
--- a/hal/platform_info.c
+++ b/hal/platform_info.c
@@ -639,7 +639,7 @@
goto done;
}
microphone.num_frequency_responses = atoi(attr[curIdx++]);
- if (microphone.num_frequency_responses > AUDIO_MICROPHONE_MAX_FREQUENCY_RESPONSES) {
+ if (microphone.num_frequency_responses >= AUDIO_MICROPHONE_MAX_FREQUENCY_RESPONSES) {
ALOGE("%s: num_frequency_responses is too large", __func__);
goto done;
}
@@ -653,7 +653,7 @@
uint32_t num_frequencies = 0;
while (token) {
microphone.frequency_responses[0][num_frequencies++] = atof(token);
- if (num_frequencies > AUDIO_MICROPHONE_MAX_FREQUENCY_RESPONSES) {
+ if (num_frequencies >= AUDIO_MICROPHONE_MAX_FREQUENCY_RESPONSES) {
ALOGE("%s: num %u of frequency is too large", __func__, num_frequencies);
goto done;
}
@@ -668,7 +668,7 @@
uint32_t num_responses = 0;
while (token) {
microphone.frequency_responses[1][num_responses++] = atof(token);
- if (num_responses > AUDIO_MICROPHONE_MAX_FREQUENCY_RESPONSES) {
+ if (num_responses >= AUDIO_MICROPHONE_MAX_FREQUENCY_RESPONSES) {
ALOGE("%s: num %u of response is too large", __func__, num_responses);
goto done;
}
@@ -724,13 +724,13 @@
uint32_t idx = 0;
while (token) {
orientation[idx++] = atof(token);
- if (idx > 3) {
+ if (idx >= 3) {
ALOGE("%s: orientation invalid", __func__);
goto done;
}
token = strtok_r(NULL, " ", &context);
}
- if (idx != 3) {
+ if (idx != 2) {
ALOGE("%s: orientation invalid", __func__);
goto done;
}
@@ -754,13 +754,13 @@
uint32_t idx = 0;
while (token) {
geometric_location[idx++] = atof(token);
- if (idx > 3) {
+ if (idx >= 3) {
ALOGE("%s: geometric_location invalid", __func__);
goto done;
}
token = strtok_r(NULL, " ", &context);
}
- if (idx != 3) {
+ if (idx != 2) {
ALOGE("%s: geometric_location invalid", __func__);
goto done;
}
diff --git a/qahw_api/test/qahw_multi_record_test.c b/qahw_api/test/qahw_multi_record_test.c
index 7be6512..67aa78c 100644
--- a/qahw_api/test/qahw_multi_record_test.c
+++ b/qahw_api/test/qahw_multi_record_test.c
@@ -454,8 +454,7 @@
tsColdF.tv_nsec/1000000 - tsColdI.tv_nsec/1000000;
fread((void *) latencyBuf, 100, 1, fdLatencyNode);
- if (fdLatencyNode)
- fclose(fdLatencyNode);
+ fclose(fdLatencyNode);
sscanf(latencyBuf, " %llu,%llu", &tsec, &tusec);
tCont = ((uint64_t)tsCont.tv_sec)*1000 - tsec*1000 + ((uint64_t)tsCont.tv_nsec)/1000000 - tusec/1000;
if (log_file != stdout) {