Merge "hal: Move sequence of audio_extn_auto_hal_open_input_stream"
diff --git a/configs/lahaina/lahaina.mk b/configs/lahaina/lahaina.mk
index d8b3ea1..b6f2bca 100644
--- a/configs/lahaina/lahaina.mk
+++ b/configs/lahaina/lahaina.mk
@@ -120,6 +120,7 @@
PRODUCT_PACKAGES += $(AUDIO_HAL_TEST_APPS)
PRODUCT_PACKAGES += ftm_test_config_lahaina-qrd-snd-card
PRODUCT_PACKAGES += ftm_test_config_lahaina-hdk-snd-card
+PRODUCT_PACKAGES += ftm_test_config_lahaina-hhg-snd-card
PRODUCT_PACKAGES += ftm_test_config_lahaina-shimaidp-snd-card
PRODUCT_PACKAGES += ftm_test_config_lahaina-shimaidps-snd-card
PRODUCT_PACKAGES += ftm_test_config_lahaina-shimaqrd-snd-card
diff --git a/configs/msm8937/audio_platform_info_sdm429w_dvt2.xml b/configs/msm8937/audio_platform_info_sdm429w_dvt2.xml
index fa93726..f179369 100644
--- a/configs/msm8937/audio_platform_info_sdm429w_dvt2.xml
+++ b/configs/msm8937/audio_platform_info_sdm429w_dvt2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!-- Copyright (c) 2015 - 2016, 2018, 2020, The Linux Foundation. All rights reserved. -->
+<!-- Copyright (c) 2015 - 2016, 2018, 2020-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,7 +26,7 @@
<!-- IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -->
<audio_platform_info>
<bit_width_configs>
- <device name="SND_DEVICE_OUT_SPEAKER" bit_width="24"/>
+ <device name="SND_DEVICE_OUT_SPEAKER" bit_width="16"/>
</bit_width_configs>
<interface_names>
<device name="AUDIO_DEVICE_IN_BUILTIN_MIC" interface="SLIMBUS_0" codec_type="external"/>
diff --git a/configs/msm8937/audio_policy_configuration_sdm429w.xml b/configs/msm8937/audio_policy_configuration_sdm429w.xml
index 336bf55..67b930e 100644
--- a/configs/msm8937/audio_policy_configuration_sdm429w.xml
+++ b/configs/msm8937/audio_policy_configuration_sdm429w.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<!-- Copyright (c) 2016-2020, The Linux Foundation. All rights reserved
+<!-- Copyright (c) 2016-2021, The Linux Foundation. All rights reserved
Not a Contribution.
-->
<!-- Copyright (C) 2015 The Android Open Source Project
@@ -46,11 +46,11 @@
“defaultOutputDevice”: device to be used by default when no policy rule applies
-->
<modules>
- <!-- Primary Audio HAL -->
<module name="primary" halVersion="2.0">
<attachedDevices>
- <item>Earpiece</item>
<item>Speaker</item>
+ <item>Speaker Safe</item>
+ <item>Earpiece</item>
<item>Telephony Tx</item>
<item>Built-In Mic</item>
<item>Built-In Back Mic</item>
@@ -58,23 +58,25 @@
</attachedDevices>
<defaultOutputDevice>Speaker</defaultOutputDevice>
<mixPorts>
- <mixPort name="primary output" role="source" flags="AUDIO_OUTPUT_FLAG_FAST|AUDIO_OUTPUT_FLAG_PRIMARY">
+ <mixPort name="primary output" role="source" flags="AUDIO_OUTPUT_FLAG_PRIMARY|AUDIO_OUTPUT_FLAG_FAST">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
+ <mixPort name="raw" role="source" flags="AUDIO_OUTPUT_FLAG_RAW|AUDIO_OUTPUT_FLAG_FAST">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
<mixPort name="deep_buffer" role="source"
flags="AUDIO_OUTPUT_FLAG_DEEP_BUFFER">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
- samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ samplingRates="44100,48000"
+ channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
<mixPort name="compressed_offload" role="source"
flags="AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD|AUDIO_OUTPUT_FLAG_NON_BLOCKING">
<profile name="" format="AUDIO_FORMAT_MP3"
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
channelMasks="AUDIO_CHANNEL_OUT_STEREO,AUDIO_CHANNEL_OUT_MONO"/>
- <profile name="" format="AUDIO_FORMAT_AAC"
- samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
- channelMasks="AUDIO_CHANNEL_OUT_STEREO,AUDIO_CHANNEL_OUT_MONO"/>
<profile name="" format="AUDIO_FORMAT_AAC_LC"
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000,64000,88200,96000"
channelMasks="AUDIO_CHANNEL_OUT_STEREO,AUDIO_CHANNEL_OUT_MONO"/>
@@ -82,7 +84,7 @@
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000,64000,88200,96000"
channelMasks="AUDIO_CHANNEL_OUT_STEREO,AUDIO_CHANNEL_OUT_MONO"/>
<profile name="" format="AUDIO_FORMAT_AAC_HE_V2"
- samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000,64000,88200,96000"
+ samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
channelMasks="AUDIO_CHANNEL_OUT_STEREO,AUDIO_CHANNEL_OUT_MONO"/>
</mixPort>
<mixPort name="voice_tx" role="source">
@@ -90,160 +92,89 @@
samplingRates="8000,16000,48000" channelMasks="AUDIO_CHANNEL_OUT_MONO,AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
<mixPort name="voip_rx" role="source"
- flags="AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_VOIP_RX">
+ flags="AUDIO_OUTPUT_FLAG_VOIP_RX">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
- samplingRates="8000,16000" channelMasks="AUDIO_CHANNEL_OUT_MONO"/>
+ samplingRates="8000,16000,32000,48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
-
+ <mixPort name="incall_music_uplink" role="source"
+ flags="AUDIO_OUTPUT_FLAG_INCALL_MUSIC">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="8000,16000,48000"
+ channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
<mixPort name="primary input" role="sink">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
- channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK"/>
+ channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK,AUDIO_CHANNEL_INDEX_MASK_3"/>
</mixPort>
<mixPort name="voice_rx" role="sink">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="8000,16000,48000" channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO"/>
</mixPort>
</mixPorts>
-
<devicePorts>
- <!-- Output devices declaration, i.e. Sink DEVICE PORT -->
<devicePort tagName="Earpiece" type="AUDIO_DEVICE_OUT_EARPIECE" role="sink">
- <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
- samplingRates="48000" channelMasks="AUDIO_CHANNEL_IN_MONO"/>
</devicePort>
- <devicePort tagName="Speaker" role="sink" type="AUDIO_DEVICE_OUT_SPEAKER" address="">
- <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
- samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ <devicePort tagName="Speaker" type="AUDIO_DEVICE_OUT_SPEAKER" role="sink">
</devicePort>
- <devicePort tagName="Wired Headset" type="AUDIO_DEVICE_OUT_WIRED_HEADSET" role="sink">
- <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
- samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
- </devicePort>
- <devicePort tagName="Wired Headphones" type="AUDIO_DEVICE_OUT_WIRED_HEADPHONE" role="sink">
- <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
- samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ <devicePort tagName="Speaker Safe" type="AUDIO_DEVICE_OUT_SPEAKER_SAFE" role="sink">
</devicePort>
<devicePort tagName="BT SCO" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO" role="sink">
- <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
- samplingRates="8000,16000" channelMasks="AUDIO_CHANNEL_OUT_MONO"/>
</devicePort>
<devicePort tagName="BT SCO Headset" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET" role="sink">
- <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
- samplingRates="8000,16000" channelMasks="AUDIO_CHANNEL_OUT_MONO"/>
</devicePort>
<devicePort tagName="BT SCO Car Kit" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT" role="sink">
- <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
- samplingRates="8000,16000" channelMasks="AUDIO_CHANNEL_OUT_MONO"/>
</devicePort>
<devicePort tagName="Telephony Tx" type="AUDIO_DEVICE_OUT_TELEPHONY_TX" role="sink">
- <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
- samplingRates="8000,16000" channelMasks="AUDIO_CHANNEL_OUT_MONO,AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
- <devicePort tagName="BT A2DP Out" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP" role="sink">
- <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
- samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
- </devicePort>
- <devicePort tagName="BT A2DP Headphones" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES" role="sink">
- <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
- samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
- </devicePort>
- <devicePort tagName="BT A2DP Speaker" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER" role="sink">
- <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
- samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
- </devicePort>
-
<devicePort tagName="Built-In Mic" type="AUDIO_DEVICE_IN_BUILTIN_MIC" role="source">
- <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
- samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
- channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK"/>
</devicePort>
<devicePort tagName="Built-In Back Mic" type="AUDIO_DEVICE_IN_BACK_MIC" role="source">
- <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
- samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
- channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK"/>
- </devicePort>
- <devicePort tagName="Wired Headset Mic" type="AUDIO_DEVICE_IN_WIRED_HEADSET" role="source">
- <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
- samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
- channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK"/>
</devicePort>
<devicePort tagName="BT SCO Headset Mic" type="AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET" role="source">
- <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
- samplingRates="8000,16000" channelMasks="AUDIO_CHANNEL_IN_MONO"/>
</devicePort>
<devicePort tagName="Telephony Rx" type="AUDIO_DEVICE_IN_TELEPHONY_RX" role="source">
- <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
- samplingRates="8000,16000,48000" channelMasks="AUDIO_CHANNEL_IN_MONO"/>
</devicePort>
+ <!-- TODO: Enable multi-channel recording -->
</devicePorts>
- <!-- route declaration, i.e. list all available sources for a given sink -->
<routes>
<route type="mix" sink="Earpiece"
- sources="primary output,deep_buffer,compressed_offload,voip_rx"/>
+ sources="primary output,raw,deep_buffer"/>
<route type="mix" sink="Speaker"
- sources="primary output,deep_buffer,compressed_offload,voip_rx"/>
- <route type="mix" sink="Wired Headset"
- sources="primary output,deep_buffer,compressed_offload,voip_rx"/>
- <route type="mix" sink="Wired Headphones"
- sources="primary output,deep_buffer,compressed_offload,voip_rx"/>
+ sources="primary output,raw,deep_buffer,compressed_offload"/>
+ <route type="mix" sink="Speaker Safe"
+ sources="primary output,raw,deep_buffer,compressed_offload"/>
<route type="mix" sink="BT SCO"
- sources="primary output,deep_buffer,compressed_offload,voip_rx"/>
+ sources="primary output,raw,deep_buffer,voip_rx"/>
<route type="mix" sink="BT SCO Headset"
- sources="primary output,deep_buffer,compressed_offload,voip_rx"/>
+ sources="primary output,raw,deep_buffer,voip_rx"/>
<route type="mix" sink="BT SCO Car Kit"
- sources="primary output,deep_buffer,compressed_offload,voip_rx"/>
+ sources="primary output,raw,deep_buffer,voip_rx"/>
<route type="mix" sink="Telephony Tx"
- sources="voice_tx"/>
+ sources="voice_tx,incall_music_uplink"/>
<route type="mix" sink="primary input"
- sources="Built-In Mic,Built-In Back Mic,Wired Headset Mic,BT SCO Headset Mic,Telephony Rx"/>
+ sources="Built-In Mic,Built-In Back Mic,BT SCO Headset Mic"/>
<route type="mix" sink="voice_rx"
sources="Telephony Rx"/>
- <route type="mix" sink="BT A2DP Out"
- sources="primary output,deep_buffer,compressed_offload"/>
- <route type="mix" sink="BT A2DP Headphones"
- sources="primary output,deep_buffer,compressed_offload"/>
- <route type="mix" sink="BT A2DP Speaker"
- sources="primary output,deep_buffer,compressed_offload"/>
- </routes>
-
- </module>
-
- <!-- A2DP Audio HAL -->
- <module name="a2dp" halVersion="2.0">
- <mixPorts>
- <mixPort name="a2dp input" role="sink">
- <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
- samplingRates="44100,48000" channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO"/>
- </mixPort>
- </mixPorts>
-
- <devicePorts>
- <devicePort tagName="BT A2DP In" type="AUDIO_DEVICE_IN_BLUETOOTH_A2DP" role="source">
- <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
- samplingRates="44100,48000" channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO"/>
- </devicePort>
- </devicePorts>
-
- <routes>
- <route type="mix" sink="a2dp input"
- sources="BT A2DP In"/>
</routes>
</module>
+ <!-- A2dp Audio HAL -->
+ <xi:include href="/vendor/etc/a2dp_audio_policy_configuration.xml"/>
+
<!-- Usb Audio HAL -->
<xi:include href="/vendor/etc/usb_audio_policy_configuration.xml"/>
<!-- Remote Submix Audio HAL -->
- <xi:include href="/vendor/etc/r_submix_audio_policy_configuration.xml"/>
+ <xi:include href="r_submix_audio_policy_configuration.xml"/>
</modules>
<!-- End of Modules section -->
<!-- Volume section -->
- <xi:include href="/vendor/etc/audio_policy_volumes.xml"/>
- <xi:include href="/vendor/etc/default_volume_tables.xml"/>
+ <xi:include href="audio_policy_volumes.xml"/>
+ <xi:include href="default_volume_tables.xml"/>
<!-- End of Volume section -->
diff --git a/configs/msm8937/mixer_paths_sdm429w_dvt2.xml b/configs/msm8937/mixer_paths_sdm429w_dvt2.xml
index 53a7b47..7f7cf89 100644
--- a/configs/msm8937/mixer_paths_sdm429w_dvt2.xml
+++ b/configs/msm8937/mixer_paths_sdm429w_dvt2.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
- Copyright (c) 2019-2020, The Linux Foundation. All rights reserved.
+ Copyright (c) 2019-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
@@ -866,6 +866,7 @@
<path name="speaker">
<ctl name="mono Profile" value="Music" />
+ <ctl name="MI2S_RX Channels" value="One" />
<ctl name="mono Music Playback Volume" value="3" />
</path>
diff --git a/configs/msm8937/msm8937.mk b/configs/msm8937/msm8937.mk
index 1c304c6..05f7659 100644
--- a/configs/msm8937/msm8937.mk
+++ b/configs/msm8937/msm8937.mk
@@ -146,27 +146,24 @@
#XML Audio configuration files
ifeq ($(USE_XML_AUDIO_POLICY_CONF), 1)
-ifeq ($(AUDIO_FEATURE_ENABLED_SPLIT_A2DP), true)
-ifeq ($(TARGET_SUPPORTS_WEARABLES), true)
- PRODUCT_COPY_FILES += \
- $(TOPDIR)vendor/qcom/opensource/audio-hal/primary-hal/configs/msm8937/audio_policy_configuration_sdm429w.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_policy_configuration.xml
-endif
-endif
ifneq ($(TARGET_USES_AOSP_FOR_AUDIO), true)
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
endif
PRODUCT_COPY_FILES += \
- $(TOPDIR)vendor/qcom/opensource/audio-hal/primary-hal/configs/msm8937/audio_policy_configuration_common.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration.xml \
$(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 \
$(TOPDIR)frameworks/av/services/audiopolicy/config/audio_policy_volumes.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml \
$(TOPDIR)frameworks/av/services/audiopolicy/config/default_volume_tables.xml:$(TARGET_COPY_OUT_VENDOR)/etc/default_volume_tables.xml \
$(TOPDIR)frameworks/av/services/audiopolicy/config/r_submix_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/r_submix_audio_policy_configuration.xml \
$(TOPDIR)frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/usb_audio_policy_configuration.xml
endif
+ifeq ($(TARGET_SUPPORTS_WEARABLES), true)
+ PRODUCT_COPY_FILES += \
+ $(TOPDIR)vendor/qcom/opensource/audio-hal/primary-hal/configs/msm8937/audio_policy_configuration_sdm429w.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_common.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration.xml
+endif
# Reduce client buffer size for fast audio output tracks
PRODUCT_PROPERTY_OVERRIDES += \
@@ -333,7 +330,6 @@
vendor.audio.feature.ras.enable=false \
vendor.audio.feature.record_play_concurency.enable=false \
vendor.audio.feature.src_trkn.enable=true \
-vendor.audio.feature.spkr_prot.enable=true \
vendor.audio.feature.ssrec.enable=true \
vendor.audio.feature.usb_offload.enable=false \
vendor.audio.feature.usb_offload_burst_mode.enable=false \
@@ -343,7 +339,13 @@
vendor.audio.feature.wsa.enable=true \
vendor.audio.feature.audiozoom.enable=false \
vendor.audio.feature.snd_mon.enable=true
-
+ifeq ($(TARGET_SUPPORTS_WEARABLES),true)
+PRODUCT_PROPERTY_OVERRIDES += \
+vendor.audio.feature.spkr_prot.enable=false
+else
+PRODUCT_PROPERTY_OVERRIDES += \
+vendor.audio.feature.spkr_prot.enable=true
+endif
# for HIDL related packages
PRODUCT_PACKAGES += \
android.hardware.audio@2.0-service \
diff --git a/configs/msmnile_au/audio_platform_info.xml b/configs/msmnile_au/audio_platform_info.xml
index 76fcc10..90cc644 100644
--- a/configs/msmnile_au/audio_platform_info.xml
+++ b/configs/msmnile_au/audio_platform_info.xml
@@ -202,6 +202,12 @@
<device name="SND_DEVICE_IN_ICC" interface="TERT_TDM_TX_0"/>
<!-- multi-mic surround ECNS mixer path definition -->
<device name="SND_DEVICE_IN_VOICE_SPEAKER_MIC_HFP_MMSECNS" backend="bt-sco-mmsecns" interface="TERT_TDM_TX_0"/>
+ <!-- bus device mixer path definitions -->
+ <device name="SND_DEVICE_OUT_BUS_SYS" backend="sys-bus-out" interface="TERT_TDM_RX_0"/>
+ <device name="SND_DEVICE_OUT_BUS_NAV" backend="nav-bus-out" interface="TERT_TDM_RX_1"/>
+ <device name="SND_DEVICE_OUT_BUS_PHN" backend="phone-bus-out" interface="TERT_TDM_RX_2"/>
+ <device name="SND_DEVICE_OUT_BUS_PAX" backend="pax-bus-out" interface="QUAT_TDM_RX_0"/>
+ <device name="SND_DEVICE_OUT_BUS_RSE" backend="rse-bus-out" interface="QUIN_TDM_RX_0"/>
</backend_names>
<!-- below values are for ref purpose to OEM, doesn't contain actual hardware info on MTP -->
<microphone_characteristics>
diff --git a/configs/msmnile_au/audio_policy_configuration.xml b/configs/msmnile_au/audio_policy_configuration.xml
index 9df9d5e..4193abd 100644
--- a/configs/msmnile_au/audio_policy_configuration.xml
+++ b/configs/msmnile_au/audio_policy_configuration.xml
@@ -393,15 +393,15 @@
<route type="mix" sink="Media Bus"
sources="media,direct_pcm,compressed_offload,voip_rx,mmap_no_irq_out"/>
<route type="mix" sink="Sys Notification Bus"
- sources="sys_notification"/>
+ sources="sys_notification,mmap_no_irq_out"/>
<route type="mix" sink="Nav Guidance Bus"
- sources="nav_guidance"/>
+ sources="nav_guidance,mmap_no_irq_out"/>
<route type="mix" sink="Phone Bus"
- sources="phone"/>
+ sources="phone,mmap_no_irq_out"/>
<route type="mix" sink="Front Passenger Bus"
- sources="front_passenger"/>
+ sources="front_passenger,mmap_no_irq_out"/>
<route type="mix" sink="Rear Seat Bus"
- sources="rear_seat"/>
+ sources="rear_seat,mmap_no_irq_out"/>
<route type="mix" sink="Earpiece"
sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx,mmap_no_irq_out"/>
<route type="mix" sink="Speaker"
diff --git a/configs/msmnile_au/mixer_paths_adp.xml b/configs/msmnile_au/mixer_paths_adp.xml
index 5f7cca7..3c21e2e 100644
--- a/configs/msmnile_au/mixer_paths_adp.xml
+++ b/configs/msmnile_au/mixer_paths_adp.xml
@@ -1308,27 +1308,27 @@
<ctl name="TERT_TDM_RX_0 Audio Mixer MultiMedia1" value="1" />
</path>
- <path name="sys-notification-playback">
+ <path name="sys-notification-playback sys-bus-out">
<ctl name="TERT_TDM_RX_0 Channels" value="Six" />
<ctl name="TERT_TDM_RX_0 Audio Mixer MultiMedia5" value="1" />
</path>
- <path name="nav-guidance-playback">
+ <path name="nav-guidance-playback nav-bus-out">
<ctl name="TERT_TDM_RX_1 Channels" value="One" />
<ctl name="TERT_TDM_RX_1 Audio Mixer MultiMedia2" value="1" />
</path>
- <path name="phone-playback">
+ <path name="phone-playback phone-bus-out">
<ctl name="TERT_TDM_RX_2 Channels" value="One" />
<ctl name="TERT_TDM_RX_2 Audio Mixer MultiMedia10" value="1" />
</path>
- <path name="front-passenger-playback">
+ <path name="front-passenger-playback pax-bus-out">
<ctl name="QUAT_TDM_RX_0 Channels" value="Eight" />
<ctl name="QUAT_TDM_RX_0 Audio Mixer MultiMedia23" value="1" />
</path>
- <path name="rear-seat-playback">
+ <path name="rear-seat-playback rse-bus-out">
<ctl name="QUIN_TDM_RX_0 Channels" value="Sixteen" />
<ctl name="QUIN_TDM_RX_0 Audio Mixer MultiMedia22" value="1" />
</path>
@@ -2724,6 +2724,26 @@
<ctl name="TERT_TDM_RX_0 Audio Mixer MultiMedia16" value="1" />
</path>
+ <path name="mmap-playback sys-bus-out">
+ <ctl name="TERT_TDM_RX_0 Audio Mixer MultiMedia16" value="1" />
+ </path>
+
+ <path name="mmap-playback nav-bus-out">
+ <ctl name="TERT_TDM_RX_1 Audio Mixer MultiMedia16" value="1" />
+ </path>
+
+ <path name="mmap-playback phone-bus-out">
+ <ctl name="TERT_TDM_RX_2 Audio Mixer MultiMedia16" value="1" />
+ </path>
+
+ <path name="mmap-playback pax-bus-out">
+ <ctl name="QUAT_TDM_RX_0 Audio Mixer MultiMedia16" value="1" />
+ </path>
+
+ <path name="mmap-playback rse-bus-out">
+ <ctl name="QUIN_TDM_RX_0 Audio Mixer MultiMedia16" value="1" />
+ </path>
+
<path name="mmap-playback headphones">
<ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia16" value="1" />
</path>
diff --git a/configs/msmsteppe_au/audio_platform_info.xml b/configs/msmsteppe_au/audio_platform_info.xml
index 9e11e89..8cc7b04 100644
--- a/configs/msmsteppe_au/audio_platform_info.xml
+++ b/configs/msmsteppe_au/audio_platform_info.xml
@@ -202,6 +202,12 @@
<device name="SND_DEVICE_IN_ICC" interface="TERT_TDM_TX_0"/>
<!-- multi-mic surround ECNS mixer path definition -->
<device name="SND_DEVICE_IN_VOICE_SPEAKER_MIC_HFP_MMSECNS" backend="bt-sco-mmsecns" interface="TERT_TDM_TX_0"/>
+ <!-- bus device mixer path definitions -->
+ <device name="SND_DEVICE_OUT_BUS_SYS" backend="sys-bus-out" interface="TERT_TDM_RX_0"/>
+ <device name="SND_DEVICE_OUT_BUS_NAV" backend="nav-bus-out" interface="TERT_TDM_RX_1"/>
+ <device name="SND_DEVICE_OUT_BUS_PHN" backend="phone-bus-out" interface="TERT_TDM_RX_2"/>
+ <device name="SND_DEVICE_OUT_BUS_PAX" backend="pax-bus-out" interface="QUAT_TDM_RX_0"/>
+ <device name="SND_DEVICE_OUT_BUS_RSE" backend="rse-bus-out" interface="QUIN_TDM_RX_0"/>
</backend_names>
<!-- below values are for ref purpose to OEM, doesn't contain actual hardware info on MTP -->
<microphone_characteristics>
diff --git a/configs/msmsteppe_au/audio_policy_configuration.xml b/configs/msmsteppe_au/audio_policy_configuration.xml
index 7229118..24d1447 100644
--- a/configs/msmsteppe_au/audio_policy_configuration.xml
+++ b/configs/msmsteppe_au/audio_policy_configuration.xml
@@ -393,15 +393,15 @@
<route type="mix" sink="Media Bus"
sources="media,direct_pcm,compressed_offload,voip_rx,mmap_no_irq_out"/>
<route type="mix" sink="Sys Notification Bus"
- sources="sys_notification"/>
+ sources="sys_notification,mmap_no_irq_out"/>
<route type="mix" sink="Nav Guidance Bus"
- sources="nav_guidance"/>
+ sources="nav_guidance,mmap_no_irq_out"/>
<route type="mix" sink="Phone Bus"
- sources="phone"/>
+ sources="phone,mmap_no_irq_out"/>
<route type="mix" sink="Front Passenger Bus"
- sources="front_passenger"/>
+ sources="front_passenger,mmap_no_irq_out"/>
<route type="mix" sink="Rear Seat Bus"
- sources="rear_seat"/>
+ sources="rear_seat,mmap_no_irq_out"/>
<route type="mix" sink="Earpiece"
sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx,mmap_no_irq_out"/>
<route type="mix" sink="Speaker"
diff --git a/configs/msmsteppe_au/mixer_paths_adp.xml b/configs/msmsteppe_au/mixer_paths_adp.xml
index 80334bd..2dfca35 100644
--- a/configs/msmsteppe_au/mixer_paths_adp.xml
+++ b/configs/msmsteppe_au/mixer_paths_adp.xml
@@ -1150,27 +1150,27 @@
<ctl name="TERT_TDM_RX_0 Audio Mixer MultiMedia1" value="1" />
</path>
- <path name="sys-notification-playback">
+ <path name="sys-notification-playback sys-bus-out">
<ctl name="TERT_TDM_RX_0 Channels" value="Six" />
<ctl name="TERT_TDM_RX_0 Audio Mixer MultiMedia5" value="1" />
</path>
- <path name="nav-guidance-playback">
+ <path name="nav-guidance-playback nav-bus-out">
<ctl name="TERT_TDM_RX_1 Channels" value="One" />
<ctl name="TERT_TDM_RX_1 Audio Mixer MultiMedia2" value="1" />
</path>
- <path name="phone-playback">
+ <path name="phone-playback phone-bus-out">
<ctl name="TERT_TDM_RX_2 Channels" value="One" />
<ctl name="TERT_TDM_RX_2 Audio Mixer MultiMedia10" value="1" />
</path>
- <path name="front-passenger-playback">
+ <path name="front-passenger-playback pax-bus-out">
<ctl name="QUAT_TDM_RX_0 Channels" value="Eight" />
<ctl name="QUAT_TDM_RX_0 Audio Mixer MultiMedia23" value="1" />
</path>
- <path name="rear-seat-playback">
+ <path name="rear-seat-playback rse-bus-out">
<ctl name="QUAT_TDM_RX_1 Channels" value="Eight" />
<ctl name="QUAT_TDM_RX_1 Audio Mixer MultiMedia22" value="1" />
</path>
@@ -2393,6 +2393,26 @@
<ctl name="TERT_TDM_RX_0 Audio Mixer MultiMedia16" value="1" />
</path>
+ <path name="mmap-playback sys-bus-out">
+ <ctl name="TERT_TDM_RX_0 Audio Mixer MultiMedia16" value="1" />
+ </path>
+
+ <path name="mmap-playback nav-bus-out">
+ <ctl name="TERT_TDM_RX_1 Audio Mixer MultiMedia16" value="1" />
+ </path>
+
+ <path name="mmap-playback phone-bus-out">
+ <ctl name="TERT_TDM_RX_2 Audio Mixer MultiMedia16" value="1" />
+ </path>
+
+ <path name="mmap-playback pax-bus-out">
+ <ctl name="QUAT_TDM_RX_0 Audio Mixer MultiMedia16" value="1" />
+ </path>
+
+ <path name="mmap-playback rse-bus-out">
+ <ctl name="QUIN_TDM_RX_0 Audio Mixer MultiMedia16" value="1" />
+ </path>
+
<path name="mmap-playback headphones">
<ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia16" value="1" />
</path>
diff --git a/hal/audio_extn/auto_hal.c b/hal/audio_extn/auto_hal.c
index ca3cd6b..9276c9c 100755
--- a/hal/audio_extn/auto_hal.c
+++ b/hal/audio_extn/auto_hal.c
@@ -841,6 +841,8 @@
snd_device = SND_DEVICE_OUT_VOICE_SPEAKER;
break;
case USECASE_AUDIO_PLAYBACK_MEDIA:
+ snd_device = SND_DEVICE_OUT_BUS_MEDIA;
+ break;
case USECASE_AUDIO_PLAYBACK_OFFLOAD:
case USECASE_AUDIO_PLAYBACK_OFFLOAD2:
case USECASE_AUDIO_PLAYBACK_OFFLOAD3:
@@ -854,6 +856,33 @@
case USECASE_AUDIO_PLAYBACK_MMAP:
case USECASE_AUDIO_PLAYBACK_VOIP:
snd_device = SND_DEVICE_OUT_BUS_MEDIA;
+ /* Override the snd_device based on the bus address if available */
+ if (usecase->stream.out->car_audio_stream) {
+ switch (usecase->stream.out->car_audio_stream) {
+ case CAR_AUDIO_STREAM_MEDIA:
+ snd_device = SND_DEVICE_OUT_BUS_MEDIA;
+ break;
+ case CAR_AUDIO_STREAM_SYS_NOTIFICATION:
+ snd_device = SND_DEVICE_OUT_BUS_SYS;
+ break;
+ case CAR_AUDIO_STREAM_NAV_GUIDANCE:
+ snd_device = SND_DEVICE_OUT_BUS_NAV;
+ break;
+ case CAR_AUDIO_STREAM_PHONE:
+ snd_device = SND_DEVICE_OUT_BUS_PHN;
+ break;
+ case CAR_AUDIO_STREAM_FRONT_PASSENGER:
+ snd_device = SND_DEVICE_OUT_BUS_PAX;
+ break;
+ case CAR_AUDIO_STREAM_REAR_SEAT:
+ snd_device = SND_DEVICE_OUT_BUS_RSE;
+ break;
+ default:
+ ALOGE("%s: Car audio stream %x not supported", __func__,
+ usecase->stream.out->car_audio_stream);
+ return -EINVAL;
+ }
+ }
break;
case USECASE_AUDIO_PLAYBACK_SYS_NOTIFICATION:
snd_device = SND_DEVICE_OUT_BUS_SYS;
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index f0e87a8..12c196d 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -3785,20 +3785,17 @@
ALOGE("%s: audio_extn_ip_hdlr_intf_close failed %d",__func__, ret);
}
- /* 1) media + voip output routing to handset must route media back to
- speaker when voip stops.
- 2) trigger voip input to reroute when voip output changes to
- hearing aid. */
+ /* trigger voip input to reroute when voip output changes to hearing aid */
if (has_voip_usecase ||
compare_device_type(&out->device_list, AUDIO_DEVICE_OUT_SPEAKER_SAFE)) {
struct listnode *node;
struct audio_usecase *usecase;
list_for_each(node, &adev->usecase_list) {
usecase = node_to_item(node, struct audio_usecase, list);
- if ((usecase->type == PCM_CAPTURE &&
+ if (usecase->type == PCM_PLAYBACK || usecase == uc_info ||
+ (usecase->type == PCM_CAPTURE &&
usecase->id != USECASE_AUDIO_RECORD_VOIP &&
- usecase->id != USECASE_AUDIO_RECORD_VOIP_LOW_LATENCY)
- || usecase == uc_info)
+ usecase->id != USECASE_AUDIO_RECORD_VOIP_LOW_LATENCY))
continue;
ALOGD("%s: select_devices at usecase(%d: %s) after removing the usecase(%d: %s)",
@@ -9621,6 +9618,7 @@
in->config.format = pcm_format_from_audio_format(config->format);
in->af_period_multiplier = af_period_multiplier;
} else if (in->source == AUDIO_SOURCE_VOICE_COMMUNICATION &&
+ (!voice_extn_is_compress_voip_supported()) &&
in->flags & AUDIO_INPUT_FLAG_VOIP_TX &&
(config->sample_rate == 8000 ||
config->sample_rate == 16000 ||
@@ -10444,9 +10442,11 @@
int check_a2dp_restore_l(struct audio_device *adev, struct stream_out *out, bool restore)
{
struct audio_usecase *uc_info;
+ struct audio_usecase *usecase;
float left_p;
float right_p;
struct listnode devices;
+ struct listnode *node;
uc_info = get_usecase_from_list(adev, out->usecase);
if (uc_info == NULL) {
@@ -10482,9 +10482,17 @@
pthread_mutex_lock(&out->latch_lock);
// mute stream and switch to speaker if suspended
if (!out->a2dp_muted && !out->standby) {
- ALOGD("%s: selecting speaker and muting stream", __func__);
assign_devices(&devices, &out->device_list);
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)) {
+ assign_devices(&out->device_list, &usecase->stream.out->device_list);
+ break;
+ }
+ }
left_p = out->volume_l;
right_p = out->volume_r;
out->a2dp_muted = true;
@@ -10503,6 +10511,8 @@
usleep(latency * 1000);
}
select_devices(adev, out->usecase);
+ ALOGD("%s: switched to device:%s and mute stream",
+ __func__, platform_get_snd_device_name(uc_info->out_snd_device));
if (is_offload_usecase(out->usecase)) {
if (out->offload_state == OFFLOAD_STATE_PLAYING)
compress_resume(out->compr);