Merge "hal: set different echo reference based on output device"
diff --git a/configs/msm8998/msm8998.mk b/configs/msm8998/msm8998.mk
index 5f4e6e1..f39a97b 100644
--- a/configs/msm8998/msm8998.mk
+++ b/configs/msm8998/msm8998.mk
@@ -64,6 +64,7 @@
AUDIO_FEATURE_ENABLED_RAS := true
AUDIO_FEATURE_ENABLED_DYNAMIC_LOG := true
AUDIO_FEATURE_ENABLED_SND_MONITOR := true
+AUDIO_FEATURE_ENABLED_A2DP_DECODERS := true
##AUDIO_FEATURE_FLAGS
#Audio Specific device overlays
diff --git a/configs/trinket/sound_trigger_mixer_paths_wcd9335.xml b/configs/trinket/sound_trigger_mixer_paths_wcd9335.xml
index eefbd59..750d302 100644
--- a/configs/trinket/sound_trigger_mixer_paths_wcd9335.xml
+++ b/configs/trinket/sound_trigger_mixer_paths_wcd9335.xml
@@ -1,30 +1,31 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--- Copyright (c) 2017, 2019, 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 -->
-<!--- met: -->
-<!--- * Redistributions of source code must retain the above copyright -->
-<!--- notice, this list of conditions and the following disclaimer. -->
-<!--- * Redistributions in binary form must reproduce the above -->
-<!--- copyright notice, this list of conditions and the following -->
-<!--- disclaimer in the documentation and/or other materials provided -->
-<!--- with the distribution. -->
-<!--- * Neither the name of The Linux Foundation nor the names of its -->
-<!--- contributors may be used to endorse or promote products derived -->
-<!--- from this software without specific prior written permission. -->
-<!--- -->
-<!--- THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED -->
-<!--- WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -->
-<!--- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT -->
-<!--- ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS -->
-<!--- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -->
-<!--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -->
-<!--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -->
-<!--- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -->
-<!--- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -->
-<!--- OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -->
-<!--- IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -->
+<!--- Copyright (c) 2015-2017, 2019, 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
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of The Linux Foundation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
<mixer>
<!-- These are the initial mixer settings -->
@@ -56,6 +57,19 @@
<ctl name="EC BUF MUX INP" value="ZERO" />
<ctl name="ADC MUX1" value="DMIC" />
<ctl name="DMIC MUX1" value="ZERO" />
+ <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 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 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,11 +113,59 @@
<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" />
<ctl name="TX13 INP MUX" value="CPE_TX_PP" />
<ctl name="AIF4_MAD Mixer SLIM TX13" value="1" />
- <ctl name="MAD Input" value="DMIC2" />
+ <ctl name="MAD Input" value="DMIC0" />
<ctl name="CPE AFE MAD Enable" value="1"/>
</path>
@@ -111,14 +173,14 @@
<ctl name="CLK MODE" value="INTERNAL" />
<ctl name="EC BUF MUX INP" value="DEC1" />
<ctl name="ADC MUX1" value="DMIC" />
- <ctl name="DMIC MUX1" value="DMIC2" />
+ <ctl name="DMIC MUX1" value="DMIC0" />
</path>
<!-- path name used for low bandwidth FTRT codec interface -->
<path name="listen-cpe-handset-mic low-speed-intf">
<ctl name="MADONOFF Switch" value="1" />
<ctl name="AIF4_MAD Mixer SLIM TX12" value="1" />
- <ctl name="MAD Input" value="DMIC2" />
+ <ctl name="MAD Input" value="DMIC0" />
<ctl name="CPE AFE MAD Enable" value="1"/>
</path>
@@ -126,7 +188,70 @@
<ctl name="MAD_BROADCAST Switch" value="1" />
<ctl name="TX13 INP MUX" value="MAD_BRDCST" />
<ctl name="AIF4_MAD Mixer SLIM TX13" value="1" />
- <ctl name="MAD Input" value="DMIC2" />
+ <ctl name="MAD Input" value="DMIC0" />
</path>
-</mixer>
+ <path name="listen-ape-handset-mic-preproc">
+ <ctl name="AIF1_CAP Mixer SLIM TX7" value="1"/>
+ <ctl name="SLIM_1_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-dmic">
+ <ctl name="AIF1_CAP Mixer SLIM TX7" value="1" />
+ <ctl name="AIF1_CAP Mixer SLIM TX8" value="1" />
+ <ctl name="SLIM TX7 MUX" value="DEC7" />
+ <ctl name="ADC MUX7" value="DMIC" />
+ <ctl name="DMIC MUX7" value="DMIC0" />
+ <ctl name="SLIM TX8 MUX" value="DEC8" />
+ <ctl name="ADC MUX8" value="DMIC" />
+ <ctl name="DMIC MUX8" value="DMIC3" />
+ <ctl name="SLIM_1_TX Channels" value="Two" />
+ </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>
+
+ <path name="listen-ape-handset-tmic">
+ <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="SLIM_1_TX Channels" value="Three" />
+ <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="DMIC4" />
+ </path>
+
+ <path name="echo-reference">
+ <ctl name="AUDIO_REF_EC_UL1 MUX" value="SLIM_RX" />
+ <ctl name="EC Reference Channels" value="Two"/>
+ <ctl name="EC Reference Bit Format" value="S16_LE"/>
+ <ctl name="EC Reference SampleRate" value="48000"/>
+ </path>
+</mixer>
\ No newline at end of file
diff --git a/configs/trinket/sound_trigger_platform_info.xml b/configs/trinket/sound_trigger_platform_info.xml
index 4096a5b..ced9a4f 100644
--- a/configs/trinket/sound_trigger_platform_info.xml
+++ b/configs/trinket/sound_trigger_platform_info.xml
@@ -46,14 +46,14 @@
<!-- Below backend params must match with port used in mixer path file -->
<!-- param used to configure backend sample rate, format and channels -->
<!-- uncomment TX_CDC_DMA_TX_3 values for internal codec and comment SLIM_1_TX values -->
- <param backend_port_name="SLIM_1_TX" />
+ <param backend_port_name="SLIM_0_TX" />
<!-- param backend_port_name="TX_CDC_DMA_TX_3" /-->
<!-- Param used to match and obtain device backend index -->
- <param backend_dai_name="SLIMBUS_1_TX" />
+ <param backend_dai_name="SLIMBUS_0_TX" />
<!-- param backend_dai_name="TX_CDC_DMA_TX_3" /-->
<!-- Param used to indicate if SVA has dedicated SLIM ports -->
<!-- Set to false for platforms with internal codec -->
- <param dedicated_sva_path="true" />
+ <param dedicated_sva_path="false" />
</common_config>
<acdb_ids>
<!--For internal codec please enable below device-->
@@ -92,7 +92,6 @@
<param fluence_type="FLUENCE_TMIC" />
<!-- wdsp_fluence_type: fluence disabled: "NONE" -->
<!-- fluence enabled: "FLUENCE_DMIC", "FLUENCE_TMIC", "FLUENCE_QMIC" -->
- <param wdsp_fluence_type="NONE" />
<arm_ss_usecase>
<!-- Options are "KEYWORD_DETECTION", "USER_VERIFICATION", "CUSTOM_DETECTION" -->
<param sm_detection_type= "KEYWORD_DETECTION" />
@@ -110,51 +109,8 @@
<param bit_wdith="16"/>
<param channel_count="1"/>
</arm_ss_usecase>
- <gcs_usecase>
- <param uid="0x1" />
- <param acdb_devices="DEVICE_HANDSET_MIC_CPE, DEVICE_HANDSET_TMIC_CPE, DEVICE_HEADSET_MIC_CPE" />
- <!-- module_id, instance_id, param_id -->
- <param load_sound_model_ids="0x00012C0D, 0x2, 0x00012C14" />
- <param confidence_levels_ids="0x00012C0D, 0x2, 0x00012C28" />
- <param detection_event_ids="0x00012C0D, 0x2, 0x00012C29" />
- <param read_cmd_ids="0x00020013, 0x2, 0x00020015" />
- <param read_rsp_ids="0x00020013, 0x2, 0x00020016" />
- <param custom_config_ids="0x00012C0D, 0x2, 0x00012C20" />
- </gcs_usecase>
- <gcs_usecase>
- <param uid="0x2" />
- <param acdb_devices="DEVICE_HANDSET_MIC_CPE, DEVICE_HANDSET_TMIC_CPE, DEVICE_HEADSET_MIC_CPE" />
- <param load_sound_model_ids="0x00012C0D, 0x3, 0x00012C14" />
- <param confidence_levels_ids="0x00012C0D, 0x3, 0x00012C28" />
- <param detection_event_ids="0x00012C0D, 0x3, 0x00012C29" />
- <param read_cmd_ids="0x00020013, 0x3, 0x00020015" />
- <param read_rsp_ids="0x00020013, 0x3, 0x00020016" />
- <param custom_config_ids="0x00012C0D, 0x3, 0x00012C20" />
- </gcs_usecase>
- <gcs_usecase>
- <param uid="0x7" />
- <param acdb_devices="DEVICE_HANDSET_DMIC_CPE" />
- <param load_sound_model_ids="0x00012C0D, 0x7, 0x00012C14" />
- <param confidence_levels_ids="0x00012C0D, 0x7, 0x00012C28" />
- <param detection_event_ids="0x00012C0D, 0x7, 0x00012B05" />
- <param read_cmd_ids="0x00020013, 0x7, 0x00020015" />
- <param read_rsp_ids="0x00020013, 0x7, 0x00020016" />
- <param custom_config_ids="0x00012C0D, 0x7, 0x00012C20" />
- <param det_event_type_ids="0x00012C0D, 0x7, 0x00012C2A" />
- </gcs_usecase>
- <gcs_usecase>
- <param uid="0x8" />
- <param acdb_devices="DEVICE_HANDSET_DMIC_CPE" />
- <param load_sound_model_ids="0x00012C0D, 0x8, 0x00012C14" />
- <param confidence_levels_ids="0x00012C0D, 0x8, 0x00012C28" />
- <param detection_event_ids="0x00012C0D, 0x8, 0x00012B05" />
- <param read_cmd_ids="0x00020013, 0x8, 0x00020015" />
- <param read_rsp_ids="0x00020013, 0x8, 0x00020016" />
- <param custom_config_ids="0x00012C0D, 0x8, 0x00012C20" />
- <param det_event_type_ids="0x00012C0D, 0x8, 0x00012C2A" />
- </gcs_usecase>
<!-- Module and param ids with which the algorithm is integrated
- in non-graphite firmware (note these must come after gcs params)
+ in non-graphite firmware
Extends flexibility to have different ids based on execution type.
valid execution_type values: "WDSP" "ADSP" -->
<lsm_usecase>
@@ -171,6 +127,7 @@
<lsm_usecase>
<param execution_mode="WDSP" />
+ <param app_type="2" /> <!-- app type used in ACDB -->
<param load_sound_model_ids="0x00012C0D, 0x00012C14" />
<param unload_sound_model_ids="0x00012C0D, 0x00012C15" />
<param confidence_levels_ids="0x00012C0D, 0x00012C07" />
@@ -209,20 +166,8 @@
<!-- wdsp_fluence_type: fluence disabled: "NONE" -->
<!-- fluence enabled: "FLUENCE_DMIC", "FLUENCE_TMIC", "FLUENCE_QMIC" -->
<param wdsp_fluence_type="NONE" />
- <gcs_usecase>
- <param uid="0x5" />
- <param acdb_devices="DEVICE_HANDSET_MIC_CPE, DEVICE_HANDSET_TMIC_CPE, DEVICE_HEADSET_MIC_CPE" />
- <!-- module_id, instance_id, param_id -->
- <param load_sound_model_ids="0x00012C2E, 0x6, 0x00012C14" />
- <param confidence_levels_ids="0x00012C2E, 0x6, 0x00012C28" />
- <param detection_event_ids="0x00012C2E, 0x6, 0x00012B05" />
- <param read_cmd_ids="0x00020013, 0x6, 0x00020015" />
- <param read_rsp_ids="0x00020013, 0x6, 0x00020016" />
- <param custom_config_ids="0x00012C2E, 0x6, 0x00012C2D" />
- <param det_event_type_ids="0x00012C2E, 0x6, 0x00012C2C" />
- </gcs_usecase>
<!-- Module and param ids with which the algorithm is integrated
- in non-graphite firmware (note these must come after gcs params)
+ in non-graphite firmware
Extends flexibility to have different ids based on execution type.
valid execution_type values: only "ADSP" -->
<lsm_usecase>
@@ -265,29 +210,8 @@
<param fluence_type="FLUENCE_DMIC" />
<!-- wdsp_fluence_type: fluence disabled: "NONE" -->
<!-- fluence enabled: "FLUENCE_DMIC", "FLUENCE_TMIC", "FLUENCE_QMIC" -->
- <param wdsp_fluence_type="NONE" />
- <gcs_usecase>
- <param uid="0x3" />
- <param acdb_devices="DEVICE_HANDSET_MIC_CPE, DEVICE_HANDSET_TMIC_CPE" />
- <param load_sound_model_ids="0x18000001, 0x4, 0x00012C14" />
- <param confidence_levels_ids="0x18000001, 0x4, 0x00012C28" />
- <param detection_event_ids="0x18000001, 0x4, 0x00012C29" />
- <param read_cmd_ids="0x00020013, 0x4, 0x00020015" />
- <param read_rsp_ids="0x00020013, 0x4, 0x00020016" />
- <param custom_config_ids="0x18000001, 0x4, 0x00012C20" />
- </gcs_usecase>
- <gcs_usecase>
- <param uid="0x4" />
- <param acdb_devices="DEVICE_HANDSET_DMIC_CPE" />
- <param load_sound_model_ids="0x18000001, 0x5, 0x00012C14" />
- <param confidence_levels_ids="0x18000001, 0x5, 0x00012C28" />
- <param detection_event_ids="0x18000001, 0x5, 0x00012C29" />
- <param read_cmd_ids="0x00020013, 0x5, 0x00020015" />
- <param read_rsp_ids="0x00020013, 0x5, 0x00020016" />
- <param custom_config_ids="0x18000001, 0x5, 0x00012C20" />
- </gcs_usecase>
<!-- Module and param ids with which the algorithm is integrated
- in non-graphite firmware (note these must come after gcs params)
+ in non-graphite firmware
Extends flexibility to have different ids based on execution type.
valid execution_type values: "WDSP" "ADSP" -->
<lsm_usecase>
@@ -304,6 +228,7 @@
<lsm_usecase>
<param execution_mode="WDSP" />
+ <param app_type="3" /> <!-- app type used in ACDB -->
<param load_sound_model_ids="0x18000001, 0x00012C14" />
<param unload_sound_model_ids="0x18000001, 0x00012C15" />
<param confidence_levels_ids="0x18000001, 0x00012C07" />
diff --git a/hal/Android.mk b/hal/Android.mk
index a05da26..cfe4a07 100644
--- a/hal/Android.mk
+++ b/hal/Android.mk
@@ -474,6 +474,10 @@
LOCAL_STATIC_LIBRARIES += libprofile_rt
endif
+ifeq ($(strip $(AUDIO_FEATURE_ENABLED_A2DP_DECODERS)), true)
+ LOCAL_CFLAGS += -DAPTX_DECODER_ENABLED
+endif
+
LOCAL_MODULE := audio.primary.$(TARGET_BOARD_PLATFORM)
LOCAL_MODULE_RELATIVE_PATH := hw
diff --git a/hal/audio_extn/a2dp.c b/hal/audio_extn/a2dp.c
index f83ea6a..4b4abbe 100644
--- a/hal/audio_extn/a2dp.c
+++ b/hal/audio_extn/a2dp.c
@@ -1295,7 +1295,6 @@
else {
a2dp.is_tws_mono_mode_on = true;
ALOGD("Update tws for mono_mode_on: %d",a2dp.is_tws_mono_mode_on);
- audio_a2dp_update_tws_channel_mode();
}
break;
}
@@ -1876,6 +1875,7 @@
if (a2dp.a2dp_started) {
a2dp.a2dp_total_active_session_request++;
a2dp_check_and_set_scrambler();
+ audio_a2dp_update_tws_channel_mode();
a2dp_set_backend_cfg();
if (a2dp.abr_config.is_abr_enabled)
start_abr();
diff --git a/hal/audio_extn/audio_extn.c b/hal/audio_extn/audio_extn.c
index 20d760c..38d0b6f 100644
--- a/hal/audio_extn/audio_extn.c
+++ b/hal/audio_extn/audio_extn.c
@@ -62,6 +62,16 @@
#include <log_utils.h>
#endif
+#ifndef APTX_DECODER_ENABLED
+#define audio_extn_aptx_dec_set_license(adev) (0)
+#define audio_extn_set_aptx_dec_bt_addr(adev, parms) (0)
+#define audio_extn_parse_aptx_dec_bt_addr(value) (0)
+#else
+static void audio_extn_aptx_dec_set_license(struct audio_device *adev);
+static void audio_extn_set_aptx_dec_bt_addr(struct audio_device *adev, struct str_parms *parms);
+static void audio_extn_parse_aptx_dec_bt_addr(char *value);
+#endif
+
#define MAX_SLEEP_RETRY 100
#define WIFI_INIT_WAIT_SLEEP 50
#define MAX_NUM_CHANNELS 8
@@ -1538,7 +1548,6 @@
static void audio_extn_aptx_dec_set_license(struct audio_device *adev)
{
int ret, key = 0;
- char value[128] = {0};
struct mixer_ctl *ctl;
const char *mixer_ctl_name = "APTX Dec License";
@@ -1556,7 +1565,7 @@
ALOGE("%s: cannot set license, error:%d",__func__, ret);
}
-static void audio_extn_set_aptx_dec_bt_addr(struct audio_device *adev, struct str_parms *parms)
+static void audio_extn_set_aptx_dec_bt_addr(struct audio_device *adev __unused, struct str_parms *parms)
{
int ret = 0;
char value[256];
@@ -1575,6 +1584,7 @@
aextnmod.addr.nap = aptx_cfg->bt_addr.nap;
aextnmod.addr.uap = aptx_cfg->bt_addr.uap;
aextnmod.addr.lap = aptx_cfg->bt_addr.lap;
+ return 0;
}
static void audio_extn_parse_aptx_dec_bt_addr(char *value)
@@ -1602,11 +1612,7 @@
void audio_extn_send_aptx_dec_bt_addr_to_dsp(struct stream_out *out)
{
- char mixer_ctl_name[128];
- struct mixer_ctl *ctl;
- uint32_t addr[3];
-
- ALOGV("%s", __func__);
+ ALOGD("%s", __func__);
out->compr_config.codec->options.aptx_dec.nap = aextnmod.addr.nap;
out->compr_config.codec->options.aptx_dec.uap = aextnmod.addr.uap;
out->compr_config.codec->options.aptx_dec.lap = aextnmod.addr.lap;
diff --git a/hal/audio_extn/audio_extn.h b/hal/audio_extn/audio_extn.h
index 3458a79..1e4b8ba 100644
--- a/hal/audio_extn/audio_extn.h
+++ b/hal/audio_extn/audio_extn.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013-2018, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2013-2019, The Linux Foundation. All rights reserved.
* Not a Contribution.
*
* Copyright (C) 2013 The Android Open Source Project
@@ -975,16 +975,10 @@
#endif
#ifndef APTX_DECODER_ENABLED
-#define audio_extn_aptx_dec_set_license(adev); (0)
-#define audio_extn_set_aptx_dec_bt_addr(adev, parms); (0)
-#define audio_extn_send_aptx_dec_bt_addr_to_dsp(out); (0)
-#define audio_extn_parse_aptx_dec_bt_addr(value); (0)
-#define audio_extn_set_aptx_dec_params(payload); (0)
+#define audio_extn_send_aptx_dec_bt_addr_to_dsp(out) (0)
+#define audio_extn_set_aptx_dec_params(payload) (0)
#else
-static void audio_extn_aptx_dec_set_license(struct audio_device *adev);
-static void audio_extn_set_aptx_dec_bt_addr(struct audio_device *adev, struct str_parms *parms);
void audio_extn_send_aptx_dec_bt_addr_to_dsp(struct stream_out *out);
-static void audio_extn_parse_aptx_dec_bt_addr(char *value);
int audio_extn_set_aptx_dec_params(struct aptx_dec_param *payload);
#endif
int audio_extn_out_set_param_data(struct stream_out *out,
diff --git a/hal/audio_extn/ffv.c b/hal/audio_extn/ffv.c
index 2e99c40..fac40c5 100644
--- a/hal/audio_extn/ffv.c
+++ b/hal/audio_extn/ffv.c
@@ -905,7 +905,6 @@
str_parms_del(parms, AUDIO_PARAMETER_FFV_EC_REF_DEVICE);
} else if (str_parms_get_int(parms, AUDIO_PARAMETER_DEVICE_CONNECT, &val) >= 0) {
ret = 1;
- str_parms_del(parms, AUDIO_PARAMETER_DEVICE_CONNECT);
}
if (ret == 1) {
if (val & AUDIO_DEVICE_OUT_SPEAKER) {
@@ -921,7 +920,6 @@
ret = str_parms_get_int(parms, AUDIO_PARAMETER_DEVICE_DISCONNECT, &val);
if (ret >= 0) {
- str_parms_del(parms, AUDIO_PARAMETER_DEVICE_DISCONNECT);
if (val & AUDIO_DEVICE_OUT_LINE) {
ALOGD("%s: capture ec ref from speaker", __func__);
ffvmod.ec_ref_dev = AUDIO_DEVICE_OUT_SPEAKER;
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 5ef444e..b0f7efd 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -3848,9 +3848,17 @@
use_case_table[out->usecase],
status == CARD_STATUS_OFFLINE ? "offline" : "online");
- if (status == CARD_STATUS_OFFLINE)
+ if (status == CARD_STATUS_OFFLINE) {
out_on_error(stream);
-
+ if (voice_is_call_state_active(adev) &&
+ out == adev->primary_output) {
+ ALOGD("%s: SSR/PDR occurred, end all calls", __func__);
+ pthread_mutex_lock(&adev->lock);
+ voice_stop_call(adev);
+ adev->mode = AUDIO_MODE_NORMAL;
+ pthread_mutex_unlock(&adev->lock);
+ }
+ }
return;
}
diff --git a/mm-audio/aenc-aac/qdsp6/test/omx_aac_enc_test.c b/mm-audio/aenc-aac/qdsp6/test/omx_aac_enc_test.c
index 97b7617..967a7e3 100644
--- a/mm-audio/aenc-aac/qdsp6/test/omx_aac_enc_test.c
+++ b/mm-audio/aenc-aac/qdsp6/test/omx_aac_enc_test.c
@@ -278,12 +278,6 @@
status = -1;
goto exit;
}
- ptr = (char *)malloc(strlen(input) + 1);
- if (ptr == NULL) {
- DEBUG_PRINT("Low memory\n");
- status = -1;
- goto exit;
- }
/* Check for negative input */
if (*input == '-') {
DEBUG_PRINT("Negative Number is not allowed\n");
@@ -322,8 +316,6 @@
break;
}
exit:
- if (ptr != NULL)
- free(ptr);
if (status != 0)
exit(0);
return value;
diff --git a/mm-audio/aenc-evrc/qdsp6/test/omx_evrc_enc_test.c b/mm-audio/aenc-evrc/qdsp6/test/omx_evrc_enc_test.c
index 8c89e61..d1b4837 100644
--- a/mm-audio/aenc-evrc/qdsp6/test/omx_evrc_enc_test.c
+++ b/mm-audio/aenc-evrc/qdsp6/test/omx_evrc_enc_test.c
@@ -291,12 +291,6 @@
status = -1;
goto exit;
}
- ptr = (char *)malloc(strlen(input) + 1);
- if (ptr == NULL) {
- DEBUG_PRINT("Low memory\n");
- status = -1;
- goto exit;
- }
/* Check for negative input */
if (*input == '-') {
DEBUG_PRINT("Negative Number is not allowed\n");
@@ -335,8 +329,6 @@
break;
}
exit:
- if (ptr != NULL)
- free(ptr);
if (status != 0)
exit(0);
return value;
diff --git a/mm-audio/aenc-qcelp13/qdsp6/test/omx_qcelp13_enc_test.c b/mm-audio/aenc-qcelp13/qdsp6/test/omx_qcelp13_enc_test.c
index d5ec4c7..f35af33 100644
--- a/mm-audio/aenc-qcelp13/qdsp6/test/omx_qcelp13_enc_test.c
+++ b/mm-audio/aenc-qcelp13/qdsp6/test/omx_qcelp13_enc_test.c
@@ -290,12 +290,6 @@
status = -1;
goto exit;
}
- ptr = (char *)malloc(strlen(input) + 1);
- if (ptr == NULL) {
- DEBUG_PRINT("Low memory\n");
- status = -1;
- goto exit;
- }
/* Check for negative input */
if (*input == '-') {
DEBUG_PRINT("Negative Number is not allowed\n");
@@ -334,8 +328,6 @@
break;
}
exit:
- if (ptr != NULL)
- free(ptr);
if (status != 0)
exit(0);
return value;