Merge "a2dp: fix incorrect acdb when starting abr path for a2dp capture"
diff --git a/configs/lahaina/audio_platform_info.xml b/configs/lahaina/audio_platform_info.xml
index 8d05776..d987537 100644
--- a/configs/lahaina/audio_platform_info.xml
+++ b/configs/lahaina/audio_platform_info.xml
@@ -48,6 +48,7 @@
<device name="SND_DEVICE_IN_VOCE_RECOG_USB_HEADSET_HEX_MIC" acdb_id="162"/>
<device name="SND_DEVICE_IN_VOICE_HEARING_AID" acdb_id="11"/>
<device name="SND_DEVICE_OUT_VOICE_HANDSET_TMUS" acdb_id="7"/>
+ <device name="SND_DEVICE_IN_BT_A2DP" acdb_id="201"/>
</acdb_ids>
<module_ids>
diff --git a/configs/lahaina/audio_platform_info_hdk.xml b/configs/lahaina/audio_platform_info_hdk.xml
index 04578d4..a79c1cf 100644
--- a/configs/lahaina/audio_platform_info_hdk.xml
+++ b/configs/lahaina/audio_platform_info_hdk.xml
@@ -148,6 +148,7 @@
<device name="SND_DEVICE_IN_VOICE_HEARING_AID" acdb_id="11"/>
<device name="SND_DEVICE_OUT_VOICE_HANDSET_TMUS" acdb_id="7"/>
<device name="SND_DEVICE_IN_UNPROCESSED_USB_HEADSET_MIC" acdb_id="133"/>
+ <device name="SND_DEVICE_IN_BT_A2DP" acdb_id="201"/>
</acdb_ids>
<backend_names>
<device name="SND_DEVICE_OUT_HEADPHONES" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
diff --git a/configs/lahaina/audio_platform_info_intcodec.xml b/configs/lahaina/audio_platform_info_intcodec.xml
index a362b39..6568e46 100644
--- a/configs/lahaina/audio_platform_info_intcodec.xml
+++ b/configs/lahaina/audio_platform_info_intcodec.xml
@@ -148,6 +148,7 @@
<device name="SND_DEVICE_IN_VOICE_HEARING_AID" acdb_id="11"/>
<device name="SND_DEVICE_OUT_VOICE_HANDSET_TMUS" acdb_id="7"/>
<device name="SND_DEVICE_IN_UNPROCESSED_USB_HEADSET_MIC" acdb_id="133"/>
+ <device name="SND_DEVICE_IN_BT_A2DP" acdb_id="201"/>
</acdb_ids>
<backend_names>
<device name="SND_DEVICE_OUT_HEADPHONES" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
diff --git a/configs/lahaina/audio_platform_info_qrd.xml b/configs/lahaina/audio_platform_info_qrd.xml
index 1404423..f0b0279 100644
--- a/configs/lahaina/audio_platform_info_qrd.xml
+++ b/configs/lahaina/audio_platform_info_qrd.xml
@@ -148,6 +148,7 @@
<device name="SND_DEVICE_IN_VOICE_HEARING_AID" acdb_id="11"/>
<device name="SND_DEVICE_OUT_VOICE_HANDSET_TMUS" acdb_id="7"/>
<device name="SND_DEVICE_IN_UNPROCESSED_USB_HEADSET_MIC" acdb_id="133"/>
+ <device name="SND_DEVICE_IN_BT_A2DP" acdb_id="201"/>
</acdb_ids>
<backend_names>
<device name="SND_DEVICE_OUT_HEADPHONES" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
diff --git a/configs/lahaina/audio_platform_info_shimaidp.xml b/configs/lahaina/audio_platform_info_shimaidp.xml
index b1edc20..2b60989 100644
--- a/configs/lahaina/audio_platform_info_shimaidp.xml
+++ b/configs/lahaina/audio_platform_info_shimaidp.xml
@@ -50,6 +50,7 @@
<device name="SND_DEVICE_IN_VOCE_RECOG_USB_HEADSET_HEX_MIC" acdb_id="162"/>
<device name="SND_DEVICE_IN_VOICE_HEARING_AID" acdb_id="11"/>
<device name="SND_DEVICE_OUT_VOICE_HANDSET_TMUS" acdb_id="7"/>
+ <device name="SND_DEVICE_IN_BT_A2DP" acdb_id="201"/>
</acdb_ids>
<module_ids>
diff --git a/configs/lahaina/audio_platform_info_shimaqrd.xml b/configs/lahaina/audio_platform_info_shimaqrd.xml
index de717e9..e87f8d0 100644
--- a/configs/lahaina/audio_platform_info_shimaqrd.xml
+++ b/configs/lahaina/audio_platform_info_shimaqrd.xml
@@ -52,6 +52,7 @@
<device name="SND_DEVICE_IN_VOCE_RECOG_USB_HEADSET_HEX_MIC" acdb_id="162"/>
<device name="SND_DEVICE_IN_VOICE_HEARING_AID" acdb_id="11"/>
<device name="SND_DEVICE_OUT_VOICE_HANDSET_TMUS" acdb_id="7"/>
+ <device name="SND_DEVICE_IN_BT_A2DP" acdb_id="201"/>
</acdb_ids>
<module_ids>
diff --git a/configs/lahaina/audio_platform_info_yupikidp.xml b/configs/lahaina/audio_platform_info_yupikidp.xml
index e04f05a..9f51e6f 100644
--- a/configs/lahaina/audio_platform_info_yupikidp.xml
+++ b/configs/lahaina/audio_platform_info_yupikidp.xml
@@ -148,6 +148,7 @@
<device name="SND_DEVICE_IN_HANDSET_GENERIC_QMIC" acdb_id="191"/>
<device name="SND_DEVICE_IN_VOICE_HEARING_AID" acdb_id="11"/>
<device name="SND_DEVICE_OUT_VOICE_HANDSET_TMUS" acdb_id="7"/>
+ <device name="SND_DEVICE_IN_BT_A2DP" acdb_id="201"/>
</acdb_ids>
<backend_names>
<device name="SND_DEVICE_OUT_HEADPHONES" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
diff --git a/configs/lahaina/audio_platform_info_yupikqrd.xml b/configs/lahaina/audio_platform_info_yupikqrd.xml
index 9bdcf52..2f77410 100644
--- a/configs/lahaina/audio_platform_info_yupikqrd.xml
+++ b/configs/lahaina/audio_platform_info_yupikqrd.xml
@@ -52,6 +52,7 @@
<device name="SND_DEVICE_IN_VOCE_RECOG_USB_HEADSET_HEX_MIC" acdb_id="162"/>
<device name="SND_DEVICE_IN_VOICE_HEARING_AID" acdb_id="11"/>
<device name="SND_DEVICE_OUT_VOICE_HANDSET_TMUS" acdb_id="7"/>
+ <device name="SND_DEVICE_IN_BT_A2DP" acdb_id="201"/>
</acdb_ids>
<module_ids>
diff --git a/configs/lahaina/audio_policy_configuration.xml b/configs/lahaina/audio_policy_configuration.xml
index b7e9e65..cd9f7a6 100644
--- a/configs/lahaina/audio_policy_configuration.xml
+++ b/configs/lahaina/audio_policy_configuration.xml
@@ -332,6 +332,11 @@
</devicePort>
<devicePort tagName="USB Headset In" type="AUDIO_DEVICE_IN_USB_HEADSET" role="source">
</devicePort>
+ <devicePort tagName="A2DP In" type="AUDIO_DEVICE_IN_BLUETOOTH_A2DP" role="source"
+ encodedFormats="VX_AUDIO_FORMAT_LC3">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="44100,48000" channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO"/>
+ </devicePort>
</devicePorts>
<!-- route declaration, i.e. list all available sources for a given sink -->
@@ -367,7 +372,7 @@
<route type="mix" sink="voice_rx"
sources="Telephony Rx"/>
<route type="mix" sink="primary input"
- sources="Built-In Mic,Built-In Back Mic,Wired Headset Mic,BT SCO Headset Mic,FM Tuner,Telephony Rx"/>
+ sources="Built-In Mic,Built-In Back Mic,Wired Headset Mic,BT SCO Headset Mic,FM Tuner,Telephony Rx,A2DP In"/>
<route type="mix" sink="usb_surround_sound"
sources="USB Device In,USB Headset In"/>
<route type="mix" sink="fast input"
@@ -377,7 +382,7 @@
<route type="mix" sink="voip_tx"
sources="Built-In Mic,Built-In Back Mic,BT SCO Headset Mic,USB Device In,USB Headset In,Wired Headset Mic"/>
<route type="mix" sink="record_24"
- sources="Built-In Mic,Built-In Back Mic,Wired Headset Mic"/>
+ sources="Built-In Mic,Built-In Back Mic,Wired Headset Mic,A2DP In"/>
<route type="mix" sink="mmap_no_irq_in"
sources="Built-In Mic,Built-In Back Mic,Wired Headset Mic,USB Device In,USB Headset In"/>
<route type="mix" sink="BT A2DP Out"
diff --git a/configs/lahaina/mixer_paths.xml b/configs/lahaina/mixer_paths.xml
index d95558e..840fd8f 100644
--- a/configs/lahaina/mixer_paths.xml
+++ b/configs/lahaina/mixer_paths.xml
@@ -1806,6 +1806,10 @@
<ctl name="MultiMedia1 Mixer SLIM_7_TX" value="1" />
</path>
+ <path name="audio-record bt-a2dp-cap">
+ <ctl name="MultiMedia1 Mixer SLIM_7_TX" value="1" />
+ </path>
+
<path name="audio-record bt-sco-wb">
<path name="audio-record bt-sco" />
</path>
@@ -1830,6 +1834,10 @@
<ctl name="MultiMedia8 Mixer SLIM_7_TX" value="1" />
</path>
+ <path name="audio-record-compress bt-a2dp-cap">
+ <ctl name="MultiMedia8 Mixer SLIM_7_TX" value="1" />
+ </path>
+
<path name="audio-record-compress bt-sco-wb">
<path name="audio-record-compress bt-sco" />
</path>
@@ -1854,6 +1862,10 @@
<ctl name="MultiMedia17 Mixer SLIM_7_TX" value="1" />
</path>
+ <path name="audio-record-compress2 bt-a2dp-cap">
+ <ctl name="MultiMedia17 Mixer SLIM_7_TX" value="1" />
+ </path>
+
<path name="audio-record-compress2 bt-sco-wb">
<path name="audio-record-compress2 bt-sco" />
</path>
@@ -1878,6 +1890,10 @@
<ctl name="MultiMedia8 Mixer SLIM_7_TX" value="1" />
</path>
+ <path name="low-latency-record bt-a2dp-cap">
+ <ctl name="MultiMedia8 Mixer SLIM_7_TX" value="1" />
+ </path>
+
<path name="low-latency-record bt-sco-wb">
<path name="low-latency-record bt-sco" />
</path>
@@ -3607,6 +3623,10 @@
<ctl name="MultiMedia16 Mixer SLIM_7_TX" value="1" />
</path>
+ <path name="mmap-record bt-a2dp-cap">
+ <ctl name="MultiMedia16 Mixer SLIM_7_TX" value="1" />
+ </path>
+
<path name="mmap-record bt-sco-wb">
<path name="mmap-record bt-sco" />
</path>
diff --git a/configs/lahaina/mixer_paths_hhg.xml b/configs/lahaina/mixer_paths_hhg.xml
index f716350..b926a3a 100644
--- a/configs/lahaina/mixer_paths_hhg.xml
+++ b/configs/lahaina/mixer_paths_hhg.xml
@@ -2756,7 +2756,7 @@
</path>
<path name="speaker-mic">
- <path name="dmic5" />
+ <path name="dmic3" />
</path>
<path name="speaker-mic-liquid">
diff --git a/configs/lahaina/mixer_paths_shimaqrd.xml b/configs/lahaina/mixer_paths_shimaqrd.xml
index 2db82d3..89b3c6f 100755
--- a/configs/lahaina/mixer_paths_shimaqrd.xml
+++ b/configs/lahaina/mixer_paths_shimaqrd.xml
@@ -1817,6 +1817,11 @@
<path name="compress-offload-playback9" />
</path>
+ <path name="audio-with-haptics-playback handset">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1"/>
+ </path>
+
<path name="audio-record">
<ctl name="MultiMedia1 Mixer TX_CDC_DMA_TX_3" value="1" />
</path>
diff --git a/configs/lahaina/yupik_overlay/mixer_paths_yupikqrd_overlay.xml b/configs/lahaina/yupik_overlay/mixer_paths_yupikqrd_overlay.xml
index 0dd5a01..0437aef 100644
--- a/configs/lahaina/yupik_overlay/mixer_paths_yupikqrd_overlay.xml
+++ b/configs/lahaina/yupik_overlay/mixer_paths_yupikqrd_overlay.xml
@@ -270,4 +270,8 @@
<path name="mmap-record capture-fm">
<ctl name="MultiMedia16 Mixer SEC_MI2S_TX" value="1"/>
</path>
+ <path name="audio-with-haptics-playback handset">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1"/>
+ </path>
</mixer>
diff --git a/configs/msm8937/msm8937.mk b/configs/msm8937/msm8937.mk
index a801809..5db9969 100644
--- a/configs/msm8937/msm8937.mk
+++ b/configs/msm8937/msm8937.mk
@@ -160,7 +160,8 @@
$(TOPDIR)vendor/qcom/opensource/audio-hal/primary-hal/configs/msm8937/audio_policy_configuration_common.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration.xml
else
PRODUCT_COPY_FILES += \
- $(TOPDIR)vendor/qcom/opensource/audio-hal/primary-hal/configs/msm8937/audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/audio_policy_configuration.xml
+ $(TOPDIR)vendor/qcom/opensource/audio-hal/primary-hal/configs/msm8937/audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/audio_policy_configuration.xml \
+ $(TOPDIR)vendor/qcom/opensource/audio-hal/primary-hal/configs/msm8937/audio_policy_configuration_common.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration.xml
endif
PRODUCT_COPY_FILES += \
$(TOPDIR)vendor/qcom/opensource/audio-hal/primary-hal/configs/common/bluetooth_qti_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/a2dp_audio_policy_configuration.xml \
diff --git a/configs/msmnile_au/msmnile_au.mk b/configs/msmnile_au/msmnile_au.mk
index 2d47885..f698e6d 100644
--- a/configs/msmnile_au/msmnile_au.mk
+++ b/configs/msmnile_au/msmnile_au.mk
@@ -11,7 +11,11 @@
BOARD_USES_ALSA_AUDIO := true
ifneq ($(TARGET_USES_AOSP_FOR_AUDIO), true)
+ifeq ($(TARGET_FWK_SUPPORTS_FULL_VALUEADDS),true)
USE_CUSTOM_AUDIO_POLICY := 1
+else
+USE_CUSTOM_AUDIO_POLICY := 0
+endif
AUDIO_FEATURE_QSSI_COMPLIANCE := true
AUDIO_FEATURE_ENABLED_COMPRESS_CAPTURE := false
AUDIO_FEATURE_ENABLED_COMPRESS_INPUT := true
@@ -49,6 +53,9 @@
USE_XML_AUDIO_POLICY_CONF := 1
BOARD_SUPPORTS_SOUND_TRIGGER := true
+BOARD_SUPPORTS_OPENSOURCE_STHAL := true
+AUDIO_FEATURE_ENABLED_SVA_CHANNEL_IDX := true
+AUDIO_FEATURE_QSSI_COMPLIANCE := true
AUDIO_FEATURE_ENABLED_INSTANCE_ID := true
ifeq ($(TARGET_HAS_GENERIC_KERNEL_HEADERS), true)
AUDIO_FEATURE_ENABLED_GKI := true
diff --git a/configs/msmnile_au/sound_trigger_platform_info.xml b/configs/msmnile_au/sound_trigger_platform_info.xml
index 6efdcdd..a7d0459 100644
--- a/configs/msmnile_au/sound_trigger_platform_info.xml
+++ b/configs/msmnile_au/sound_trigger_platform_info.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--- Copyright (c) 2013-2019, The Linux Foundation. All rights reserved. -->
+<!--- Copyright (c) 2013-2021, 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 -->
@@ -26,18 +26,20 @@
<!--- OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -->
<!--- IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -->
<sound_trigger_platform_info>
- <param version="0x0103" /> <!-- this must be the first param -->
+ <param version="0x0106" /> <!-- this must be the first param -->
<!--- Version History: -->
<!--- 0x0101: Legacy version. -->
<!--- 0x0102: Includes acdb_ids param with the gcs_usecase tag. This matches -->
<!--- the gcs_usecase with the acdb device that uses it. -->
<!--- 0x0103: app_type and in_channels added to <lsm usecase> and out_channels -->
<!--- added to <adm_config> -->
+<!--- 0x0104: instance id support for both WDSP<CPE> and ADSP lsm usecases -->
+<!--- 0x0105: Select <lsm_usecase> based on capture device -->
+<!--- 0x0106: Add module_params tag to support multiple module and param ids -->
+<!--- per <lsm_usecase> -->
<common_config>
- <param implementer_version="0x0100" />
- <param max_cpe_sessions="1" />
- <param max_wdsp_sessions="2" />
+ <param implementer_version="0x0102" />
<param max_ape_sessions="8" />
<param enable_failure_detection="false" />
<param support_device_switch="false" />
@@ -51,6 +53,7 @@
<param backend_dai_name="TERT_TDM_TX_0" />
<!-- Param used to indicate if SVA has dedicated SLIM ports -->
<param dedicated_sva_path="true" />
+ <param platform_lpi_enable="false" />
<param concurrent_capture="true" />
<param concurrent_voice_call="false" />
<param concurrent_voip_call="false" />
@@ -76,27 +79,16 @@
<!-- QTI SVA -->
<sound_model_config>
<param vendor_uuid="68ab2d40-e860-11e3-95ef-0002a5d5c51b" />
- <param execution_type="ADSP" /> <!-- value: "WDSP" "ADSP" "DYNAMIC" -->
- <param library="libsmwrapper.so" />
- <param max_cpe_phrases="6" />
- <param max_cpe_users="3" />
+ <param execution_type="ADSP" />
+ <param merge_first_stage_sound_models="false"/>
<param max_ape_phrases="20" />
<param max_ape_users="10" />
<!-- Profile specific data which the algorithm can support -->
<param sample_rate="16000" />
<param bit_width="16" />
<param out_channels="1"/> <!-- Module output channels -->
+ <param dam_token_id="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="FFECNS" />
- <!-- fluence_type: "FLUENCE", "FLUENCE_DMIC", "FLUENCE_TMIC" -->
- <!-- "FLUENCE_QMIC". Param value is valid when adm_cfg_profile -->
- <!-- is one of FLUENCE, FLUENCE_STEREO, FFECNS values -->
- <param fluence_type="FLUENCE_QMIC" />
- <!-- 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" />
@@ -114,66 +106,58 @@
<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, 0x00012B05" />
- <param read_cmd_ids="0x00020013, 0x2, 0x00020015" />
- <param read_rsp_ids="0x00020013, 0x2, 0x00020016" />
- <param custom_config_ids="0x00012C0D, 0x2, 0x00012C20" />
- <param det_event_type_ids="0x00012C0D, 0x2, 0x00012C2A" />
- </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, 0x00012B05" />
- <param read_cmd_ids="0x00020013, 0x3, 0x00020015" />
- <param read_rsp_ids="0x00020013, 0x3, 0x00020016" />
- <param custom_config_ids="0x00012C0D, 0x3, 0x00012C20" />
- <param det_event_type_ids="0x00012C0D, 0x3, 0x00012C2A" />
- </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>
+ <arm_ss_usecase>
+ <param sm_detection_type= "KEYWORD_DETECTION" />
+ <param sm_id="0x8" />
+ <param module_lib="libcapiv2svarnn.so"/>
+ <param sample_rate="16000"/>
+ <param bit_wdith="16"/>
+ <param channel_count="1"/>
+ </arm_ss_usecase>
<!-- Module and param ids with which the algorithm is integrated
in non-graphite firmware (note these must come after gcs params)
Extends flexibility to have different ids based on execution type.
valid execution_type values: "WDSP" "ADSP" -->
<lsm_usecase>
+ <param capture_device="HANDSET" />
+ <!-- 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="FFECNS" />
+ <!-- fluence_type: "FLUENCE", "FLUENCE_DMIC", "FLUENCE_TMIC" -->
+ <!-- "FLUENCE_QMIC". Param value is valid when adm_cfg_profile -->
+ <!-- is one of FLUENCE, FLUENCE_STEREO, FFECNS values -->
+ <param fluence_type="FLUENCE_QMIC" />
<param execution_mode="ADSP" />
+ <!-- lpi_mode: "NON_LPI_BARGE_IN", "NON_LPI", "LPI" -->
+ <!-- NON_LPI_BARGE_IN: Default non-LPI mode type. lsm_usecase -->
+ <!-- must be present with this mode type to handle barge-in. -->
+ <!-- NON_LPI: If another lsm_usecase is present with this mode -->
+ <!-- type, it will be used for non-LPI non-barge-in usecases. -->
+ <!-- If not present, NON_LPI_BARGE_IN mode type will be used. -->
+ <!-- LPI: This mode type will be used for LPI usecases. -->
<param app_type="2" /> <!-- app type used in ACDB -->
+ <param pdk5_app_type="1" />
<param in_channels="4"/> <!-- Module input channels -->
- <param load_sound_model_ids="0x00012C1C, 0x00012C14" />
- <param unload_sound_model_ids="0x00012C1C, 0x00012C15" />
- <param confidence_levels_ids="0x00012C1C, 0x00012C07" />
- <param operation_mode_ids="0x00012C1C, 0x00012C02" />
- <param polling_enable_ids="0x00012C1C, 0x00012C1B" />
- <param custom_config_ids="0x00012C1C, 0x00012C20" />
- <param det_event_type_ids="0x00012C1C, 0x00012C2C" />
+ <module_params>
+ <param module_type="GMM" />
+ <param load_sound_model_ids="0x00012C1C, 0x0, 0x00012C14" />
+ <param unload_sound_model_ids="0x00012C1C, 0x0, 0x00012C15" />
+ <param confidence_levels_ids="0x00012C1C, 0x0, 0x00012C07" />
+ <param operation_mode_ids="0x00012C1C, 0x0, 0x00012C02" />
+ <param polling_enable_ids="0x00012C1C, 0x0, 0x00012C1B" />
+ <param custom_config_ids="0x00012C1C, 0x0, 0x00012C20" />
+ <param det_event_type_ids="0x00012C1C, 0x0, 0x00012C2C" />
+ <param lab_dam_cfg_ids="0x00012C08, 0x0, 0x000102C4" />
+ </module_params>
+ <module_params>
+ <param module_type="PDK5" />
+ <param load_sound_model_ids="0x00012C35, 0x0, 0x00012C36" />
+ <param unload_sound_model_ids="0x00012C35, 0x0, 0x00012C37" />
+ <param confidence_levels_ids="0x00012C35, 0x0, 0x00012C38" />
+ <param custom_config_ids="0x00012C35, 0x0, 0x00012C20" />
+ <param det_event_type_ids="0x00012C35, 0x0, 0x00012C2C" />
+ <param lab_dam_cfg_ids="0x00012C08, 0x0, 0x000102C4" />
+ </module_params>
</lsm_usecase>
<!-- format: "ADPCM_packet" or "PCM_packet" !-->
@@ -182,17 +166,12 @@
transfer mode -->
<param capture_keyword="PCM_packet, RT, 2000" />
<param client_capture_read_delay="2000" />
- <param lpi_enable="false" />
- <param concurrent_capture="true" />
- <param concurrent_voice_call="false" />
- <param concurrent_voip_call="false" />
</sound_model_config>
- <!-- QTI Music Detection !-->
+ <!-- QTI Music Detection !-->
<sound_model_config>
<param vendor_uuid="876c1b46-9d4d-40cc-a4fd-4d5ec7a80e47" />
<param execution_type="WDSP" /> <!-- value: "WDSP" "ADSP" "DYNAMIC" -->
- <param library="libsmwrapper.so" />
<param max_cpe_phrases="1" />
<param max_cpe_users="1" />
<param max_ape_phrases="1" />
@@ -211,18 +190,6 @@
<!-- 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)
Extends flexibility to have different ids based on execution type.
@@ -231,11 +198,13 @@
<param execution_mode="ADSP" />
<param app_type="4" /> <!-- app type for MD used in ACDB -->
<param in_channels="1"/> <!-- Module input channels -->
- <param load_sound_model_ids="0x00012C22, 0x00012C14" />
- <param unload_sound_model_ids="0x00012C22, 0x00012C15" />
- <param confidence_levels_ids="0x00012C22, 0x00012C07" />
- <param det_event_type_ids="0x00012C22, 0x00012C2C" />
- <param custom_config_ids="0x00012C22, 0x00012C30" />
+ <module_params>
+ <param load_sound_model_ids="0x00012C22, 0x0, 0x00012C14" />
+ <param unload_sound_model_ids="0x00012C22, 0x0, 0x00012C15" />
+ <param confidence_levels_ids="0x00012C22, 0x0, 0x00012C07" />
+ <param det_event_type_ids="0x00012C22, 0x0, 0x00012C2C" />
+ <param custom_config_ids="0x00012C22, 0x0, 0x00012C30" />
+ </module_params>
</lsm_usecase>
<!-- format: "ADPCM_packet" or "PCM_packet" !-->
@@ -250,7 +219,6 @@
<sound_model_config>
<param vendor_uuid="7038ddc8-30f2-11e6-b0ac-40a8f03d3f15" />
<param execution_type="WDSP" /> <!-- value: "WDSP" "ADSP" "DYNAMIC" -->
- <param library="none" />
<param max_cpe_phrases="1" />
<param max_cpe_users="1" />
<param max_ape_phrases="1" />
@@ -269,39 +237,18 @@
<!-- wdsp_fluence_type: fluence disabled: "NONE" -->
<!-- fluence enabled: "FLUENCE_DMIC", "FLUENCE_QMIC" -->
<param wdsp_fluence_type="NONE" />
- <gcs_usecase>
- <param uid="0x3" />
- <param acdb_devices="DEVICE_HANDSET_MIC_CPE" />
- <param load_sound_model_ids="0x18000001, 0x4, 0x18000100" />
- <param start_engine_ids="0x18000001, 0x4, 0x18000101" />
- <param confidence_levels_ids="0x18000001, 0x4, 0x00012C28" />
- <param detection_event_ids="0x18000001, 0x4, 0x00012C29" />
- <param custom_config_ids="0x18000001, 0x4, 0x00012C20" />
- <param read_cmd_ids="0x00020013, 0x4, 0x00020015" />
- <param read_rsp_ids="0x00020013, 0x4, 0x00020016" />
- </gcs_usecase>
- <gcs_usecase>
- <param uid="0x4" />
- <param acdb_devices="DEVICE_HANDSET_DMIC_CPE" />
- <param load_sound_model_ids="0x18000001, 0x5, 0x18000100" />
- <param start_engine_ids="0x18000001, 0x5, 0x18000101" />
- <param confidence_levels_ids="0x18000001, 0x5, 0x00012C28" />
- <param detection_event_ids="0x18000001, 0x5, 0x00012C29" />
- <param custom_config_ids="0x18000001, 0x5, 0x00012C20" />
- <param read_cmd_ids="0x00020013, 0x5, 0x00020015" />
- <param read_rsp_ids="0x00020013, 0x5, 0x00020016" />
- </gcs_usecase>
-
<lsm_usecase>
<param execution_mode="ADSP" />
<param app_type="3" /> <!-- app type used in ACDB -->
<param in_channels="1"/> <!-- Module input channels -->
- <param load_sound_model_ids="0x18000001, 0x00012C14" />
- <param unload_sound_model_ids="0x18000001, 0x00012C15" />
- <param confidence_levels_ids="0x18000001, 0x00012C07" />
- <param operation_mode_ids="0x18000001, 0x00012C02" />
- <param polling_enable_ids="0x18000001, 0x00012C1B" />
- <param custom_config_ids="0x18000001, 0x00012C20" />
+ <module_params>
+ <param load_sound_model_ids="0x18000001, 0x0, 0x00012C14" />
+ <param unload_sound_model_ids="0x18000001, 0x0, 0x00012C15" />
+ <param confidence_levels_ids="0x18000001, 0x0, 0x00012C07" />
+ <param operation_mode_ids="0x18000001, 0x0, 0x00012C02" />
+ <param polling_enable_ids="0x18000001, 0x0, 0x00012C1B" />
+ <param custom_config_ids="0x18000001, 0x0, 0x00012C20" />
+ </module_params>
</lsm_usecase>
<!-- format: "ADPCM_packet" or "PCM_packet" !-->
@@ -316,20 +263,31 @@
<sound_model_config>
<param vendor_uuid="9f6ad62a-1f0b-11e7-87c5-40a8f03d3f15" />
<param execution_type="WDSP" /> <!-- value: "WDSP" "ADSP" "DYNAMIC" -->
- <param library="none" />
+ <param max_ape_phrases="1" />
+ <param max_ape_users="1" />
+ <!-- Profile specific data which the algorithm can support -->
+ <param sample_rate="16000" />
+ <param bit_width="16" />
+ <param out_channels="1"/> <!-- Module output channels -->
<!-- fluence enabled: "FLUENCE_DMIC", "FLUENCE_QMIC" -->
<param wdsp_fluence_type="NONE" />
- <gcs_usecase>
- <param uid="0x6" />
- <param acdb_devices="DEVICE_HANDSET_MIC_CPE" />
- <param load_sound_model_ids="0x18000001, 0x4, 0x18000102" />
- <param start_engine_ids="0x18000001, 0x4, 0x18000103" />
- <param confidence_levels_ids="0x18000001, 0x4, 0x00012C28" />
- <param detection_event_ids="0x18000001, 0x4, 0x00012C29" />
- <param custom_config_ids="0x18000001, 0x4, 0x00012C20" />
- <param read_cmd_ids="0x00020013, 0x7, 0x00020015" />
- <param read_rsp_ids="0x00020013, 0x7, 0x00020016" />
- </gcs_usecase>
+ <!-- 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" />
+ <param fluence_type="FLUENCE_DMIC" />
+ <lsm_usecase>
+ <param execution_mode="ADSP" />
+ <param app_type="3" /> <!-- app type used in ACDB -->
+ <param in_channels="1"/> <!-- Module input channels -->
+ <module_params>
+ <param load_sound_model_ids="0x18000001, 0x0, 0x00012C14" />
+ <param unload_sound_model_ids="0x18000001, 0x0, 0x00012C15" />
+ <param confidence_levels_ids="0x18000001, 0x0, 0x00012C07" />
+ <param operation_mode_ids="0x18000001, 0x0, 0x00012C02" />
+ <param polling_enable_ids="0x18000001, 0x0, 0x00012C1B" />
+ <param custom_config_ids="0x18000001, 0x0, 0x00012C20" />
+ </module_params>
+ </lsm_usecase>
<!-- kw_duration is in milli seconds. It is valid only for FTRT
transfer mode -->
<param capture_keyword="MULAW_raw, FTRT, 5000" />
diff --git a/configs/msmsteppe_au/msmsteppe_au.mk b/configs/msmsteppe_au/msmsteppe_au.mk
index 9d990a5..49fb0c6 100644
--- a/configs/msmsteppe_au/msmsteppe_au.mk
+++ b/configs/msmsteppe_au/msmsteppe_au.mk
@@ -4,7 +4,11 @@
BOARD_USES_ALSA_AUDIO := true
ifneq ($(TARGET_USES_AOSP_FOR_AUDIO), true)
+ifeq ($(TARGET_FWK_SUPPORTS_FULL_VALUEADDS),true)
USE_CUSTOM_AUDIO_POLICY := 1
+else
+USE_CUSTOM_AUDIO_POLICY := 0
+endif
AUDIO_FEATURE_ENABLED_COMPRESS_CAPTURE := false
AUDIO_FEATURE_ENABLED_COMPRESS_VOIP := false
AUDIO_FEATURE_ENABLED_DYNAMIC_ECNS := true
@@ -39,6 +43,9 @@
USE_XML_AUDIO_POLICY_CONF := 1
AUDIO_FEATURE_ENABLED_DLKM := true
BOARD_SUPPORTS_SOUND_TRIGGER := true
+BOARD_SUPPORTS_OPENSOURCE_STHAL := true
+AUDIO_FEATURE_ENABLED_SVA_CHANNEL_IDX := true
+AUDIO_FEATURE_QSSI_COMPLIANCE := true
AUDIO_FEATURE_ENABLED_INSTANCE_ID := true
ifeq ($(TARGET_HAS_GENERIC_KERNEL_HEADERS), true)
AUDIO_FEATURE_ENABLED_GKI := true
diff --git a/configs/msmsteppe_au/sound_trigger_platform_info.xml b/configs/msmsteppe_au/sound_trigger_platform_info.xml
index 1545922..a7d0459 100644
--- a/configs/msmsteppe_au/sound_trigger_platform_info.xml
+++ b/configs/msmsteppe_au/sound_trigger_platform_info.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--- Copyright (c) 2013-2019, The Linux Foundation. All rights reserved. -->
+<!--- Copyright (c) 2013-2021, 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 -->
@@ -26,17 +26,20 @@
<!--- OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -->
<!--- IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -->
<sound_trigger_platform_info>
- <param version="0x0103" /> <!-- this must be the first param -->
+ <param version="0x0106" /> <!-- this must be the first param -->
<!--- Version History: -->
<!--- 0x0101: Legacy version. -->
<!--- 0x0102: Includes acdb_ids param with the gcs_usecase tag. This matches -->
<!--- the gcs_usecase with the acdb device that uses it. -->
<!--- 0x0103: app_type and in_channels added to <lsm usecase> and out_channels -->
<!--- added to <adm_config> -->
+<!--- 0x0104: instance id support for both WDSP<CPE> and ADSP lsm usecases -->
+<!--- 0x0105: Select <lsm_usecase> based on capture device -->
+<!--- 0x0106: Add module_params tag to support multiple module and param ids -->
+<!--- per <lsm_usecase> -->
+
<common_config>
- <param implementer_version="0x0100" />
- <param max_cpe_sessions="1" />
- <param max_wdsp_sessions="2" />
+ <param implementer_version="0x0102" />
<param max_ape_sessions="8" />
<param enable_failure_detection="false" />
<param support_device_switch="false" />
@@ -45,55 +48,47 @@
<param transit_to_adsp_on_battery_charging="false" />
<!-- 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_0_TX values -->
<param backend_port_name="TERT_TDM_TX_0" />
- <!-- param backend_port_name="TX_CDC_DMA_TX_3" /-->
<!-- Param used to match and obtain device backend index -->
<param backend_dai_name="TERT_TDM_TX_0" />
- <!-- param backend_dai_name="TX_CDC_DMA_TX_3" /-->
+ <!-- Param used to indicate if SVA has dedicated SLIM ports -->
+ <param dedicated_sva_path="true" />
+ <param platform_lpi_enable="false" />
<param concurrent_capture="true" />
<param concurrent_voice_call="false" />
<param concurrent_voip_call="false" />
</common_config>
<acdb_ids>
- <!--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_TMIC_CPE="130" />
+ <param DEVICE_HANDSET_TMIC_APE="157" />
<param DEVICE_HANDSET_MIC_PP_APE="135" />
<param DEVICE_HANDSET_QMIC_APE="132" />
<param DEVICE_HEADSET_MIC_CPE="139" />
+ <param DEVICE_HEADSET_MIC_APE="141" />
<param DEVICE_HANDSET_DMIC_APE="149" />
- <param DEVICE_HANDSET_DMIC_CPE="153" />
- <param DEVICE_HANDSET_TMIC_APE="157" />
+ <param DEVICE_HANDSET_DMIC_CPE="148" />
</acdb_ids>
+
<!-- Multiple sound_model_config tags can be listed, each with unique -->
<!-- vendor_uuid. The below tag represents QTI SVA engine sound model -->
<!-- configuration. ISV must use their own unique vendor_uuid. -->
+
+ <!-- QTI SVA -->
<sound_model_config>
<param vendor_uuid="68ab2d40-e860-11e3-95ef-0002a5d5c51b" />
- <param execution_type="ADSP" /> <!-- value: "WDSP" "ADSP" "DYNAMIC" -->
- <param library="libsmwrapper.so" />
- <param max_cpe_phrases="6" />
- <param max_cpe_users="3" />
+ <param execution_type="ADSP" />
+ <param merge_first_stage_sound_models="false"/>
<param max_ape_phrases="20" />
<param max_ape_users="10" />
<!-- Profile specific data which the algorithm can support -->
<param sample_rate="16000" />
<param bit_width="16" />
<param out_channels="1"/> <!-- Module output channels -->
- <!-- 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="FFECNS" />
- <!-- fluence_type: "FLUENCE", "FLUENCE_DMIC", "FLUENCE_TMIC" -->
- <!-- "FLUENCE_QMIC". Param value is valid when adm_cfg_profile -->
- <!-- is one of FLUENCE, FLUENCE_STEREO, FFECNS values -->
- <param fluence_type="FLUENCE_QMIC" />
- <!-- wdsp_fluence_type: fluence disabled: "NONE" -->
- <!-- fluence enabled: "FLUENCE_DMIC", "FLUENCE_TMIC", "FLUENCE_QMIC" -->
- <param wdsp_fluence_type="NONE" />
+ <param dam_token_id="1"/>
+
<arm_ss_usecase>
<!-- Options are "KEYWORD_DETECTION", "USER_VERIFICATION", "CUSTOM_DETECTION" -->
<param sm_detection_type= "KEYWORD_DETECTION" />
@@ -111,72 +106,58 @@
<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>
+ <arm_ss_usecase>
+ <param sm_detection_type= "KEYWORD_DETECTION" />
+ <param sm_id="0x8" />
+ <param module_lib="libcapiv2svarnn.so"/>
+ <param sample_rate="16000"/>
+ <param bit_wdith="16"/>
+ <param channel_count="1"/>
+ </arm_ss_usecase>
<!-- Module and param ids with which the algorithm is integrated
in non-graphite firmware (note these must come after gcs params)
Extends flexibility to have different ids based on execution type.
valid execution_type values: "WDSP" "ADSP" -->
<lsm_usecase>
+ <param capture_device="HANDSET" />
+ <!-- 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="FFECNS" />
+ <!-- fluence_type: "FLUENCE", "FLUENCE_DMIC", "FLUENCE_TMIC" -->
+ <!-- "FLUENCE_QMIC". Param value is valid when adm_cfg_profile -->
+ <!-- is one of FLUENCE, FLUENCE_STEREO, FFECNS values -->
+ <param fluence_type="FLUENCE_QMIC" />
<param execution_mode="ADSP" />
+ <!-- lpi_mode: "NON_LPI_BARGE_IN", "NON_LPI", "LPI" -->
+ <!-- NON_LPI_BARGE_IN: Default non-LPI mode type. lsm_usecase -->
+ <!-- must be present with this mode type to handle barge-in. -->
+ <!-- NON_LPI: If another lsm_usecase is present with this mode -->
+ <!-- type, it will be used for non-LPI non-barge-in usecases. -->
+ <!-- If not present, NON_LPI_BARGE_IN mode type will be used. -->
+ <!-- LPI: This mode type will be used for LPI usecases. -->
<param app_type="2" /> <!-- app type used in ACDB -->
+ <param pdk5_app_type="1" />
<param in_channels="4"/> <!-- Module input channels -->
- <param load_sound_model_ids="0x00012C1C, 0x00012C14" />
- <param unload_sound_model_ids="0x00012C1C, 0x00012C15" />
- <param confidence_levels_ids="0x00012C1C, 0x00012C07" />
- <param operation_mode_ids="0x00012C1C, 0x00012C02" />
- <param polling_enable_ids="0x00012C1C, 0x00012C1B" />
- <param custom_config_ids="0x00012C1C, 0x00012C20" />
- <param det_event_type_ids="0x00012C1C, 0x00012C2C" />
- </lsm_usecase>
- <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" />
+ <module_params>
+ <param module_type="GMM" />
+ <param load_sound_model_ids="0x00012C1C, 0x0, 0x00012C14" />
+ <param unload_sound_model_ids="0x00012C1C, 0x0, 0x00012C15" />
+ <param confidence_levels_ids="0x00012C1C, 0x0, 0x00012C07" />
+ <param operation_mode_ids="0x00012C1C, 0x0, 0x00012C02" />
+ <param polling_enable_ids="0x00012C1C, 0x0, 0x00012C1B" />
+ <param custom_config_ids="0x00012C1C, 0x0, 0x00012C20" />
+ <param det_event_type_ids="0x00012C1C, 0x0, 0x00012C2C" />
+ <param lab_dam_cfg_ids="0x00012C08, 0x0, 0x000102C4" />
+ </module_params>
+ <module_params>
+ <param module_type="PDK5" />
+ <param load_sound_model_ids="0x00012C35, 0x0, 0x00012C36" />
+ <param unload_sound_model_ids="0x00012C35, 0x0, 0x00012C37" />
+ <param confidence_levels_ids="0x00012C35, 0x0, 0x00012C38" />
+ <param custom_config_ids="0x00012C35, 0x0, 0x00012C20" />
+ <param det_event_type_ids="0x00012C35, 0x0, 0x00012C2C" />
+ <param lab_dam_cfg_ids="0x00012C08, 0x0, 0x000102C4" />
+ </module_params>
</lsm_usecase>
<!-- format: "ADPCM_packet" or "PCM_packet" !-->
@@ -185,17 +166,12 @@
transfer mode -->
<param capture_keyword="PCM_packet, RT, 2000" />
<param client_capture_read_delay="2000" />
- <param lpi_enable="false" />
- <param concurrent_capture="true" />
- <param concurrent_voice_call="false" />
- <param concurrent_voip_call="false" />
</sound_model_config>
- <!-- QTI Music Detection !-->
+ <!-- QTI Music Detection !-->
<sound_model_config>
<param vendor_uuid="876c1b46-9d4d-40cc-a4fd-4d5ec7a80e47" />
- <param execution_type="ADSP" /> <!-- value: "WDSP" "ADSP" "DYNAMIC" -->
- <param library="libsmwrapper.so" />
+ <param execution_type="WDSP" /> <!-- value: "WDSP" "ADSP" "DYNAMIC" -->
<param max_cpe_phrases="1" />
<param max_cpe_users="1" />
<param max_ape_phrases="1" />
@@ -214,18 +190,6 @@
<!-- 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)
Extends flexibility to have different ids based on execution type.
@@ -234,11 +198,13 @@
<param execution_mode="ADSP" />
<param app_type="4" /> <!-- app type for MD used in ACDB -->
<param in_channels="1"/> <!-- Module input channels -->
- <param load_sound_model_ids="0x00012C22, 0x00012C14" />
- <param unload_sound_model_ids="0x00012C22, 0x00012C15" />
- <param confidence_levels_ids="0x00012C22, 0x00012C07" />
- <param det_event_type_ids="0x00012C22, 0x00012C2C" />
- <param custom_config_ids="0x00012C22, 0x00012C30" />
+ <module_params>
+ <param load_sound_model_ids="0x00012C22, 0x0, 0x00012C14" />
+ <param unload_sound_model_ids="0x00012C22, 0x0, 0x00012C15" />
+ <param confidence_levels_ids="0x00012C22, 0x0, 0x00012C07" />
+ <param det_event_type_ids="0x00012C22, 0x0, 0x00012C2C" />
+ <param custom_config_ids="0x00012C22, 0x0, 0x00012C30" />
+ </module_params>
</lsm_usecase>
<!-- format: "ADPCM_packet" or "PCM_packet" !-->
@@ -249,11 +215,10 @@
<param client_capture_read_delay="2000" />
</sound_model_config>
-<!-- Sound model config for Hotword !-->
+ <!-- Google Hotword -->
<sound_model_config>
<param vendor_uuid="7038ddc8-30f2-11e6-b0ac-40a8f03d3f15" />
<param execution_type="WDSP" /> <!-- value: "WDSP" "ADSP" "DYNAMIC" -->
- <param library="none" />
<param max_cpe_phrases="1" />
<param max_cpe_users="1" />
<param max_ape_phrases="1" />
@@ -265,62 +230,67 @@
<!-- 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"-->
+ <!-- fluence_type: "FLUENCE", "FLUENCE_DMIC", "FLUENCE_TMIC" -->
+ <!-- "FLUENCE_QMIC". Param value is valid when adm_cfg_profile -->
+ <!-- is one of FLUENCE, FLUENCE_STEREO, FFECNS values -->
<param fluence_type="FLUENCE_DMIC" />
<!-- wdsp_fluence_type: fluence disabled: "NONE" -->
- <!-- fluence enabled: "FLUENCE_DMIC", "FLUENCE_TMIC", "FLUENCE_QMIC" -->
+ <!-- fluence enabled: "FLUENCE_DMIC", "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)
- Extends flexibility to have different ids based on execution type.
- valid execution_type values: "WDSP" "ADSP" -->
<lsm_usecase>
<param execution_mode="ADSP" />
<param app_type="3" /> <!-- app type used in ACDB -->
<param in_channels="1"/> <!-- Module input channels -->
- <param load_sound_model_ids="0x18000001, 0x00012C14" />
- <param unload_sound_model_ids="0x18000001, 0x00012C15" />
- <param confidence_levels_ids="0x18000001, 0x00012C07" />
- <param operation_mode_ids="0x18000001, 0x00012C02" />
- <param polling_enable_ids="0x18000001, 0x00012C1B" />
- <param custom_config_ids="0x18000001, 0x00012C20" />
- </lsm_usecase>
-
- <lsm_usecase>
- <param execution_mode="WDSP" />
- <param load_sound_model_ids="0x18000001, 0x00012C14" />
- <param unload_sound_model_ids="0x18000001, 0x00012C15" />
- <param confidence_levels_ids="0x18000001, 0x00012C07" />
- <param operation_mode_ids="0x18000001, 0x00012C02" />
- <param custom_config_ids="0x18000001, 0x00012C20" />
+ <module_params>
+ <param load_sound_model_ids="0x18000001, 0x0, 0x00012C14" />
+ <param unload_sound_model_ids="0x18000001, 0x0, 0x00012C15" />
+ <param confidence_levels_ids="0x18000001, 0x0, 0x00012C07" />
+ <param operation_mode_ids="0x18000001, 0x0, 0x00012C02" />
+ <param polling_enable_ids="0x18000001, 0x0, 0x00012C1B" />
+ <param custom_config_ids="0x18000001, 0x0, 0x00012C20" />
+ </module_params>
</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 capture_keyword="PCM_raw, FTRT, 2000" />
+ <param client_capture_read_delay="2000" />
+ </sound_model_config>
+
+ <!-- Google Music Detection -->
+ <sound_model_config>
+ <param vendor_uuid="9f6ad62a-1f0b-11e7-87c5-40a8f03d3f15" />
+ <param execution_type="WDSP" /> <!-- value: "WDSP" "ADSP" "DYNAMIC" -->
+ <param max_ape_phrases="1" />
+ <param max_ape_users="1" />
+ <!-- Profile specific data which the algorithm can support -->
+ <param sample_rate="16000" />
+ <param bit_width="16" />
+ <param out_channels="1"/> <!-- Module output channels -->
+ <!-- fluence enabled: "FLUENCE_DMIC", "FLUENCE_QMIC" -->
+ <param wdsp_fluence_type="NONE" />
+ <!-- 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" />
+ <param fluence_type="FLUENCE_DMIC" />
+ <lsm_usecase>
+ <param execution_mode="ADSP" />
+ <param app_type="3" /> <!-- app type used in ACDB -->
+ <param in_channels="1"/> <!-- Module input channels -->
+ <module_params>
+ <param load_sound_model_ids="0x18000001, 0x0, 0x00012C14" />
+ <param unload_sound_model_ids="0x18000001, 0x0, 0x00012C15" />
+ <param confidence_levels_ids="0x18000001, 0x0, 0x00012C07" />
+ <param operation_mode_ids="0x18000001, 0x0, 0x00012C02" />
+ <param polling_enable_ids="0x18000001, 0x0, 0x00012C1B" />
+ <param custom_config_ids="0x18000001, 0x0, 0x00012C20" />
+ </module_params>
+ </lsm_usecase>
+ <!-- kw_duration is in milli seconds. It is valid only for FTRT
+ transfer mode -->
+ <param capture_keyword="MULAW_raw, FTRT, 5000" />
<param client_capture_read_delay="2000" />
</sound_model_config>
diff --git a/hal/audio_extn/Android.mk b/hal/audio_extn/Android.mk
index db80656..bc8392d 100755
--- a/hal/audio_extn/Android.mk
+++ b/hal/audio_extn/Android.mk
@@ -1160,7 +1160,7 @@
system/media/audio/include
LOCAL_SHARED_LIBRARIES:= \
- android.frameworks.automotive.powerpolicy-ndk_platform \
+ android.frameworks.automotive.powerpolicy-V1-ndk_platform \
libbase \
libbinder_ndk \
libcutils \
diff --git a/hal/audio_extn/soundtrigger.c b/hal/audio_extn/soundtrigger.c
index 330c9cb..b3df579 100644
--- a/hal/audio_extn/soundtrigger.c
+++ b/hal/audio_extn/soundtrigger.c
@@ -561,7 +561,7 @@
struct stream_in *active_input = adev_get_active_input(st_dev->adev);
audio_source_t source = (active_input == NULL) ?
AUDIO_SOURCE_DEFAULT : active_input->source;
- if (voice_is_call_state_active_in_call(st_dev->adev)) {
+ if (voice_is_in_call(st_dev->adev)) {
ev_info.u.usecase.type = USECASE_TYPE_VOICE_CALL;
} else if ((st_dev->adev->mode == AUDIO_MODE_IN_COMMUNICATION ||
source == AUDIO_SOURCE_VOICE_COMMUNICATION) &&
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 601a63f..278a3e5 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -3078,6 +3078,30 @@
}
enable_audio_route(adev, usecase);
+ if (uc_id == USECASE_AUDIO_PLAYBACK_VOIP) {
+ struct stream_in *voip_in = get_voice_communication_input(adev);
+ struct audio_usecase *voip_in_usecase = NULL;
+ voip_in_usecase = get_usecase_from_list(adev, USECASE_AUDIO_RECORD_VOIP);
+ if (voip_in != NULL &&
+ voip_in_usecase != NULL &&
+ !(out_snd_device == AUDIO_DEVICE_OUT_SPEAKER ||
+ out_snd_device == AUDIO_DEVICE_OUT_SPEAKER_SAFE) &&
+ (voip_in_usecase->in_snd_device ==
+ platform_get_input_snd_device(adev->platform, voip_in,
+ &usecase->stream.out->device_list,usecase->type))) {
+ /*
+ * if VOIP TX is enabled before VOIP RX, needs to re-route the TX path
+ * for enabling echo-reference-voip with correct port
+ */
+ ALOGD("%s: VOIP TX is enabled before VOIP RX,needs to re-route the TX path",__func__);
+ disable_audio_route(adev, voip_in_usecase);
+ disable_snd_device(adev, voip_in_usecase->in_snd_device);
+ enable_snd_device(adev, voip_in_usecase->in_snd_device);
+ enable_audio_route(adev, voip_in_usecase);
+ }
+ }
+
+
audio_extn_qdsp_set_device(usecase);
/* If input stream is already running then effect needs to be
@@ -5466,7 +5490,9 @@
latency = period_ms + platform_render_latency(out) / 1000;
} else {
latency = (out->config.period_count * out->config.period_size * 1000) /
- (out->config.rate);
+ (out->config.rate);
+ if (out->usecase == USECASE_AUDIO_PLAYBACK_DEEP_BUFFER)
+ latency += platform_render_latency(out)/1000;
}
if (!out->standby && is_a2dp_out_device_type(&out->device_list))
@@ -8790,12 +8816,14 @@
struct listnode *node;
list_for_each(node, &adev->usecase_list) {
usecase = node_to_item(node, struct audio_usecase, list);
- if (usecase->stream.in && (usecase->type == PCM_CAPTURE) &&
+ if (usecase->stream.in && (usecase->type == PCM_CAPTURE ||
+ usecase->type == VOICE_CALL) &&
(!is_btsco_device(SND_DEVICE_NONE, usecase->in_snd_device))) {
ALOGD("BT_SCO ON, switch all in use case to it");
select_devices(adev, usecase->id);
}
- if (usecase->stream.out && (usecase->type == PCM_PLAYBACK) &&
+ if (usecase->stream.out && (usecase->type == PCM_PLAYBACK ||
+ usecase->type == VOICE_CALL) &&
(!is_btsco_device(usecase->out_snd_device, SND_DEVICE_NONE))) {
ALOGD("BT_SCO ON, switch all out use case to it");
select_devices(adev, usecase->id);
@@ -10478,14 +10506,16 @@
reassign_device_list(&out->device_list, AUDIO_DEVICE_OUT_SPEAKER, "");
list_for_each(node, &adev->usecase_list) {
usecase = node_to_item(node, struct audio_usecase, list);
- if ((usecase != uc_info) &&
- platform_check_backends_match(SND_DEVICE_OUT_SPEAKER,
- usecase->out_snd_device)) {
+ if ((usecase->type != PCM_CAPTURE) && (usecase != uc_info) &&
+ !is_a2dp_out_device_type(&usecase->stream.out->device_list) &&
+ platform_check_backends_match(SND_DEVICE_OUT_SPEAKER,
+ usecase->out_snd_device)) {
assign_devices(&out->device_list, &usecase->stream.out->device_list);
break;
}
}
- if (uc_info->out_snd_device == SND_DEVICE_OUT_BT_A2DP) {
+ if (is_a2dp_out_device_type(&devices) &&
+ list_length(&devices) == 1) {
out->a2dp_muted = true;
if (is_offload_usecase(out->usecase)) {
if (out->offload_state == OFFLOAD_STATE_PLAYING)
@@ -10791,8 +10821,7 @@
configured_low_latency_capture_period_size = trial;
}
}
- if ((property_get("vendor.audio_hal.in_period_size", value, NULL) > 0) ||
- (property_get("audio_hal.in_period_size", value, NULL) > 0)) {
+ if (property_get("vendor.audio_hal.in_period_size", value, NULL) > 0) {
trial = atoi(value);
if (period_size_is_plausible_for_low_latency(trial)) {
configured_low_latency_capture_period_size = trial;
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 0a68567..ca5164f 100755
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -5488,7 +5488,7 @@
struct audio_backend_cfg backend_cfg = {0};
bool is_bus_dev_usecase = false;
- if (voice_is_in_call_or_call_screen(my_data->adev))
+ if (voice_is_in_call_or_call_screen(my_data->adev) && (usecase->type == PCM_CAPTURE))
is_incall_rec_usecase = voice_is_in_call_rec_stream(usecase->stream.in);
if (compare_device_type(&usecase->device_list, AUDIO_DEVICE_OUT_BUS))
@@ -5496,7 +5496,7 @@
if (usecase->type == PCM_PLAYBACK)
snd_device = usecase->out_snd_device;
- else if ((usecase->type == PCM_CAPTURE) && is_incall_rec_usecase)
+ else if (is_incall_rec_usecase)
snd_device = voice_get_incall_rec_snd_device(usecase->in_snd_device);
else if ((usecase->type == PCM_HFP_CALL) || (usecase->type == PCM_CAPTURE)||
(usecase->type == ICC_CALL) || (usecase->type == SYNTH_LOOPBACK))
@@ -9555,7 +9555,9 @@
ALOGD("%s:becf: afe: %s mixer set to %d bit for %x format", __func__,
my_data->current_backend_cfg[backend_idx].bitwidth_mixer_ctl, bit_width, format);
for (int idx = 0; idx < MAX_CODEC_BACKENDS; idx++) {
- if (my_data->current_backend_cfg[idx].bitwidth_mixer_ctl) {
+ if (my_data->current_backend_cfg[idx].bitwidth_mixer_ctl
+ && strcmp(my_data->current_backend_cfg[idx].bitwidth_mixer_ctl,
+ my_data->current_backend_cfg[backend_idx].bitwidth_mixer_ctl) == 0) {
ctl = mixer_get_ctl_by_name(adev->mixer,
my_data->current_backend_cfg[idx].bitwidth_mixer_ctl);
id_string = platform_get_mixer_control(ctl);
@@ -9660,7 +9662,9 @@
ALOGD("%s:becf: afe: %s set to %s", __func__,
my_data->current_backend_cfg[backend_idx].samplerate_mixer_ctl, rate_str);
for (int idx = 0; idx < MAX_CODEC_BACKENDS; idx++) {
- if (my_data->current_backend_cfg[idx].samplerate_mixer_ctl) {
+ if (my_data->current_backend_cfg[idx].samplerate_mixer_ctl
+ && strcmp(my_data->current_backend_cfg[idx].samplerate_mixer_ctl,
+ my_data->current_backend_cfg[backend_idx].samplerate_mixer_ctl) == 0) {
ctl = mixer_get_ctl_by_name(adev->mixer,
my_data->current_backend_cfg[idx].samplerate_mixer_ctl);
id_string = platform_get_mixer_control(ctl);
@@ -9715,7 +9719,9 @@
ALOGD("%s:becf: afe: %s set to %s", __func__,
my_data->current_backend_cfg[backend_idx].channels_mixer_ctl, channel_cnt_str);
for (int idx = 0; idx < MAX_CODEC_BACKENDS; idx++) {
- if (my_data->current_backend_cfg[idx].channels_mixer_ctl) {
+ if (my_data->current_backend_cfg[idx].channels_mixer_ctl &&
+ strcmp(my_data->current_backend_cfg[idx].channels_mixer_ctl,
+ my_data->current_backend_cfg[backend_idx].channels_mixer_ctl) == 0) {
ctl = mixer_get_ctl_by_name(adev->mixer,
my_data->current_backend_cfg[idx].channels_mixer_ctl);
id_string = platform_get_mixer_control(ctl);
diff --git a/hal/voice.c b/hal/voice.c
index fdca74a..230ceed 100644
--- a/hal/voice.c
+++ b/hal/voice.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013-2020, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2013-2021, The Linux Foundation. All rights reserved.
* Not a contribution.
*
* Copyright (C) 2013 The Android Open Source Project
@@ -204,6 +204,7 @@
disable_snd_device(adev, uc_info->in_snd_device);
adev->voice.lte_call = false;
+ adev->voice.in_call = false;
list_remove(&uc_info->list);
free(uc_info);
@@ -244,6 +245,8 @@
return -ENOMEM;
}
+ adev->voice.in_call = true;
+
uc_info->id = usecase_id;
uc_info->type = VOICE_CALL;
uc_info->stream.out = adev->current_call_output;
@@ -263,7 +266,6 @@
if (is_sco_out_device_type(&uc_info->device_list) && !adev->bt_sco_on) {
ALOGE("start_call: couldn't find BT SCO, SCO is not ready");
- adev->voice.in_call = false;
ret = -EIO;
goto error_start_voice;
}
@@ -725,12 +727,12 @@
{
int ret = 0;
- adev->voice.in_call = false;
ret = voice_extn_stop_call(adev);
if (ret == -ENOSYS) {
ret = voice_stop_usecase(adev, USECASE_VOICE_CALL);
}
+ adev->voice.in_call = false;
return ret;
}