Merge tag 'LA.UM.9.14.r1-23600-LAHAINA.QSSI14.0' of https://git.codelinaro.org/clo/la/platform/hardware/qcom/audio into lineage-21.0-caf-sm8350
"LA.UM.9.14.r1-23600-LAHAINA.QSSI14.0"
* tag 'LA.UM.9.14.r1-23600-LAHAINA.QSSI14.0' of https://git.codelinaro.org/clo/la/platform/hardware/qcom/audio:
audio-HAL: Fix for KW static analysis issues
audiohal: fix right audio platform xml file for rb3 gen2
Removed not used audio properties from audio-hal.
audio-hal: Fix kw issue
hal: add support for hfp on qcs6490
configs: rb3gen2: add support for HDMI out on rb3gen2 platform
hal: add support of HDMI external display for rb3gen2
hal: Extract source track meta data for 2mic
configs: rb3gen2: add support for 2/3/4 mic on rb3gen2 platform
hal: update mixer path files for Rb3Gen2 IOT with FV13 tuning
configs: RB3Gen2: add support for dual mic on RB3Gen2 platform.
hal: add support for rb3gen2 specific mixer xml
audio-hal: modify out_set_mmap_volume sequence
configs: msmsteppe_au: Update audio hal to 7.0
msmnile-tb bringup change.
config: 64bit suppor for msmsteppe auto
Change-Id: Ib536a3c77ee22d4d3f0a922f7a45c3b4b3734311
diff --git a/configs/audio_vendor_product.mk b/configs/audio_vendor_product.mk
index df665e4..e3be8a4 100644
--- a/configs/audio_vendor_product.mk
+++ b/configs/audio_vendor_product.mk
@@ -241,6 +241,8 @@
-include $(TOPDIR)vendor/qcom/opensource/audio-hal/primary-hal/configs/msmnile_au/msmnile_au.mk
else ifeq ($(TARGET_BOARD_PLATFORM)$(TARGET_BOARD_SUFFIX)$(TARGET_BOARD_DERIVATIVE_SUFFIX),msmnile_au_km4)
-include $(TOPDIR)vendor/qcom/opensource/audio-hal/primary-hal/configs/msmnile_au/msmnile_au.mk
+else ifeq ($(TARGET_BOARD_PLATFORM)$(TARGET_BOARD_SUFFIX)$(TARGET_BOARD_DERIVATIVE_SUFFIX),msmnile_tb)
+-include $(TOPDIR)vendor/qcom/opensource/audio-hal/primary-hal/configs/msmnile_au/msmnile_au.mk
else ifeq ($(TARGET_BOARD_PLATFORM)$(TARGET_BOARD_SUFFIX)$(TARGET_BOARD_DERIVATIVE_SUFFIX),msmnile_au_ar)
-include $(TOPDIR)vendor/qcom/opensource/audio-hal/primary-hal/configs/msmnile_au/msmnile_au.mk
else ifeq ($(TARGET_BOARD_PLATFORM)$(TARGET_BOARD_SUFFIX),sm6150_au)
diff --git a/configs/bengal/bengal.mk b/configs/bengal/bengal.mk
index ff51da6..c96aee7 100644
--- a/configs/bengal/bengal.mk
+++ b/configs/bengal/bengal.mk
@@ -235,10 +235,7 @@
##fluencetype can be "fluence" or "fluencepro" or "none"
PRODUCT_VENDOR_PROPERTIES += \
-ro.qc.sdk.audio.fluencetype=none\
-persist.audio.fluence.voicecall=true\
-persist.audio.fluence.voicerec=false\
-persist.audio.fluence.speaker=true
+ro.qc.sdk.audio.fluencetype=none
#disable tunnel encoding
PRODUCT_VENDOR_PROPERTIES += \
@@ -347,10 +344,6 @@
#enable headset calibration
PRODUCT_VENDOR_PROPERTIES += \
vendor.audio.volume.headset.gain.depcal=true
-
-#enable dualmic fluence for voice communication
-PRODUCT_VENDOR_PROPERTIES += \
-persist.vendor.audio.fluence.voicecomm=true
endif
USE_XML_AUDIO_POLICY_CONF := 1
diff --git a/configs/lahaina/lahaina.mk b/configs/lahaina/lahaina.mk
index 5b59d5a..8a64f14 100644
--- a/configs/lahaina/lahaina.mk
+++ b/configs/lahaina/lahaina.mk
@@ -21,9 +21,9 @@
OVERLAY_PATH := $(AUDIO_HAL_DIR)/configs/lahaina/yupik_overlay
-$(shell python $(SCRIPT) --generate combine --base $(BASE_PATH)/mixer_paths_base.xml --overlay $(OVERLAY_PATH)/mixer_paths_yupikidp_overlay.xml $(OVERLAY_PATH)/mixer_paths_yupikqrd_overlay.xml --out_dir $(TARGET_PATH) --out mixer_paths_yupikidp.xml mixer_paths_yupikqrd.xml )
+$(shell python $(SCRIPT) --generate combine --base $(BASE_PATH)/mixer_paths_base.xml --overlay $(OVERLAY_PATH)/mixer_paths_yupikidp_overlay.xml $(OVERLAY_PATH)/mixer_paths_yupikqrd_overlay.xml $(OVERLAY_PATH)/mixer_paths_yupikidprb3_overlay.xml --out_dir $(TARGET_PATH) --out mixer_paths_yupikidp.xml mixer_paths_yupikqrd.xml mixer_paths_yupikidprb3.xml)
-$(shell python $(SCRIPT) --generate combine --base $(BASE_PATH)/sound_trigger_mixer_paths_base.xml --overlay $(OVERLAY_PATH)/sound_trigger_mixer_paths_yupikidp_overlay.xml $(OVERLAY_PATH)/sound_trigger_mixer_paths_yupikqrd_overlay.xml --out_dir $(TARGET_PATH) --out sound_trigger_mixer_paths_yupikidp.xml sound_trigger_mixer_paths_yupikqrd.xml )
+$(shell python $(SCRIPT) --generate combine --base $(BASE_PATH)/sound_trigger_mixer_paths_base.xml --overlay $(OVERLAY_PATH)/sound_trigger_mixer_paths_yupikidp_overlay.xml $(OVERLAY_PATH)/sound_trigger_mixer_paths_yupikqrd_overlay.xml $(OVERLAY_PATH)/sound_trigger_mixer_paths_yupikidprb3_overlay.xml --out_dir $(TARGET_PATH) --out sound_trigger_mixer_paths_yupikidp.xml sound_trigger_mixer_paths_yupikqrd.xml sound_trigger_mixer_paths_yupikidprb3.xml)
#
ifneq ($(AUDIO_USE_STUB_HAL), true)
BOARD_USES_ALSA_AUDIO := true
@@ -261,8 +261,10 @@
$(AUDIO_HAL_DIR)/configs/lahaina/audio_platform_info_yupikqrd.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/audio_platform_info_yupikqrd.xml \
$(AUDIO_HAL_DIR)/configs/lahaina/audio_platform_info_yupikidp.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/audio_platform_info_yupikidp.xml \
$(AUDIO_HAL_DIR)/configs/lahaina/sound_trigger_mixer_paths_yupikidp.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/sound_trigger_mixer_paths_yupikidp.xml \
+ $(AUDIO_HAL_DIR)/configs/lahaina/sound_trigger_mixer_paths_yupikidprb3.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/sound_trigger_mixer_paths_yupikidprb3.xml \
$(AUDIO_HAL_DIR)/configs/lahaina/sound_trigger_mixer_paths_yupikqrd.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/sound_trigger_mixer_paths_yupikqrd.xml \
$(AUDIO_HAL_DIR)/configs/lahaina/mixer_paths_yupikidp.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/mixer_paths_yupikidp.xml \
+ $(AUDIO_HAL_DIR)/configs/lahaina/mixer_paths_yupikidprb3.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/mixer_paths_yupikidprb3.xml \
$(AUDIO_HAL_DIR)/configs/lahaina/mixer_paths_yupikqrd.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/mixer_paths_yupikqrd.xml \
$(AUDIO_HAL_DIR)/configs/lahaina/audio_tuning_mixer.txt:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/audio_tuning_mixer.txt \
frameworks/av/services/audiopolicy/config/default_volume_tables.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/default_volume_tables.xml \
diff --git a/configs/lahaina/yupik_overlay/mixer_paths_yupikidp_overlay.xml b/configs/lahaina/yupik_overlay/mixer_paths_yupikidp_overlay.xml
index cf4a50f..02d8a23 100644
--- a/configs/lahaina/yupik_overlay/mixer_paths_yupikidp_overlay.xml
+++ b/configs/lahaina/yupik_overlay/mixer_paths_yupikidp_overlay.xml
@@ -62,7 +62,7 @@
<path name="dmic4"/>
</path>
<path name="handset-mic">
- <path name="dmic3"/>
+ <path name="dmic1"/>
</path>
<path name="handset-dmic-endfire">
<ctl name="TX_CDC_DMA_TX_3 Channels" value="Two"/>
diff --git a/configs/lahaina/yupik_overlay/mixer_paths_yupikidprb3_overlay.xml b/configs/lahaina/yupik_overlay/mixer_paths_yupikidprb3_overlay.xml
new file mode 100644
index 0000000..c29ee25
--- /dev/null
+++ b/configs/lahaina/yupik_overlay/mixer_paths_yupikidprb3_overlay.xml
@@ -0,0 +1,237 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--- Copyright (c) 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 -->
+<!--- 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. -->
+<!-- -->
+<!-- Changes from Qualcomm Innovation Center are provided under the following license:-->
+<!-- Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.-->
+<!-- SPDX-License-Identifier: BSD-3-Clause-Clear -->
+<mixer>
+ <ctl name="TX DEC0 MUX" value="MSM_DMIC"/>
+ <ctl name="TX DEC1 MUX" value="MSM_DMIC"/>
+ <ctl name="TX DEC2 MUX" value="MSM_DMIC"/>
+ <ctl name="TX DEC3 MUX" value="MSM_DMIC"/>
+ <ctl name="TX DEC4 MUX" value="MSM_DMIC"/>
+ <ctl name="TX DEC5 MUX" value="MSM_DMIC"/>
+ <ctl name="TX DEC6 MUX" value="MSM_DMIC"/>
+ <ctl name="TX DEC7 MUX" value="MSM_DMIC"/>
+ <ctl name="MultiMedia1 Mixer SEC_MI2S_TX" value="0"/>
+ <ctl name="MultiMedia2 Mixer SEC_MI2S_TX" value="0"/>
+ <ctl name="MultiMedia8 Mixer SEC_MI2S_TX" value="0"/>
+ <ctl name="MultiMedia16 Mixer SEC_MI2S_TX" value="0"/>
+ <ctl name="SEC MI2S LOOPBACK Volume" value="0"/>
+ <ctl name="WSA_CDC_DMA_RX_0 Port Mixer SEC_MI2S_TX" value="0"/>
+ <ctl name="MultiMedia1 Mixer PRI_MI2S_TX" value="0" />
+ <ctl name="MultiMedia17 Mixer PRI_MI2S_TX" value="0" />
+ <ctl name="SEC_MI2S_RX Audio Mixer MultiMedia1" value="0" />
+ <ctl name="SEC_MI2S_RX Audio Mixer MultiMedia2" value="0" />
+ <ctl name="SEC_MI2S_RX Audio Mixer MultiMedia4" value="0" />
+ <ctl name="SEC_MI2S_RX Audio Mixer MultiMedia5" value="0" />
+ <ctl name="SEC_MI2S_RX Audio Mixer MultiMedia7" value="0" />
+ <ctl name="SEC_MI2S_RX Audio Mixer MultiMedia8" value="0" />
+ <ctl name="SEC_MI2S_RX Audio Mixer MultiMedia9" value="0" />
+ <ctl name="SEC_MI2S_RX Audio Mixer MultiMedia10" value="0" />
+ <ctl name="SEC_MI2S_RX Audio Mixer MultiMedia11" value="0" />
+ <ctl name="SEC_MI2S_RX Audio Mixer MultiMedia12" value="0" />
+ <ctl name="SEC_MI2S_RX Audio Mixer MultiMedia13" value="0" />
+ <ctl name="SEC_MI2S_RX Audio Mixer MultiMedia14" value="0" />
+ <ctl name="SEC_MI2S_RX Audio Mixer MultiMedia15" value="0" />
+ <ctl name="SEC_MI2S_RX Audio Mixer MultiMedia16" value="0" />
+
+ <path name="hdmi">
+ <ctl name="SEC_MI2S_RX Format" value="S32_LE" />
+ </path>
+ <path name="low-latency-playback hdmi">
+ <ctl name="SEC_MI2S_RX Audio Mixer MultiMedia5" value="1" />
+ </path>
+ <path name="compress-offload-playback hdmi">
+ <ctl name="SEC_MI2S_RX Audio Mixer MultiMedia4" value="1" />
+ </path>
+ <path name="compress-offload-playback2 hdmi">
+ <ctl name="SEC_MI2S_RX Audio Mixer MultiMedia7" value="1" />
+ </path>
+ <path name="compress-offload-playback3 hdmi">
+ <ctl name="SEC_MI2S_RX Audio Mixer MultiMedia10" value="1" />
+ </path>
+ <path name="compress-offload-playback4 hdmi">
+ <ctl name="SEC_MI2S_RX Audio Mixer MultiMedia11" value="1" />
+ </path>
+ <path name="compress-offload-playback5 hdmi">
+ <ctl name="SEC_MI2S_RX Audio Mixer MultiMedia12" value="1" />
+ </path>
+ <path name="compress-offload-playback6 hdmi">
+ <ctl name="SEC_MI2S_RX Audio Mixer MultiMedia13" value="1" />
+ </path>
+ <path name="compress-offload-playback7 hdmi">
+ <ctl name="SEC_MI2S_RX Audio Mixer MultiMedia14" value="1" />
+ </path>
+ <path name="compress-offload-playback8 hdmi">
+ <ctl name="SEC_MI2S_RX Audio Mixer MultiMedia15" value="1" />
+ </path>
+ <path name="compress-offload-playback9 hdmi">
+ <ctl name="SEC_MI2S_RX Audio Mixer MultiMedia16" value="1" />
+ </path>
+ <path name="mmap-playback hdmi">
+ <ctl name="SEC_MI2S_RX Audio Mixer MultiMedia16" value="1" />
+ </path>
+ <path name="audio-playback-voip hdmi">
+ <ctl name="SEC_MI2S_RX Audio Mixer MultiMedia10" value="1" />
+ </path>
+ <path name="audio-ull-playback hdmi">
+ <ctl name="SEC_MI2S_RX Audio Mixer MultiMedia8" value="1" />
+ </path>
+ <path name="deep-buffer-playback hdmi">
+ <ctl name="SEC_MI2S_RX Audio Mixer MultiMedia1" value="1" />
+ </path>
+ <path name="silence-playback hdmi">
+ <ctl name="SEC_MI2S_RX Audio Mixer MultiMedia9" value="1" />
+ </path>
+ <path name="hifi-playback hdmi">
+ <ctl name="SEC_MI2S_RX Audio Mixer MultiMedia2" value="1" />
+ </path>
+ <path name="multi-channel-playback hdmi">
+ <ctl name="SEC_MI2S_RX Audio Mixer MultiMedia2" value="1" />
+ </path>
+ <path name="audio-record hdmi-in">
+ <ctl name="MultiMedia1 Mixer PRI_MI2S_TX" value="1" />
+ </path>
+ <path name="hdmi-in">
+ </path>
+ <path name="audio-record-compress2 hdmi-in">
+ <ctl name="MultiMedia17 Mixer PRI_MI2S_TX" value="1" />
+ </path>
+ <path name="speaker-mic">
+ <path name="dmic4"/>
+ </path>
+ <path name="speaker-mic-liquid">
+ <path name="dmic4"/>
+ </path>
+ <path name="handset-mic">
+ <path name="dmic6"/>
+ </path>
+ <path name="handset-dmic-endfire">
+ <ctl name="TX_CDC_DMA_TX_3 Channels" value="Two"/>
+ <ctl name="TX_AIF1_CAP Mixer DEC1" value="1"/>
+ <ctl name="TX DMIC MUX1" value="DMIC2"/>
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1"/>
+ <ctl name="TX DMIC MUX2" value="DMIC3"/>
+ </path>
+ <path name="speaker-dmic-endfire">
+ <ctl name="TX_CDC_DMA_TX_3 Channels" value="Two"/>
+ <ctl name="TX_AIF1_CAP Mixer DEC1" value="1"/>
+ <ctl name="TX DMIC MUX1" value="DMIC3"/>
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1"/>
+ <ctl name="TX DMIC MUX2" value="DMIC1"/>
+ </path>
+ <path name="speaker-dmic-broadside">
+ <ctl name="TX_CDC_DMA_TX_3 Channels" value="Two"/>
+ <ctl name="TX_AIF1_CAP Mixer DEC1" value="1"/>
+ <ctl name="TX DMIC MUX1" value="DMIC3"/>
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1"/>
+ <ctl name="TX DMIC MUX2" value="DMIC0"/>
+ </path>
+ <path name="three-mic">
+ <ctl name="TX_CDC_DMA_TX_3 Channels" value="Three"/>
+ <ctl name="TX_AIF1_CAP Mixer DEC1" value="1"/>
+ <ctl name="TX DMIC MUX1" value="DMIC3"/>
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1"/>
+ <ctl name="TX DMIC MUX2" value="DMIC0"/>
+ <ctl name="TX_AIF1_CAP Mixer DEC3" value="1"/>
+ <ctl name="TX DMIC MUX3" value="DMIC2"/>
+ </path>
+ <path name="speaker-tmic">
+ <path name="three-mic" />
+ </path>
+ <path name="speaker-qmic">
+ <ctl name="TX_CDC_DMA_TX_3 Channels" value="Four"/>
+ <ctl name="TX_AIF1_CAP Mixer DEC1" value="1"/>
+ <ctl name="TX DMIC MUX1" value="DMIC3"/>
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1"/>
+ <ctl name="TX DMIC MUX2" value="DMIC0"/>
+ <ctl name="TX_AIF1_CAP Mixer DEC3" value="1"/>
+ <ctl name="TX DMIC MUX3" value="DMIC2"/>
+ <ctl name="TX_AIF1_CAP Mixer DEC4" value="1"/>
+ <ctl name="TX DMIC MUX4" value="DMIC1"/>
+ </path>
+ <path name="dmic-nn">
+ <ctl name="TX_CDC_DMA_TX_3 Channels" value="Two" />
+ <ctl name="TX_AIF1_CAP Mixer DEC1" value="1" />
+ <ctl name="TX DMIC MUX1" value="DMIC4" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC5" />
+ <ctl name="TX_DEC1 Volume" value="104" />
+ <ctl name="TX_DEC2 Volume" value="104" />
+ </path>
+ <path name="three-mic-nn">
+ <ctl name="TX_CDC_DMA_TX_3 Channels" value="Three" />
+ <ctl name="TX_AIF1_CAP Mixer DEC1" value="1" />
+ <ctl name="TX DMIC MUX1" value="DMIC4" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC2" />
+ <ctl name="TX_AIF1_CAP Mixer DEC3" value="1" />
+ <ctl name="TX DMIC MUX3" value="DMIC5" />
+ <ctl name="TX_DEC1 Volume" value="104" />
+ <ctl name="TX_DEC2 Volume" value="104" />
+ <ctl name="TX_DEC3 Volume" value="104" />
+ </path>
+ <path name="voice-tty-vco-handset-mic">
+ <path name="dmic1"/>
+ </path>
+ <path name="audio-record capture-fm">
+ <ctl name="MultiMedia1 Mixer SEC_MI2S_TX" value="1"/>
+ </path>
+ <path name="low-latency-record capture-fm">
+ <ctl name="MultiMedia8 Mixer SEC_MI2S_TX" value="1"/>
+ </path>
+ <path name="fm-virtual-record capture-fm">
+ <ctl name="MultiMedia2 Mixer SEC_MI2S_TX" value="1"/>
+ </path>
+ <path name="play-fm">
+ <ctl name="SEC MI2S LOOPBACK Volume" value="1"/>
+ <ctl name="WSA_CDC_DMA_RX_0 Port Mixer SEC_MI2S_TX" value="1"/>
+ <ctl name="WSA_CDC_DMA_RX_0_DL_HL Switch" value="1"/>
+ </path>
+ <path name="play-fm headphones">
+ <ctl name="SEC MI2S LOOPBACK Volume" value="1"/>
+ <ctl name="RX_CDC_DMA_RX_0 Port Mixer SEC_MI2S_TX" value="1"/>
+ <ctl name="RX_CDC_DMA_RX_0_DL_HL Switch" value="1"/>
+ </path>
+ <path name="mmap-record capture-fm">
+ <ctl name="MultiMedia16 Mixer SEC_MI2S_TX" value="1"/>
+ </path>
+ <path name="echo-reference usb-headphones">
+ <ctl name="AUDIO_REF_EC_UL1 MUX" value="USB_AUDIO_RX"/>
+ <ctl name="EC Reference Channels" value="Two"/>
+ </path>
+ <path name="echo-reference-voip-low-latency usb-headphones">
+ <ctl name="AUDIO_REF_EC_UL8 MUX" value="USB_AUDIO_RX"/>
+ <ctl name="EC Reference Channels" value="Two"/>
+ </path>
+ <path name="echo-reference-voip usb-headphones">
+ <ctl name="AUDIO_REF_EC_UL10 MUX" value="USB_AUDIO_RX"/>
+ <ctl name="EC Reference Channels" value="Two"/>
+ </path>
+</mixer>
diff --git a/configs/lahaina/yupik_overlay/sound_trigger_mixer_paths_yupikidprb3_overlay.xml b/configs/lahaina/yupik_overlay/sound_trigger_mixer_paths_yupikidprb3_overlay.xml
new file mode 100644
index 0000000..20c9887
--- /dev/null
+++ b/configs/lahaina/yupik_overlay/sound_trigger_mixer_paths_yupikidprb3_overlay.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--- Copyright (c) 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 -->
+<!--- 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. -->
+<!-- -->
+<!-- Changes from Qualcomm Innovation Center are provided under the following license:-->
+<!-- Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.-->
+<!-- SPDX-License-Identifier: BSD-3-Clause-Clear -->
+<mixer>
+ <ctl name="VA DEC0 MUX" value="MSM_DMIC"/>
+ <ctl name="VA DEC1 MUX" value="MSM_DMIC"/>
+ <ctl name="VA DEC2 MUX" value="MSM_DMIC"/>
+ <ctl name="VA DEC3 MUX" value="MSM_DMIC"/>
+ <ctl name="VA DEC4 MUX" value="MSM_DMIC"/>
+ <ctl name="VA DEC5 MUX" value="MSM_DMIC"/>
+ <ctl name="VA DEC6 MUX" value="MSM_DMIC"/>
+ <ctl name="VA DEC7 MUX" value="MSM_DMIC"/>
+ <path name="listen-ape-handset-mic">
+ <ctl name="VA_CDC_DMA_TX_0 Channels" value="One"/>
+ <ctl name="VA_AIF1_CAP Mixer DEC0" value="1"/>
+ <ctl name="VA DEC0 MUX" value="MSM_DMIC"/>
+ <ctl name="VA DMIC MUX0" value="DMIC3"/>
+ </path>
+ <path name="listen-ape-handset-dmic">
+ <ctl name="VA_CDC_DMA_TX_0 Channels" value="Two"/>
+ <ctl name="VA_AIF1_CAP Mixer DEC0" value="1"/>
+ <ctl name="VA_AIF1_CAP Mixer DEC1" value="1"/>
+ <ctl name="VA DEC0 MUX" value="MSM_DMIC"/>
+ <ctl name="VA DEC1 MUX" value="MSM_DMIC"/>
+ <ctl name="VA DMIC MUX0" value="DMIC3"/>
+ <ctl name="VA DMIC MUX1" value="DMIC5"/>
+ </path>
+ <path name="listen-ape-handset-tmic">
+ <ctl name="VA_CDC_DMA_TX_0 Channels" value="Three"/>
+ <ctl name="VA_AIF1_CAP Mixer DEC0" value="1"/>
+ <ctl name="VA_AIF1_CAP Mixer DEC1" value="1"/>
+ <ctl name="VA_AIF1_CAP Mixer DEC2" value="1"/>
+ <ctl name="VA DEC0 MUX" value="MSM_DMIC"/>
+ <ctl name="VA DEC1 MUX" value="MSM_DMIC"/>
+ <ctl name="VA DEC2 MUX" value="MSM_DMIC"/>
+ <ctl name="VA DMIC MUX0" value="DMIC3"/>
+ <ctl name="VA DMIC MUX1" value="DMIC4"/>
+ <ctl name="VA DMIC MUX2" value="DMIC2"/>
+ </path>
+ <path name="listen-ape-handset-qmic">
+ <ctl name="VA_CDC_DMA_TX_0 Channels" value="Four"/>
+ <ctl name="VA_AIF1_CAP Mixer DEC0" value="1"/>
+ <ctl name="VA_AIF1_CAP Mixer DEC1" value="1"/>
+ <ctl name="VA_AIF1_CAP Mixer DEC2" value="1"/>
+ <ctl name="VA_AIF1_CAP Mixer DEC3" value="1"/>
+ <ctl name="VA DEC0 MUX" value="MSM_DMIC"/>
+ <ctl name="VA DEC1 MUX" value="MSM_DMIC"/>
+ <ctl name="VA DEC2 MUX" value="MSM_DMIC"/>
+ <ctl name="VA DEC3 MUX" value="MSM_DMIC"/>
+ <ctl name="VA DMIC MUX0" value="DMIC3"/>
+ <ctl name="VA DMIC MUX1" value="DMIC4"/>
+ <ctl name="VA DMIC MUX2" value="DMIC2"/>
+ <ctl name="VA DMIC MUX3" value="DMIC5"/>
+ </path>
+</mixer>
diff --git a/configs/msmnile_au/msmnile_au.mk b/configs/msmnile_au/msmnile_au.mk
index 8f034a9..754ce6f 100644
--- a/configs/msmnile_au/msmnile_au.mk
+++ b/configs/msmnile_au/msmnile_au.mk
@@ -143,6 +143,9 @@
ifneq ( ,$(filter msmnile_gvmq msmnile_au gen4_au msmnile_au_km4 msmnile_au_ar, $(TARGET_BOARD_PLATFORM)$(TARGET_BOARD_SUFFIX)$(TARGET_BOARD_DERIVATIVE_SUFFIX)))
AUDIO_FEATURE_ENABLED_AUDIO_PARSERS := true
endif
+ifneq ( ,$(filter msmnile_tb, $(TARGET_PRODUCT)))
+AUDIO_FEATURE_ENABLED_AUDIO_PARSERS := true
+endif
##AUTOMOTIVE_AUDIO_FEATURE_FLAGS
ifneq ( ,$(filter U UpsideDownCake 14, $(PLATFORM_VERSION)))
@@ -155,7 +158,7 @@
endif
ifneq ( ,$(filter T Tiramisu 13 U UpsideDownCake 14, $(PLATFORM_VERSION)))
-ifneq ( ,$(filter msmnile_au gen4_au msmnile_au_km4 msmnile_au_ar, $(TARGET_BOARD_PLATFORM)$(TARGET_BOARD_SUFFIX))$(TARGET_BOARD_DERIVATIVE_SUFFIX))
+ifneq ( ,$(filter msmnile_au gen4_au msmnile_au_km4 msmnile_tb msmnile_au_ar, $(TARGET_BOARD_PLATFORM)$(TARGET_BOARD_SUFFIX))$(TARGET_BOARD_DERIVATIVE_SUFFIX))
AUDIO_FEATURE_MMAP_AAUDIO = true
endif
endif
diff --git a/configs/msmsteppe_au/audio_effects_64.conf b/configs/msmsteppe_au/audio_effects_64.conf
new file mode 100755
index 0000000..c6a354d
--- /dev/null
+++ b/configs/msmsteppe_au/audio_effects_64.conf
@@ -0,0 +1,385 @@
+# List of effect libraries to load. Each library element must contain a "path" element
+# giving the full path of the library .so file.
+# libraries {
+# <lib name> {
+# path <lib path>
+# }
+# }
+libraries {
+ bundle {
+ path /vendor/lib64/soundfx/libbundlewrapper.so
+ }
+ reverb {
+ path /vendor/lib64/soundfx/libreverbwrapper.so
+ }
+ qcbassboost {
+ path /vendor/lib64/soundfx/libqcbassboost.so
+ }
+ qcvirt {
+ path /vendor/lib64/soundfx/libqcvirt.so
+ }
+ qcreverb {
+ path /vendor/lib64/soundfx/libqcreverb.so
+ }
+ visualizer_sw {
+ path /vendor/lib64/soundfx/libvisualizer.so
+ }
+ visualizer_hw {
+ path /vendor/lib64/soundfx/libqcomvisualizer.so
+ }
+ downmix {
+ path /vendor/lib64/soundfx/libdownmix.so
+ }
+ loudness_enhancer {
+ path /vendor/lib64/soundfx/libldnhncr.so
+ }
+ proxy {
+ path /vendor/lib64/soundfx/libeffectproxy.so
+ }
+ offload_bundle {
+ path /vendor/lib64/soundfx/libqcompostprocbundle.so
+ }
+ audio_pre_processing {
+ path /vendor/lib64/soundfx/libqcomvoiceprocessing.so
+ }
+ audiosphere {
+ path /vendor/lib64/soundfx/libasphere.so
+ }
+ shoebox {
+ path /vendor/lib64/soundfx/libshoebox.so
+ }
+ audio_bmt {
+ path /vendor/lib64/soundfx/libqtiautobundle.so
+ }
+ audio_fnb {
+ path /vendor/lib64/soundfx/libqtiautobundle.so
+ }
+ audio_delay {
+ path /vendor/lib64/soundfx/libqtiautobundle.so
+ }
+ audio_volume {
+ path /vendor/lib64/soundfx/libqtiautobundle.so
+ }
+ audio_avc {
+ path /vendor/lib64/soundfx/libqtiautobundle.so
+ }
+ audio_sumx {
+ path /vendor/lib64/soundfx/libqtiautobundle.so
+ }
+ audio_synth {
+ path /vendor/lib64/soundfx/libqtiautobundle.so
+ }
+}
+
+# Default pre-processing library. Add to audio_effect.conf "libraries" section if
+# audio HAL implements support for default software audio pre-processing effects
+#
+# pre_processing {
+# path /vendor/lib/soundfx/libaudiopreprocessing.so
+# }
+
+# list of effects to load. Each effect element must contain a "library" and a "uuid" element.
+# The value of the "library" element must correspond to the name of one library element in the
+# "libraries" element.
+# The name of the effect element is indicative, only the value of the "uuid" element
+# designates the effect.
+# The uuid is the implementation specific UUID as specified by the effect vendor. This is not the
+# generic effect type UUID.
+# effects {
+# <fx name> {
+# library <lib name>
+# uuid <effect uuid>
+# }
+# ...
+# }
+
+effects {
+
+# additions for the proxy implementation
+# Proxy implementation
+ #effectname {
+ #library proxy
+ #uuid xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
+
+ # SW implemetation of the effect. Added as a node under the proxy to
+ # indicate this as a sub effect.
+ #libsw {
+ #library libSW
+ #uuid yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy
+ #} End of SW effect
+
+ # HW implementation of the effect. Added as a node under the proxy to
+ # indicate this as a sub effect.
+ #libhw {
+ #library libHW
+ #uuid zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz
+ #}End of HW effect
+ #} End of effect proxy
+
+ bassboost {
+ library proxy
+ uuid 14804144-a5ee-4d24-aa88-0002a5d5c51b
+
+ libsw {
+ library qcbassboost
+ uuid 23aca180-44bd-11e2-bcfd-0800200c9a66
+ }
+
+ libhw {
+ library offload_bundle
+ uuid 2c4a8c24-1581-487f-94f6-0002a5d5c51b
+ }
+ }
+ virtualizer {
+ library proxy
+ uuid d3467faa-acc7-4d34-acaf-0002a5d5c51b
+
+ libsw {
+ library qcvirt
+ uuid e6c98a16-22a3-11e2-b87b-f23c91aec05e
+ }
+
+ libhw {
+ library offload_bundle
+ uuid 509a4498-561a-4bea-b3b1-0002a5d5c51b
+ }
+ }
+ equalizer {
+ library proxy
+ uuid c8e70ecd-48ca-456e-8a4f-0002a5d5c51b
+
+ libsw {
+ library bundle
+ uuid ce772f20-847d-11df-bb17-0002a5d5c51b
+ }
+
+ libhw {
+ library offload_bundle
+ uuid a0dac280-401c-11e3-9379-0002a5d5c51b
+ }
+ }
+ volume {
+ library bundle
+ uuid 119341a0-8469-11df-81f9-0002a5d5c51b
+ }
+ reverb_env_aux {
+ library proxy
+ uuid 48404ac9-d202-4ccc-bf84-0002a5d5c51b
+
+ libsw {
+ library qcreverb
+ uuid a8c1e5f3-293d-43cd-95ec-d5e26c02e217
+ }
+
+ libhw {
+ library offload_bundle
+ uuid 79a18026-18fd-4185-8233-0002a5d5c51b
+ }
+ }
+ reverb_env_ins {
+ library proxy
+ uuid b707403a-a1c1-4291-9573-0002a5d5c51b
+
+ libsw {
+ library qcreverb
+ uuid 791fff8b-8129-4655-83a4-59bc61034c3a
+ }
+
+ libhw {
+ library offload_bundle
+ uuid eb64ea04-973b-43d2-8f5e-0002a5d5c51b
+ }
+ }
+ reverb_pre_aux {
+ library proxy
+ uuid 1b78f587-6d1c-422e-8b84-0002a5d5c51b
+
+ libsw {
+ library qcreverb
+ uuid 53ef1db5-c0c0-445b-b060-e34d20ebb70a
+ }
+
+ libhw {
+ library offload_bundle
+ uuid 6987be09-b142-4b41-9056-0002a5d5c51b
+ }
+ }
+ reverb_pre_ins {
+ library proxy
+ uuid f3e178d2-ebcb-408e-8357-0002a5d5c51b
+
+ libsw {
+ library qcreverb
+ uuid b08a0e38-22a5-11e2-b87b-f23c91aec05e
+ }
+
+ libhw {
+ library offload_bundle
+ uuid aa2bebf6-47cf-4613-9bca-0002a5d5c51b
+ }
+ }
+ visualizer {
+ library proxy
+ uuid 1d0a1a53-7d5d-48f2-8e71-27fbd10d842c
+
+ libsw {
+ library visualizer_sw
+ uuid d069d9e0-8329-11df-9168-0002a5d5c51b
+ }
+
+ libhw {
+ library visualizer_hw
+ uuid 7a8044a0-1a71-11e3-a184-0002a5d5c51b
+ }
+ }
+ downmix {
+ library downmix
+ uuid 93f04452-e4fe-41cc-91f9-e475b6d1d69f
+ }
+ hw_acc {
+ library offload_bundle
+ uuid 7d1580bd-297f-4683-9239-e475b6d1d69f
+ }
+ loudness_enhancer {
+ library loudness_enhancer
+ uuid fa415329-2034-4bea-b5dc-5b381c8d1e2c
+ }
+ aec {
+ library audio_pre_processing
+ uuid 0f8d0d2a-59e5-45fe-b6e4-248c8a799109
+ }
+ ns {
+ library audio_pre_processing
+ uuid 1d97bb0b-9e2f-4403-9ae3-58c2554306f8
+ }
+ audiosphere {
+ library audiosphere
+ uuid 184e62ab-2d19-4364-9d1b-c0a40733866c
+ }
+ shoebox {
+ library shoebox
+ uuid 1eab784c-1a36-4b2a-b7fc-e34c44cab89e
+ }
+ auto_bmt {
+ library auto_bmt
+ uuid e039757b-a367-44e9-9bbb-634af0c51cb7
+ }
+ auto_fnb {
+ library auto_fnb
+ uuid 6bc88c84-a544-11e8-98d0-529269fb1459
+ }
+ auto_delay {
+ library auto_delay
+ uuid a31574a6-a5e7-11e8-98d0-529269fb1459
+ }
+ auto_volume {
+ library auto_volume
+ uuid 3d844dd4-a367-11e8-9eb6-529269fb1459
+ }
+ auto_avc {
+ library auto_avc
+ uuid 2130c69e-6a3a-4e35-9890-71687f0b78bf
+ }
+ auto_sumx {
+ library auto_sumx
+ uuid 32e9fe7f-de63-4d1b-a5d2-281e8492f3ce
+ }
+ auto_synth {
+ library auto_synth
+ uuid a124b54f-4026-4ed2-9316-4ba2d5effdb8
+ }
+}
+
+# additional effect from vendor
+# UUID generated using version 1
+
+output_session_processing {
+ music {
+ music_helper {
+ }
+ }
+ ring {
+ ring_helper {
+ }
+ }
+ alarm {
+ alarm_helper {
+ }
+ }
+ # stream type voice_call is used for VoIP call
+ voice_call {
+ voice_helper {
+ }
+ }
+ notification {
+ notification_helper {
+ }
+ }
+}
+
+# Added aec, ns effects for voice_communication, which are supported by the board
+
+pre_processing {
+ voice_communication {
+ aec {
+ }
+ ns {
+ }
+ }
+}
+
+# Default pre-processing effects. Add to audio_effect.conf "effects" section if
+# audio HAL implements support for them.
+#
+# agc {
+# library pre_processing
+# uuid aa8130e0-66fc-11e0-bad0-0002a5d5c51b
+# }
+# aec {
+# library pre_processing
+# uuid bb392ec0-8d4d-11e0-a896-0002a5d5c51b
+# }
+# ns {
+# library pre_processing
+# uuid c06c8400-8e06-11e0-9cb6-0002a5d5c51b
+# }
+
+# Audio preprocessor configurations.
+# The pre processor configuration consists in a list of elements each describing
+# pre processor settings for a given input source. Valid input source names are:
+# "mic", "camcorder", "voice_recognition", "voice_communication"
+# Each input source element contains a list of effects elements. The name of the effect
+# element must be the name of one of the effects in the "effects" list of the file.
+# Each effect element may optionally contain a list of parameters and their
+# default value to apply when the pre processor effect is created.
+# A parameter is defined by a "param" element and a "value" element. Each of these elements
+# consists in one or more elements specifying a type followed by a value.
+# The types defined are: "int", "short", "float", "bool" and "string"
+# When both "param" and "value" are a single int, a simple form is allowed where just
+# the param and value pair is present in the parameter description
+# pre_processing {
+# <input source name> {
+# <fx name> {
+# <param 1 name> {
+# param {
+# int|short|float|bool|string <value>
+# [ int|short|float|bool|string <value> ]
+# ...
+# }
+# value {
+# int|short|float|bool|string <value>
+# [ int|short|float|bool|string <value> ]
+# ...
+# }
+# }
+# <param 2 name > {<param> <value>}
+# ...
+# }
+# ...
+# }
+# ...
+# }
+
+#
+# TODO: add default audio pre processor configurations after debug and tuning phase
+#
diff --git a/configs/msmsteppe_au/audio_policy_configuration_7_0.xml b/configs/msmsteppe_au/audio_policy_configuration_7_0.xml
new file mode 100644
index 0000000..b3e87f7
--- /dev/null
+++ b/configs/msmsteppe_au/audio_policy_configuration_7_0.xml
@@ -0,0 +1,655 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!-- Copyright (c) 2016-2020, The Linux Foundation. All rights reserved
+ Not a Contribution.
+-->
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ Changes from Qualcomm Innovation Center are provided under the following license:
+ Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ SPDX-License-Identifier: BSD-3-Clause-Clear
+-->
+
+<audioPolicyConfiguration version="7.0" xmlns:xi="http://www.w3.org/2001/XInclude">
+ <!-- version section contains a “version” tag in the form “major.minor” e.g version=”1.0” -->
+
+ <!-- Global configuration Decalaration -->
+ <globalConfiguration speaker_drc_enabled="true"/>
+
+ <!-- Modules section:
+ There is one section per audio HW module present on the platform.
+ Each module section will contains two mandatory tags for audio HAL “halVersion” and “name”.
+ The module names are the same as in current .conf file:
+ “primary”, “A2DP”, “remote_submix”, “USB”
+ Each module will contain the following sections:
+ “devicePorts”: a list of device descriptors for all input and output devices accessible via this
+ module.
+ This contains both permanently attached devices and removable devices.
+ "gain": constraints applied to the millibel values:
+ - maxValueMB >= minValueMB
+ - defaultValueMB >= minValueMB && defaultValueMB <= maxValueMB
+ - (maxValueMB - minValueMB) % stepValueMB == 0
+ - (defaultValueMB - minValueMB) % stepValueMB == 0
+ “mixPorts”: listing all output and input streams exposed by the audio HAL
+ “routes”: list of possible connections between input and output devices or between stream and
+ devices.
+ "route": is defined by an attribute:
+ -"type": <mux|mix> means all sources are mutual exclusive (mux) or can be mixed (mix)
+ -"sink": the sink involved in this route
+ -"sources": all the sources than can be connected to the sink via vis route
+ “attachedDevices”: permanently attached devices.
+ The attachedDevices section is a list of devices names. The names correspond to device names
+ defined in <devicePorts> section.
+ “defaultOutputDevice”: device to be used by default when no policy rule applies
+ -->
+ <modules>
+ <!-- Primary Audio HAL -->
+ <module name="primary" halVersion="3.0">
+ <attachedDevices>
+ <item>Media Bus</item>
+ <item>Sys Notification Bus</item>
+ <item>Nav Guidance Bus</item>
+ <item>Phone Bus</item>
+ <item>Alerts Bus</item>
+ <item>Front Passenger Bus</item>
+ <item>Rear Seat Bus</item>
+ <item>Built-In Mic</item>
+ <item>Built-In Back Mic</item>
+ <item>Primary In Bus</item>
+ <item>Front Passenger In Bus</item>
+ <item>Rear Seat In Bus</item>
+ <item>FM Tuner</item>
+ <item>Echo Reference</item>
+ </attachedDevices>
+ <defaultOutputDevice>Media Bus</defaultOutputDevice>
+ <mixPorts>
+ <mixPort name="media" role="source"
+ flags="AUDIO_OUTPUT_FLAG_PRIMARY">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
+ <mixPort name="carplay_48k_media" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
+ <mixPort name="sys_notification" role="source">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
+ <mixPort name="carplay_8k_sys" role="source">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="8000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
+ <mixPort name="carplay_16k_sys" role="source">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="16000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
+ <mixPort name="carplay_24k_sys" role="source">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="24000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
+ <mixPort name="carplay_32k_sys" role="source">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="32000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
+ <mixPort name="carplay_48k_sys" role="source">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
+ <mixPort name="nav_guidance" role="source">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
+ <mixPort name="carplay_8k_navi" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="8000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
+ <mixPort name="carplay_16k_navi" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="16000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
+ <mixPort name="carplay_24k_navi" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="24000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
+ <mixPort name="carplay_32k_navi" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="32000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
+ <mixPort name="carplay_48k_navi" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
+ <mixPort name="phone" role="source">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
+ <mixPort name="carplay_8k_phone" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="8000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
+ <mixPort name="carplay_16k_phone" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="16000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
+ <mixPort name="carplay_24k_phone" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="24000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
+ <mixPort name="carplay_32k_phone" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="32000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
+ <mixPort name="carplay_48k_phone" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
+ <mixPort name="alerts" role="source">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
+ <mixPort name="carplay_8k_alerts" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="8000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
+ <mixPort name="carplay_16k_alerts" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="16000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
+ <mixPort name="carplay_24k_alerts" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="24000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
+ <mixPort name="carplay_32k_alerts" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="32000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
+ <mixPort name="carplay_48k_alerts" role="source"
+ flags="AUDIO_OUTPUT_FLAG_FAST">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
+ <mixPort name="front_passenger" role="source">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
+ <mixPort name="rear_seat" role="source">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
+ <mixPort name="primary output" role="source" flags="AUDIO_OUTPUT_FLAG_FAST AUDIO_OUTPUT_FLAG_PRIMARY">
+ <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_FAST AUDIO_OUTPUT_FLAG_RAW">
+ <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"/>
+ </mixPort>
+ <mixPort name="mmap_no_irq_out" role="source" flags="AUDIO_OUTPUT_FLAG_DIRECT AUDIO_OUTPUT_FLAG_MMAP_NOIRQ">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="8000 16000 24000 32000 48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
+ <mixPort name="compress_passthrough" role="source"
+ flags="AUDIO_OUTPUT_FLAG_DIRECT AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD AUDIO_OUTPUT_FLAG_NON_BLOCKING">
+ <profile name="" format="dynamic"
+ samplingRates="dynamic" channelMasks="dynamic"/>
+ </mixPort>
+ <mixPort name="direct_pcm" role="source"
+ flags="AUDIO_OUTPUT_FLAG_DIRECT">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000 64000 88200 96000 128000 176400 192000"
+ channelMasks="AUDIO_CHANNEL_OUT_MONO AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_2POINT1 AUDIO_CHANNEL_OUT_QUAD AUDIO_CHANNEL_OUT_PENTA AUDIO_CHANNEL_OUT_5POINT1 AUDIO_CHANNEL_OUT_6POINT1 AUDIO_CHANNEL_OUT_7POINT1"/>
+ <profile name="" format="AUDIO_FORMAT_PCM_8_24_BIT"
+ samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000 64000 88200 96000 128000 176400 192000 352800 384000"
+ channelMasks="AUDIO_CHANNEL_OUT_MONO AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_2POINT1 AUDIO_CHANNEL_OUT_QUAD AUDIO_CHANNEL_OUT_PENTA AUDIO_CHANNEL_OUT_5POINT1 AUDIO_CHANNEL_OUT_6POINT1 AUDIO_CHANNEL_OUT_7POINT1"/>
+ <profile name="" format="AUDIO_FORMAT_PCM_24_BIT_PACKED"
+ samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000 64000 88200 96000 128000 176400 192000 352800 384000"
+ channelMasks="AUDIO_CHANNEL_OUT_MONO AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_2POINT1 AUDIO_CHANNEL_OUT_QUAD AUDIO_CHANNEL_OUT_PENTA AUDIO_CHANNEL_OUT_5POINT1 AUDIO_CHANNEL_OUT_6POINT1 AUDIO_CHANNEL_OUT_7POINT1"/>
+ <profile name="" format="AUDIO_FORMAT_PCM_32_BIT"
+ samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000 64000 88200 96000 128000 176400 192000 352800 384000"
+ channelMasks="AUDIO_CHANNEL_OUT_MONO AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_2POINT1 AUDIO_CHANNEL_OUT_QUAD AUDIO_CHANNEL_OUT_PENTA AUDIO_CHANNEL_OUT_5POINT1 AUDIO_CHANNEL_OUT_6POINT1 AUDIO_CHANNEL_OUT_7POINT1"/>
+ </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_FLAC"
+ samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000 64000 88200 96000 128000 176400 192000"
+ channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO"/>
+ <profile name="" format="AUDIO_FORMAT_ALAC"
+ samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000 64000 88200 96000 128000 176400 192000"
+ channelMasks="AUDIO_CHANNEL_OUT_MONO AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_2POINT1 AUDIO_CHANNEL_OUT_QUAD AUDIO_CHANNEL_OUT_PENTA AUDIO_CHANNEL_OUT_5POINT1 AUDIO_CHANNEL_OUT_6POINT1 AUDIO_CHANNEL_OUT_7POINT1"/>
+ <profile name="" format="AUDIO_FORMAT_APE"
+ samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000 64000 88200 96000 128000 176400 192000"
+ 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 AUDIO_CHANNEL_OUT_5POINT1"/>
+ <profile name="" format="AUDIO_FORMAT_AAC_HE_V1"
+ samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000 64000 88200 96000"
+ channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO AUDIO_CHANNEL_OUT_5POINT1"/>
+ <profile name="" format="AUDIO_FORMAT_AAC_HE_V2"
+ samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000 64000 88200 96000"
+ channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO AUDIO_CHANNEL_OUT_5POINT1"/>
+ <profile name="" format="AUDIO_FORMAT_DTS"
+ samplingRates="32000 44100 48000"
+ channelMasks="AUDIO_CHANNEL_OUT_MONO AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_2POINT1 AUDIO_CHANNEL_OUT_QUAD AUDIO_CHANNEL_OUT_PENTA AUDIO_CHANNEL_OUT_5POINT1"/>
+ <profile name="" format="AUDIO_FORMAT_DTS_HD"
+ samplingRates="32000 44100 48000 64000 88200 96000 128000 176400 192000"
+ channelMasks="AUDIO_CHANNEL_OUT_MONO AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_2POINT1 AUDIO_CHANNEL_OUT_QUAD AUDIO_CHANNEL_OUT_PENTA AUDIO_CHANNEL_OUT_5POINT1 AUDIO_CHANNEL_OUT_6POINT1 AUDIO_CHANNEL_OUT_7POINT1"/>
+ <profile name="" format="AUDIO_FORMAT_WMA"
+ samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000"
+ channelMasks="AUDIO_CHANNEL_OUT_MONO AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_2POINT1 AUDIO_CHANNEL_OUT_QUAD AUDIO_CHANNEL_OUT_PENTA AUDIO_CHANNEL_OUT_5POINT1 AUDIO_CHANNEL_OUT_6POINT1 AUDIO_CHANNEL_OUT_7POINT1"/>
+ <profile name="" format="AUDIO_FORMAT_WMA_PRO"
+ samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000 64000 88200 96000"
+ channelMasks="AUDIO_CHANNEL_OUT_MONO AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_2POINT1 AUDIO_CHANNEL_OUT_QUAD AUDIO_CHANNEL_OUT_PENTA AUDIO_CHANNEL_OUT_5POINT1 AUDIO_CHANNEL_OUT_6POINT1 AUDIO_CHANNEL_OUT_7POINT1"/>
+ <profile name="" format="AUDIO_FORMAT_VORBIS"
+ samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000 64000 88200 96000 128000 176400 192000"
+ channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO"/>
+ <profile name="" format="AUDIO_FORMAT_AAC_ADTS_LC"
+ samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000 64000 88200 96000"
+ channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO AUDIO_CHANNEL_OUT_5POINT1"/>
+ <profile name="" format="AUDIO_FORMAT_AAC_ADTS_HE_V1"
+ samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000 64000 88200 96000"
+ channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO AUDIO_CHANNEL_OUT_5POINT1"/>
+ <profile name="" format="AUDIO_FORMAT_AAC_ADTS_HE_V2"
+ samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000 64000 88200 96000"
+ channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO AUDIO_CHANNEL_OUT_5POINT1"/>
+ </mixPort>
+ <mixPort name="dsd_compress_passthrough" role="source"
+ flags="AUDIO_OUTPUT_FLAG_DIRECT AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD AUDIO_OUTPUT_FLAG_NON_BLOCKING">
+ <profile name="" format="AUDIO_FORMAT_DSD"
+ samplingRates="2822400 5644800"
+ channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO"/>
+ </mixPort>
+ <mixPort name="voice_tx" role="source">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ 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">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="8000 16000 32000 48000" channelMasks="AUDIO_CHANNEL_OUT_MONO 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" maxOpenCount="3" maxActiveCount="3">
+ <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"/>
+ </mixPort>
+ <mixPort name="voip_tx" role="sink"
+ flags="AUDIO_INPUT_FLAG_VOIP_TX">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="8000 16000 32000 48000" channelMasks="AUDIO_CHANNEL_IN_MONO"/>
+ </mixPort>
+ <mixPort name="record_24" role="sink" maxOpenCount="2" maxActiveCount="2">
+ <profile name="" format="AUDIO_FORMAT_PCM_24_BIT_PACKED"
+ samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000 96000 192000"
+ channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO AUDIO_CHANNEL_IN_FRONT_BACK AUDIO_CHANNEL_INDEX_MASK_3 AUDIO_CHANNEL_INDEX_MASK_4"/>
+ <profile name="" format="AUDIO_FORMAT_PCM_8_24_BIT"
+ samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000 96000 192000"
+ channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO AUDIO_CHANNEL_IN_FRONT_BACK AUDIO_CHANNEL_INDEX_MASK_3 AUDIO_CHANNEL_INDEX_MASK_4"/>
+ </mixPort>
+ <mixPort name="fast input" role="sink" maxOpenCount="2" maxActiveCount="2" flags="AUDIO_INPUT_FLAG_FAST">
+ <profile name="" format="AUDIO_FORMAT_PCM_8_24_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 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>
+ <mixPort name="mmap_no_irq_in" role="sink" flags="AUDIO_INPUT_FLAG_MMAP_NOIRQ">
+ <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 AUDIO_CHANNEL_INDEX_MASK_3"/>
+ </mixPort>
+ <mixPort name="voip_tx" role="sink"
+ flags="AUDIO_INPUT_FLAG_VOIP_TX">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="8000 16000 32000 48000" channelMasks="AUDIO_CHANNEL_IN_MONO"/>
+ </mixPort>
+ <mixPort name="echo_ref" role="sink">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="16000 48000" channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/>
+ </mixPort>
+ </mixPorts>
+
+ <devicePorts>
+ <!-- Output devices declaration, i.e. Sink DEVICE PORT -->
+ <devicePort tagName="Media Bus" role="sink" type="AUDIO_DEVICE_OUT_BUS"
+ address="BUS00_MEDIA">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ <gains>
+ <gain name="" mode="AUDIO_GAIN_MODE_JOINT"
+ minValueMB="-6000" maxValueMB="600" defaultValueMB="0" stepValueMB="100"/>
+ </gains>
+ </devicePort>
+ <devicePort tagName="Sys Notification Bus" role="sink" type="AUDIO_DEVICE_OUT_BUS"
+ address="BUS01_SYS_NOTIFICATION">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ <gains>
+ <gain name="" mode="AUDIO_GAIN_MODE_JOINT"
+ minValueMB="-6000" maxValueMB="600" defaultValueMB="0" stepValueMB="100"/>
+ </gains>
+ </devicePort>
+ <devicePort tagName="Nav Guidance Bus" role="sink" type="AUDIO_DEVICE_OUT_BUS"
+ address="BUS02_NAV_GUIDANCE">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ <gains>
+ <gain name="" mode="AUDIO_GAIN_MODE_JOINT"
+ minValueMB="-6000" maxValueMB="600" defaultValueMB="0" stepValueMB="100"/>
+ </gains>
+ </devicePort>
+ <devicePort tagName="Phone Bus" role="sink" type="AUDIO_DEVICE_OUT_BUS"
+ address="BUS03_PHONE">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ <gains>
+ <gain name="" mode="AUDIO_GAIN_MODE_JOINT"
+ minValueMB="-6000" maxValueMB="600" defaultValueMB="0" stepValueMB="100"/>
+ </gains>
+ </devicePort>
+ <devicePort tagName="Alerts Bus" role="sink" type="AUDIO_DEVICE_OUT_BUS"
+ address="BUS05_ALERTS">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ <gains>
+ <gain name="" mode="AUDIO_GAIN_MODE_JOINT"
+ minValueMB="-6000" maxValueMB="600" defaultValueMB="0" stepValueMB="100"/>
+ </gains>
+ </devicePort>
+ <devicePort tagName="Front Passenger Bus" role="sink" type="AUDIO_DEVICE_OUT_BUS"
+ address="BUS08_FRONT_PASSENGER">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ <gains>
+ <gain name="" mode="AUDIO_GAIN_MODE_JOINT"
+ minValueMB="-6000" maxValueMB="600" defaultValueMB="0" stepValueMB="100"/>
+ </gains>
+ </devicePort>
+ <devicePort tagName="Rear Seat Bus" role="sink" type="AUDIO_DEVICE_OUT_BUS"
+ address="BUS16_REAR_SEAT">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ <gains>
+ <gain name="" mode="AUDIO_GAIN_MODE_JOINT"
+ minValueMB="-6000" maxValueMB="600" defaultValueMB="0" stepValueMB="100"/>
+ </gains>
+ </devicePort>
+ <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>
+ <devicePort tagName="Speaker Safe" type="AUDIO_DEVICE_OUT_SPEAKER_SAFE" 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>
+ <devicePort tagName="Line" type="AUDIO_DEVICE_OUT_LINE" role="sink">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </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="HDMI" type="AUDIO_DEVICE_OUT_AUX_DIGITAL" role="sink">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="8000 11025 16000 22050 32000 44100 48000 64000 88200 96000 128000 176400 192000" channelMasks="dynamic"/>
+ </devicePort>
+ <devicePort tagName="Proxy" type="AUDIO_DEVICE_OUT_PROXY" role="sink">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="8000 11025 16000 22050 32000 44100 48000 64000 88200 96000 128000 176400 192000" channelMasks="dynamic"/>
+ </devicePort>
+ <devicePort tagName="FM" type="AUDIO_DEVICE_OUT_FM" role="sink">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_MONO AUDIO_CHANNEL_OUT_STEREO"/>
+ </devicePort>
+ <devicePort tagName="BT A2DP Out" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP" role="sink"
+ encodedFormats="AUDIO_FORMAT_SBC AUDIO_FORMAT_AAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_LDAC AUDIO_FORMAT_CELT AUDIO_FORMAT_APTX_ADAPTIVE AUDIO_FORMAT_APTX_TWSP">
+ <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"
+ encodedFormats="AUDIO_FORMAT_SBC AUDIO_FORMAT_AAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_LDAC AUDIO_FORMAT_CELT AUDIO_FORMAT_APTX_ADAPTIVE AUDIO_FORMAT_APTX_TWSP">
+ <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"
+ encodedFormats="AUDIO_FORMAT_SBC AUDIO_FORMAT_AAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_LDAC AUDIO_FORMAT_CELT AUDIO_FORMAT_APTX_ADAPTIVE AUDIO_FORMAT_APTX_TWSP">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </devicePort>
+
+ <!-- Input devices declaration, i.e. Source DEVICE PORT -->
+ <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="FM Tuner" type="AUDIO_DEVICE_IN_FM_TUNER" role="source">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000"
+ channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/>
+ </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>
+ <devicePort tagName="Primary In Bus" type="AUDIO_DEVICE_IN_BUS" role="source" address="BUS04_INPUT">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_IN_STEREO"/>
+ <gains>
+ <gain name="" mode="AUDIO_GAIN_MODE_JOINT"
+ minValueMB="-6000" maxValueMB="600" defaultValueMB="0" stepValueMB="100"/>
+ </gains>
+ </devicePort>
+ <devicePort tagName="Front Passenger In Bus" type="AUDIO_DEVICE_IN_BUS" role="source" address="BUS09_INPUT_FRONT_PASSENGER">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_IN_STEREO"/>
+ <gains>
+ <gain name="" mode="AUDIO_GAIN_MODE_JOINT"
+ minValueMB="-6000" maxValueMB="600" defaultValueMB="0" stepValueMB="100"/>
+ </gains>
+ </devicePort>
+ <devicePort tagName="Rear Seat In Bus" type="AUDIO_DEVICE_IN_BUS" role="source" address="BUS17_INPUT_REAR_SEAT">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_IN_STEREO"/>
+ <gains>
+ <gain name="" mode="AUDIO_GAIN_MODE_JOINT"
+ minValueMB="-6000" maxValueMB="600" defaultValueMB="0" stepValueMB="100"/>
+ </gains>
+ </devicePort>
+ <devicePort tagName="Echo Reference" type="AUDIO_DEVICE_IN_ECHO_REFERENCE" role="source">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="16000 48000"
+ channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/>
+ </devicePort>
+ </devicePorts>
+ <!-- route declaration, i.e. list all available sources for a given sink -->
+ <routes>
+ <route type="mix" sink="Media Bus"
+ sources="media,direct_pcm,compressed_offload,voip_rx,mmap_no_irq_out,carplay_48k_media"/>
+ <route type="mix" sink="Sys Notification Bus"
+ sources="sys_notification,mmap_no_irq_out,carplay_8k_sys,carplay_16k_sys,carplay_24k_sys,carplay_32k_sys,carplay_48k_sys"/>
+ <route type="mix" sink="Nav Guidance Bus"
+ sources="nav_guidance,mmap_no_irq_out,carplay_8k_navi,carplay_16k_navi,carplay_24k_navi,carplay_32k_navi,carplay_48k_navi"/>
+ <route type="mix" sink="Phone Bus"
+ sources="phone,mmap_no_irq_out,carplay_8k_phone,carplay_16k_phone,carplay_24k_phone,carplay_32k_phone,carplay_48k_phone"/>
+ <route type="mix" sink="Alerts Bus"
+ sources="alerts,carplay_8k_alerts,carplay_16k_alerts,carplay_24k_alerts,carplay_32k_alerts,carplay_48k_alerts"/>
+ <route type="mix" sink="Front Passenger Bus"
+ sources="front_passenger,mmap_no_irq_out"/>
+ <route type="mix" sink="Rear Seat Bus"
+ 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"
+ sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx,mmap_no_irq_out"/>
+ <route type="mix" sink="Speaker Safe"
+ sources="primary output,raw,deep_buffer,compressed_offload,mmap_no_irq_out,voip_rx"/>
+ <route type="mix" sink="Wired Headset"
+ sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,dsd_compress_passthrough,voip_rx,mmap_no_irq_out"/>
+ <route type="mix" sink="Wired Headphones"
+ sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,dsd_compress_passthrough,voip_rx,mmap_no_irq_out"/>
+ <route type="mix" sink="Line"
+ sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,dsd_compress_passthrough,voip_rx,mmap_no_irq_out"/>
+ <route type="mix" sink="HDMI"
+ sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,compress_passthrough,voip_rx"/>
+ <route type="mix" sink="Proxy"
+ sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload"/>
+ <route type="mix" sink="FM"
+ sources="primary output"/>
+ <route type="mix" sink="BT SCO"
+ sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
+ <route type="mix" sink="BT SCO Headset"
+ sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
+ <route type="mix" sink="BT SCO Car Kit"
+ sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
+ <route type="mix" sink="Telephony Tx"
+ sources="voice_tx,incall_music_uplink"/>
+ <route type="mix" sink="primary input"
+ sources="Built-In Mic,Built-In Back Mic,BT SCO Headset Mic,Primary In Bus,Front Passenger In Bus,Rear Seat In Bus"/>
+ <route type="mix" sink="echo_ref"
+ sources="Echo Reference"/>
+ <route type="mix" sink="fast input"
+ 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="mmap_no_irq_in"
+ sources="Built-In Mic,Built-In Back Mic,Wired Headset Mic"/>
+ <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"/>
+ <route type="mix" sink="voip_tx"
+ sources="Built-In Mic,Built-In Back Mic,BT SCO Headset Mic"/>
+ <route type="mix" sink="record_24"
+ sources="Built-In Mic,Built-In Back Mic,Wired Headset Mic"/>
+ <route type="mix" sink="voip_tx"
+ sources="Built-In Mic,Built-In Back Mic,BT SCO Headset Mic"/>
+ <route type="mix" sink="BT A2DP Out"
+ sources="primary output,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
+ <route type="mix" sink="BT A2DP Headphones"
+ sources="primary output,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
+ <route type="mix" sink="BT A2DP Speaker"
+ sources="primary output,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
+ </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>
+
+ <!-- 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"/>
+
+ </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"/>
+
+ <!-- End of Volume section -->
+
+</audioPolicyConfiguration>
diff --git a/configs/msmsteppe_au/msmsteppe_au.mk b/configs/msmsteppe_au/msmsteppe_au.mk
index 1938e51..87e9918 100644
--- a/configs/msmsteppe_au/msmsteppe_au.mk
+++ b/configs/msmsteppe_au/msmsteppe_au.mk
@@ -123,6 +123,10 @@
endif
##AUTOMOTIVE_AUDIO_FEATURE_FLAGS
+ifneq ( ,$(filter U UpsideDownCake 14, $(PLATFORM_VERSION)))
+AUDIO_FEATURE_ENABLED_HAL_V7 := true
+endif
+
ifneq ($(strip $(TARGET_USES_RRO)), true)
#Audio Specific device overlays
DEVICE_PACKAGE_OVERLAYS += vendor/qcom/opensource/audio-hal/primary-hal/configs/common/overlay
@@ -131,9 +135,16 @@
#Automotive audio specific device overlays
DEVICE_PACKAGE_OVERLAYS += vendor/qcom/opensource/audio-hal/primary-hal/configs/common_au/overlay
+ifneq ( ,$(filter U UpsideDownCake 14, $(PLATFORM_VERSION)))
+PRODUCT_COPY_FILES += \
+ $(TOPDIR)vendor/qcom/opensource/audio-hal/primary-hal/configs/msmsteppe_au/audio_effects_64.conf:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.conf
+else
+PRODUCT_COPY_FILES += \
+ $((TOPDIR)vendor/qcom/opensource/audio-hal/primary-hal/configs/msmsteppe_au/audio_effects.conf:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.conf
+endif
+
PRODUCT_COPY_FILES += \
vendor/qcom/opensource/audio-hal/primary-hal/configs/msmsteppe_au/audio_io_policy.conf:$(TARGET_COPY_OUT_VENDOR)/etc/audio_io_policy.conf \
- vendor/qcom/opensource/audio-hal/primary-hal/configs/msmsteppe_au/audio_effects.conf:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.conf \
vendor/qcom/opensource/audio-hal/primary-hal/configs/msmsteppe_au/audio_effects.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.xml \
vendor/qcom/opensource/audio-hal/primary-hal/configs/msmsteppe_au/mixer_paths_adp.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths_adp.xml \
vendor/qcom/opensource/audio-hal/primary-hal/configs/msmsteppe_au/audio_tuning_mixer.txt:$(TARGET_COPY_OUT_VENDOR)/etc/audio_tuning_mixer.txt \
@@ -147,12 +158,25 @@
#XML Audio configuration files
ifneq ($(TARGET_USES_AOSP_FOR_AUDIO), true)
+ifneq ( ,$(filter U UpsideDownCake 14, $(PLATFORM_VERSION)))
+PRODUCT_COPY_FILES += \
+ $(TOPDIR)vendor/qcom/opensource/audio-hal/primary-hal/configs/msmsteppe_au/audio_policy_configuration_7_0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/audio_policy_configuration.xml
+else
PRODUCT_COPY_FILES += \
$(TOPDIR)vendor/qcom/opensource/audio-hal/primary-hal/configs/msmsteppe_au/audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/audio_policy_configuration.xml
endif
+endif
+
+ifneq ( ,$(filter U UpsideDownCake 14, $(PLATFORM_VERSION)))
+PRODUCT_COPY_FILES += \
+ $(TOPDIR)vendor/qcom/opensource/audio-hal/primary-hal/configs/common_au/audio_policy_configuration_7_0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration.xml \
+ $(TOPDIR)frameworks/av/services/audiopolicy/config/a2dp_audio_policy_configuration_7_0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/a2dp_audio_policy_configuration.xml
+else
PRODUCT_COPY_FILES += \
$(TOPDIR)vendor/qcom/opensource/audio-hal/primary-hal/configs/common_au/audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration.xml \
- $(TOPDIR)frameworks/av/services/audiopolicy/config/a2dp_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/a2dp_audio_policy_configuration.xml \
+ $(TOPDIR)frameworks/av/services/audiopolicy/config/a2dp_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/a2dp_audio_policy_configuration.xml
+endif
+PRODUCT_COPY_FILES += \
$(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 \
@@ -503,6 +527,15 @@
android.hardware.audio.effect@6.0 \
android.hardware.audio.effect@6.0-impl
+# enable audio hidl hal 7.0
+PRODUCT_PACKAGES += \
+ android.hardware.audio@7.0 \
+ android.hardware.audio.common@7.0 \
+ android.hardware.audio.common@7.0-util \
+ android.hardware.audio@7.0-impl \
+ android.hardware.audio.effect@7.0 \
+ android.hardware.audio.effect@7.0-impl
+
# enable sound trigger hidl hal 2.3
PRODUCT_PACKAGES += \
android.hardware.soundtrigger@2.3-impl
diff --git a/hal/audio_extn/Makefile.am b/hal/audio_extn/Makefile.am
index 5f55dc6..23dbd2c 100755
--- a/hal/audio_extn/Makefile.am
+++ b/hal/audio_extn/Makefile.am
@@ -218,7 +218,7 @@
lib_LTLIBRARIES += libhfp.la
libhfp_la_SOURCES = $(c_sources)
libhfp_la_LIBADD = $(GLIB_LIBS) -llog -lcutils -ltinyalsa
-libhfp_la_LIBADD += -ltinycompress -laudioroute -ldl -lexpat -laudioutils
+libhfp_la_LIBADD += -ltinycompress -laudioroute -ldl -lexpat -laudioutils -lutils
libhfp_la_LIBADD += -lm -lc -lresolv
if AUDIO_PARSER
diff --git a/hal/audio_extn/audio_extn.h b/hal/audio_extn/audio_extn.h
index 175715f..d75dd5a 100644
--- a/hal/audio_extn/audio_extn.h
+++ b/hal/audio_extn/audio_extn.h
@@ -629,7 +629,7 @@
};
// START: MST ==================================================
-#define MAX_CONTROLLERS 1
+#define MAX_CONTROLLERS 2
#define MAX_STREAMS_PER_CONTROLLER 2
// END: MST ==================================================
diff --git a/hal/audio_extn/spkr_protection.c b/hal/audio_extn/spkr_protection.c
index 571b4f3..c7f5726 100644
--- a/hal/audio_extn/spkr_protection.c
+++ b/hal/audio_extn/spkr_protection.c
@@ -30,7 +30,7 @@
/*
* Changes from Qualcomm Innovation Center are provided under the following license:
*
-* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
+* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted (subject to the limitations in the
@@ -1370,8 +1370,10 @@
}
thermal_fd = open(wsa_path, O_RDONLY);
if (thermal_fd > 0) {
- if ((ret = read(thermal_fd, buf, sizeof(buf))) >= 0)
+ if ((ret = read(thermal_fd, buf, sizeof(buf))) >= 0) {
+ buf[ret-1] = '\0';
t0_spk_1 = atoi(buf);
+ }
else
ALOGE("%s: read fail for %s err:%d\n",
__func__, wsa_path, ret);
@@ -1404,8 +1406,10 @@
}
thermal_fd = open(wsa_path, O_RDONLY);
if (thermal_fd > 0) {
- if ((ret = read(thermal_fd, buf, sizeof(buf))) >= 0)
+ if ((ret = read(thermal_fd, buf, sizeof(buf))) >= 0) {
+ buf[ret-1] = '\0';
t0_spk_2 = atoi(buf);
+ }
else
ALOGE("%s: read fail for %s err:%d\n",
__func__, wsa_path, ret);
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 3b23cf5..256d0b0 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -2369,7 +2369,7 @@
/* must be called with hw device mutex locked */
static int read_hdmi_sink_caps(struct stream_out *out)
{
- int ret = 0, i = 0, j = 0;
+ int ret = 0, i = 0, j = 0, rc = 0;
int channels = platform_edid_get_max_channels_v2(out->dev->platform,
out->extconn.cs.controller,
out->extconn.cs.stream);
@@ -2377,11 +2377,11 @@
reset_hdmi_sink_caps(out);
/* Cache ext disp type */
- ret = platform_get_ext_disp_type_v2(adev->platform,
+ rc = platform_get_ext_disp_type_v2(adev->platform,
out->extconn.cs.controller,
out->extconn.cs.stream);
- if(ret < 0) {
- ALOGE("%s: Failed to query disp type, ret:%d", __func__, ret);
+ if(rc < 0) {
+ ALOGE("%s: Failed to query disp type, rc:%d", __func__, rc);
return -EINVAL;
}
@@ -2397,6 +2397,10 @@
out->supported_channel_masks[i++] = AUDIO_CHANNEL_OUT_QUAD;
out->supported_channel_masks[i++] = AUDIO_CHANNEL_OUT_SURROUND;
out->supported_channel_masks[i++] = AUDIO_CHANNEL_OUT_2POINT1;
+ case 2:
+ ALOGV("%s: HDMI supports 2 channels", __func__);
+ out->supported_channel_masks[i++] = AUDIO_CHANNEL_OUT_STEREO;
+ out->supported_channel_masks[i++] = AUDIO_CHANNEL_OUT_MONO;
break;
default:
ALOGE("invalid/nonstandard channal count[%d]",channels);
@@ -4437,12 +4441,13 @@
ALOGE("%s: pcm stream not ready", __func__);
goto error_open;
}
+
+ out_set_mmap_volume(&out->stream, out->volume_l, out->volume_r);
ret = pcm_start(out->pcm);
if (ret < 0) {
ALOGE("%s: MMAP pcm_start failed ret %d", __func__, ret);
goto error_open;
}
- out_set_mmap_volume(&out->stream, out->volume_l, out->volume_r);
} else if (!is_offload_usecase(out->usecase)) {
unsigned int flags = PCM_OUT;
unsigned int pcm_open_retry_count = 0;
@@ -4936,7 +4941,7 @@
pthread_mutex_unlock(&out->position_query_lock);
ALOGVV("%s signed frames %lld written frames %lld kernel frames %lld dsp frames %lld",
- __func__, signed_frames, written_frames, kernel_frames, dsp_frames);
+ __func__, (long long)signed_frames, (long long)written_frames, (long long)kernel_frames, (long long)dsp_frames);
return actual_frames_rendered;
}
@@ -5520,6 +5525,8 @@
if (err == 0) {
out->extconn.cs.controller = ext_controller;
out->extconn.cs.stream = ext_stream;
+ adev->ext_controller = out->extconn.cs.controller;
+ adev->ext_stream = out->extconn.cs.stream;
ALOGD("%s: usecase(%s) new controller/stream (%d/%d)", __func__,
use_case_table[out->usecase], out->extconn.cs.controller,
out->extconn.cs.stream);
@@ -8336,6 +8343,8 @@
out->prev_card_status_offline = false;
out->pspd_coeff_sent = false;
out->mmap_shared_memory_fd = -1; // not open
+ out->extconn.cs.controller = adev->ext_controller;
+ out->extconn.cs.stream = adev->ext_stream;
if ((flags & AUDIO_OUTPUT_FLAG_BD) &&
(property_get_bool("vendor.audio.matrix.limiter.enable", false)))
@@ -8343,8 +8352,7 @@
if (direct_dev &&
(audio_is_linear_pcm(out->format) ||
- config->format == AUDIO_FORMAT_DEFAULT) &&
- out->flags == AUDIO_OUTPUT_FLAG_NONE) {
+ config->format == AUDIO_FORMAT_DEFAULT)) {
audio_format_t req_format = config->format;
audio_channel_mask_t req_channel_mask = config->channel_mask;
uint32_t req_sample_rate = config->sample_rate;
@@ -9449,6 +9457,16 @@
if (ret < 0) {
ALOGE("%s: Failed to query disp type, ret:%d", __func__, ret);
} else {
+ // Update ctl and stream values for all the existing streams during HDMI connection,
+ // as adev_open_output_stream() doesn't get called for existing streams and values
+ // remain unupdated for those streams.
+ list_for_each(node, &adev->active_outputs_list) {
+ streams_output_ctxt_t *out_ctxt = node_to_item(node,
+ streams_output_ctxt_t,
+ list);
+ out_ctxt->output->extconn.cs.controller = controller;
+ out_ctxt->output->extconn.cs.stream = stream;
+ }
platform_cache_edid_v2(adev->platform, controller, stream);
}
} else if (audio_is_usb_out_device(device) || audio_is_usb_in_device(device)) {
diff --git a/hal/audio_hw.h b/hal/audio_hw.h
index d65d94a..a7e19bf 100644
--- a/hal/audio_hw.h
+++ b/hal/audio_hw.h
@@ -849,6 +849,8 @@
Hashmap *io_streams_map;
bool a2dp_started;
bool ha_proxy_enable;
+ int ext_controller;
+ int ext_stream;
amplifier_device_t *amp;
};
diff --git a/hal/msm8974/hw_info.c b/hal/msm8974/hw_info.c
index c219618..04e0a2a 100755
--- a/hal/msm8974/hw_info.c
+++ b/hal/msm8974/hw_info.c
@@ -2,7 +2,7 @@
* Copyright (c) 2013-2021, The Linux Foundation. All rights reserved.
*
* Changes from Qualcomm Innovation Center are provided under the following license:
- * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
* SPDX-License-Identifier: BSD-3-Clause-Clear
*
* Redistribution and use in source and binary forms, with or without
@@ -633,6 +633,9 @@
} else if (!strncmp(snd_card_name, "lahaina-yupikidp-snd-card",
sizeof("lahaina-yupikidp-snd-card"))) {
strlcpy(hw_info->name, "yupik", sizeof(hw_info->name));
+ } else if (!strncmp(snd_card_name, "lahaina-yupikidprb3-snd-card",
+ sizeof("lahaina-yupikidprb3-snd-card"))) {
+ strlcpy(hw_info->name, "yupik", sizeof(hw_info->name));
} else if (!strncmp(snd_card_name, "lahaina-yupikqrd-snd-card",
sizeof("lahaina-yupikqrd-snd-card"))) {
strlcpy(hw_info->name, "yupik", sizeof(hw_info->name));
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 68b91b4..d71ad0f 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -80,6 +80,7 @@
#define PLATFORM_INFO_XML_PATH_SHIMA_QRD "audio_platform_info_shimaqrd.xml"
#define PLATFORM_INFO_XML_PATH_YUPIK_QRD "audio_platform_info_yupikqrd.xml"
#define PLATFORM_INFO_XML_PATH_YUPIK_IDP "audio_platform_info_yupikidp.xml"
+#define PLATFORM_INFO_XML_PATH_YUPIK_IDPRB3 "audio_platform_info_yupikidprb3.xml"
#define PLATFORM_INFO_XML_PATH_SCUBA_IDP "audio_platform_info_scubaidp.xml"
#define PLATFORM_INFO_XML_PATH_SCUBA_QRD "audio_platform_info_scubaqrd.xml"
#define PLATFORM_INFO_XML_PATH_SA8295_ADP "audio_platform_info_sa8295.xml"
@@ -1960,6 +1961,8 @@
sizeof("lahaina-shimaqrd-snd-card")) ||
!strncmp(snd_card_name, "lahaina-yupikidp-snd-card",
sizeof("lahaina-yupikidp-snd-card")) ||
+ !strncmp(snd_card_name, "lahaina-yupikidprb3-snd-card",
+ sizeof("lahaina-yupikidprb3-snd-card")) ||
!strncmp(snd_card_name, "lahaina-yupikqrd-snd-card",
sizeof("lahaina-yupikqrd-snd-card")) ||
!strncmp(snd_card_name, "kona-qrd-snd-card",
@@ -3669,6 +3672,10 @@
sizeof("lahaina-yupikidp-snd-card"))) {
platform_info_init(get_xml_file_path(PLATFORM_INFO_XML_PATH_YUPIK_IDP),
my_data, PLATFORM);
+ } else if (!strncmp(snd_card_name, "lahaina-yupikidprb3-snd-card",
+ sizeof("lahaina-yupikidprb3-snd-card"))) {
+ platform_info_init(get_xml_file_path(PLATFORM_INFO_XML_PATH_YUPIK_IDPRB3),
+ my_data, PLATFORM);
} else if (!strncmp(snd_card_name, "lahaina-yupikqrd-snd-card",
sizeof("lahaina-yupikqrd-snd-card"))) {
platform_info_init(get_xml_file_path(PLATFORM_INFO_XML_PATH_YUPIK_QRD),
@@ -6576,7 +6583,7 @@
*/
int platform_get_display_port_ctl_index(int controller, int stream) {
- if (controller < 0 || controller >= MAX_CONTROLLERS ||
+ if (controller < 0 || controller > MAX_CONTROLLERS ||
stream < 0 || stream >= MAX_STREAMS_PER_CONTROLLER) {
ALOGE("%s: Invalid controller/stream - %d/%d",
__func__, controller, stream);
@@ -6594,9 +6601,10 @@
struct mixer_ctl *ctl = NULL;
int ctl_index = 0;
const char *ctl_name_prefix = "External Display";
+ const char *ctl_name_prefix2 = "External HDMI";
const char *ctl_name_suffix = "Audio Device";
char mixer_ctl_name[MIXER_PATH_MAX_LENGTH] = {0};
- int device_values[2] = {-1, -1};
+ long int device_values[2] = {-1, -1};
if (!audio_extn_is_display_port_enabled()) {
ALOGE("%s: display port is not supported", __func__);
@@ -6610,9 +6618,12 @@
return -EINVAL;
}
- if (0 == ctl_index)
+ if (ctl_index < 2)
snprintf(mixer_ctl_name, sizeof(mixer_ctl_name),
"%s %s", ctl_name_prefix, ctl_name_suffix);
+ else if (ctl_index < 4)
+ snprintf(mixer_ctl_name, sizeof(mixer_ctl_name),
+ "%s %s", ctl_name_prefix2, ctl_name_suffix);
else
snprintf(mixer_ctl_name, sizeof(mixer_ctl_name),
"%s%d %s", ctl_name_prefix, ctl_index, ctl_name_suffix);
@@ -6629,7 +6640,7 @@
return -EINVAL;
}
- ALOGV("%s: controller/stream: %d/%d", __func__, device_values[0],
+ ALOGV("%s: controller/stream: %ld/%ld", __func__, device_values[0],
device_values[1]);
return mixer_ctl_set_array(ctl, device_values, ARRAY_SIZE(device_values));
@@ -6664,12 +6675,16 @@
struct audio_device *adev = my_data->adev;
struct mixer_ctl *ctl = NULL;
const char *ctl_name_prefix = "External Display";
+ const char *ctl_name_prefix2 = "External HDMI";
const char *ctl_name_suffix = "Type";
char mixer_ctl_name[MIXER_PATH_MAX_LENGTH] = {0};
- if (0 == ctl_index)
+ if (ctl_index < 2)
snprintf(mixer_ctl_name, sizeof(mixer_ctl_name),
"%s %s", ctl_name_prefix, ctl_name_suffix);
+ else if (ctl_index < 4)
+ snprintf(mixer_ctl_name, sizeof(mixer_ctl_name),
+ "%s %s", ctl_name_prefix2, ctl_name_suffix);
else
snprintf(mixer_ctl_name, sizeof(mixer_ctl_name),
"%s%d %s", ctl_name_prefix, ctl_index, ctl_name_suffix);
@@ -6732,7 +6747,7 @@
controller = out->extconn.cs.controller;
stream = out->extconn.cs.stream;
- if (controller < 0 || controller >= MAX_CONTROLLERS ||
+ if (controller < 0 || controller > MAX_CONTROLLERS ||
stream < 0 || stream >= MAX_STREAMS_PER_CONTROLLER) {
ALOGE("%s: Invalid controller/stream - %d/%d",
__func__, controller, stream);
@@ -10210,7 +10225,7 @@
controller = usecase->stream.out->extconn.cs.controller;
stream = usecase->stream.out->extconn.cs.stream;
- if (controller < 0 || controller >= MAX_CONTROLLERS ||
+ if (controller < 0 || controller > MAX_CONTROLLERS ||
stream < 0 || stream >= MAX_STREAMS_PER_CONTROLLER) {
controller = 0;
stream = 0;
@@ -11919,7 +11934,7 @@
return -EINVAL;
}
- if (controller < 0 || controller >= MAX_CONTROLLERS ||
+ if (controller < 0 || controller > MAX_CONTROLLERS ||
stream < 0 || stream >= MAX_STREAMS_PER_CONTROLLER) {
ALOGE("%s: Invalid controller/stream - %d/%d",
__func__, controller, stream);
@@ -12036,7 +12051,7 @@
int backend_idx;
snd_device_t snd_device;
- if (controller < 0 || controller >= MAX_CONTROLLERS ||
+ if (controller < 0 || controller > MAX_CONTROLLERS ||
stream < 0 || stream >= MAX_STREAMS_PER_CONTROLLER) {
ALOGE("%s: Invalid controller/stream - %d/%d",
__func__, controller, stream);
@@ -12994,7 +13009,7 @@
int *controller, int *stream) {
str_parms_get_int(parms, "controller", controller);
str_parms_get_int(parms, "stream", stream);
- if (*controller < 0 || *controller >= MAX_CONTROLLERS ||
+ if (*controller < 0 || *controller > MAX_CONTROLLERS ||
*stream < 0 || *stream >= MAX_STREAMS_PER_CONTROLLER) {
*controller = 0;
*stream = 0;
diff --git a/post_proc/bundle.c b/post_proc/bundle.c
index a9f95b9..b9d310d 100644
--- a/post_proc/bundle.c
+++ b/post_proc/bundle.c
@@ -902,7 +902,8 @@
}
if (pCmdData == NULL || cmdSize != 2 * sizeof(uint32_t) ||
replySize == NULL || *replySize < 2*sizeof(int32_t)) {
- return -EINVAL;
+ status = -EINVAL;
+ goto exit;
}
memcpy(pReplyData, pCmdData, sizeof(int32_t)*2);
} break;
@@ -946,7 +947,8 @@
cmdSize, pCmdData, *replySize, pReplyData);
if (cmdSize != sizeof(uint32_t) || pCmdData == NULL
|| pReplyData == NULL || *replySize != sizeof(int)) {
- return -EINVAL;
+ status = -EINVAL;
+ goto exit;
}
uint32_t value = *(uint32_t *)pCmdData;
if (context->ops.set_hw_acc_mode)
diff --git a/stt_meta/stt_meta_extract.c b/stt_meta/stt_meta_extract.c
index d185309..a8e8a46 100644
--- a/stt_meta/stt_meta_extract.c
+++ b/stt_meta/stt_meta_extract.c
@@ -390,7 +390,7 @@
if (property_get_bool("ro.vendor.audio.sdk.fluence.nn.enabled",false)) {
if((!strncmp("fluencenn", fluence_property, sizeof("fluencenn"))) ||
- (!strncmp("none", fluence_property, sizeof("none"))))
+ (!strncmp("fluence", fluence_property, sizeof("fluence"))))
fv = FV_13;
else
fv = FV_11;