Merge "hal: update snd device selection in auto hal"
diff --git a/configs/atoll/mixer_paths_qrd.xml b/configs/atoll/mixer_paths_qrd.xml
index af769e6..bfa2a6d 100644
--- a/configs/atoll/mixer_paths_qrd.xml
+++ b/configs/atoll/mixer_paths_qrd.xml
@@ -146,6 +146,8 @@
<!-- HFP end -->
<!-- echo reference -->
<ctl name="AUDIO_REF_EC_UL1 MUX" value="None" />
+ <ctl name="AUDIO_REF_EC_UL10 MUX" value="None" />
+ <ctl name="EC Reference Channels" value="Zero"/>
<!-- usb headset -->
<ctl name="AFE_PCM_RX Audio Mixer MultiMedia1" value="0" />
<ctl name="AFE_PCM_RX Audio Mixer MultiMedia2" value="0" />
@@ -307,8 +309,12 @@
<!-- TX Controls -->
<ctl name="TX_CDC_DMA_TX_3 Channels" value="One" />
<ctl name="MultiMedia1 Mixer TX_CDC_DMA_TX_3" value="0" />
+ <ctl name="ADC1_MIXER Switch" value="0" />
+ <ctl name="ADC1 MUX" value="ZERO" />
<ctl name="ADC2_MIXER Switch" value="0" />
<ctl name="ADC2 MUX" value="ZERO" />
+ <ctl name="ADC3_MIXER Switch" value="0" />
+ <ctl name="ADC3 MUX" value="ZERO" />
<ctl name="TX_AIF1_CAP Mixer DEC0" value="0" />
<ctl name="TX_AIF1_CAP Mixer DEC1" value="0" />
<ctl name="TX_AIF1_CAP Mixer DEC2" value="0" />
@@ -434,30 +440,56 @@
<path name="echo-reference">
<ctl name="AUDIO_REF_EC_UL1 MUX" value="WSA_CDC_DMA_RX_0" />
+ <ctl name="EC Reference Channels" value="One"/>
+ </path>
+
+ <path name="echo-reference handset">
+ <ctl name="AUDIO_REF_EC_UL1 MUX" value="RX_CDC_DMA_RX_0" />
+ <ctl name="EC Reference Channels" value="One"/>
</path>
<path name="echo-reference headphones">
<ctl name="AUDIO_REF_EC_UL1 MUX" value="RX_CDC_DMA_RX_0" />
+ <ctl name="EC Reference Channels" value="Two"/>
+ </path>
+
+ <path name="echo-reference headset">
+ <path name="echo-reference headphones" />
</path>
<path name="echo-reference display-port">
<ctl name="AUDIO_REF_EC_UL1 MUX" value="DISPLAY_PORT" />
+ <ctl name="EC Reference Channels" value="Two"/>
</path>
<path name="echo-reference headphones-44.1">
<ctl name="AUDIO_REF_EC_UL1 MUX" value="RX_CDC_DMA_RX_0" />
+ <ctl name="EC Reference Channels" value="Two"/>
</path>
<path name="echo-reference-voip">
<ctl name="AUDIO_REF_EC_UL10 MUX" value="WSA_CDC_DMA_RX_0" />
+ <ctl name="EC Reference Channels" value="One"/>
</path>
<path name="echo-reference-voip handset">
<ctl name="AUDIO_REF_EC_UL10 MUX" value="RX_CDC_DMA_RX_0" />
+ <ctl name="EC Reference Channels" value="One"/>
</path>
<path name="echo-reference-voip headphones">
<ctl name="AUDIO_REF_EC_UL10 MUX" value="RX_CDC_DMA_RX_0" />
+ <ctl name="EC Reference Channels" value="Two"/>
+ </path>
+
+ <path name="echo-reference-voip display-port">
+ <ctl name="AUDIO_REF_EC_UL10 MUX" value="DISPLAY_PORT" />
+ <ctl name="EC Reference Channels" value="Two"/>
+ </path>
+
+ <path name="echo-reference-voip headphones-44.1">
+ <ctl name="AUDIO_REF_EC_UL10 MUX" value="RX_CDC_DMA_RX_0" />
+ <ctl name="EC Reference Channels" value="Two"/>
</path>
<path name="deep-buffer-playback">
@@ -1746,6 +1778,10 @@
<ctl name="MultiMedia1 Mixer TX_CDC_DMA_TX_3" value="1" />
</path>
+ <path name="audio-record headset-mic">
+ <ctl name="MultiMedia1 Mixer TX_CDC_DMA_TX_3" value="1" />
+ </path>
+
<path name="audio-record usb-headset-mic">
<ctl name="MultiMedia1 Mixer USB_AUDIO_TX" value="1" />
</path>
@@ -1771,6 +1807,10 @@
<ctl name="MultiMedia8 Mixer TX_CDC_DMA_TX_3" value="1" />
</path>
+ <path name="audio-record-compress headset-mic">
+ <ctl name="MultiMedia8 Mixer TX_CDC_DMA_TX_3" value="1" />
+ </path>
+
<path name="audio-record-compress bt-sco">
<ctl name="MultiMedia8 Mixer SLIM_7_TX" value="1" />
</path>
@@ -1833,6 +1873,10 @@
<ctl name="MultiMedia1 Mixer VOC_REC_UL" value="1" />
</path>
+ <path name="incall-rec-uplink headste-mic">
+ <ctl name="MultiMedia1 Mixer VOC_REC_UL" value="1" />
+ </path>
+
<path name="incall-rec-uplink bt-sco">
<path name="incall-rec-uplink" />
</path>
@@ -1857,6 +1901,10 @@
<ctl name="MultiMedia8 Mixer VOC_REC_UL" value="1" />
</path>
+ <path name="incall-rec-uplink-compress headset-mic">
+ <ctl name="MultiMedia8 Mixer VOC_REC_UL" value="1" />
+ </path>
+
<path name="incall-rec-uplink-compress bt-sco">
<path name="incall-rec-uplink-compress" />
</path>
@@ -1881,6 +1929,10 @@
<ctl name="MultiMedia1 Mixer VOC_REC_DL" value="1" />
</path>
+ <path name="incall-rec-downlink headset-mic">
+ <ctl name="MultiMedia1 Mixer VOC_REC_DL" value="1" />
+ </path>
+
<path name="incall-rec-downlink bt-sco">
<path name="incall-rec-downlink" />
</path>
@@ -1905,6 +1957,10 @@
<ctl name="MultiMedia8 Mixer VOC_REC_DL" value="1" />
</path>
+ <path name="incall-rec-downlink-compress headset-mic">
+ <ctl name="MultiMedia8 Mixer VOC_REC_DL" value="1" />
+ </path>
+
<path name="incall-rec-downlink-compress bt-sco">
<path name="incall-rec-downlink-compress" />
</path>
@@ -1930,6 +1986,10 @@
<path name="incall-rec-downlink" />
</path>
+ <path name="incall-rec-uplink-and-downlink headset-mic">
+ <path name="incall-rec-uplink-and-downlink" />
+ </path>
+
<path name="incall-rec-uplink-and-downlink bt-sco">
<path name="incall-rec-uplink-and-downlink" />
</path>
@@ -1955,6 +2015,10 @@
<path name="incall-rec-downlink-compress" />
</path>
+ <path name="incall-rec-uplink-and-downlink-compress headset-mic">
+ <path name="incall-rec-uplink-and-downlink-compress" />
+ </path>
+
<path name="incall-rec-uplink-and-downlink-compress bt-sco">
<path name="incall-rec-uplink-and-downlink-compress" />
</path>
@@ -2207,6 +2271,10 @@
<ctl name="MultiMedia10 Mixer TX_CDC_DMA_TX_3" value="1" />
</path>
+ <path name="audio-record-voip headset-mic">
+ <ctl name="MultiMedia10 Mixer TX_CDC_DMA_TX_3" value="1" />
+ </path>
+
<path name="audio-record-voip usb-headset-mic">
<ctl name="MultiMedia10 Mixer USB_AUDIO_TX" value="1" />
</path>
@@ -2495,6 +2563,10 @@
<ctl name="MultiMedia16 Mixer TX_CDC_DMA_TX_3" value="1" />
</path>
+ <path name="mmap-record headset-mic">
+ <ctl name="MultiMedia16 Mixer TX_CDC_DMA_TX_3" value="1" />
+ </path>
+
<path name="mmap-record bt-sco">
<ctl name="MultiMedia16 Mixer SLIM_7_TX" value="1" />
</path>
@@ -2663,13 +2735,22 @@
<path name="amic3">
<ctl name="TX DEC0 MUX" value="SWR_MIC" />
- <ctl name="TX SMIC MUX0" value="ADC2" />
+ <ctl name="TX SMIC MUX0" value="ADC1" />
<ctl name="TX_CDC_DMA_TX_3 Channels" value="One" />
<ctl name="TX_AIF1_CAP Mixer DEC0" value="1" />
<ctl name="ADC2_MIXER Switch" value="1" />
<ctl name="ADC2 MUX" value="INP3" />
</path>
+ <path name="amic4">
+ <ctl name="TX DEC0 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX0" value="ADC2" />
+ <ctl name="TX_CDC_DMA_TX_3 Channels" value="One" />
+ <ctl name="TX_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="ADC3_MIXER Switch" value="1" />
+ <ctl name="ADC3 MUX" value="INP4" />
+ </path>
+
<path name="dmic1">
<ctl name="TX_CDC_DMA_TX_3 Channels" value="One" />
<ctl name="TX_AIF1_CAP Mixer DEC0" value="1" />
@@ -2694,7 +2775,7 @@
<ctl name="TX DMIC MUX0" value="DMIC3" />
</path>
- <path name="dmic5">
+ <path name="dmic5">
<ctl name="TX_CDC_DMA_TX_3 Channels" value="One" />
<ctl name="TX_AIF1_CAP Mixer DEC0" value="1" />
<ctl name="TX DMIC MUX0" value="DMIC4" />
@@ -2708,24 +2789,24 @@
<path name="speaker">
<ctl name="WSA_CDC_DMA_RX_0 Channels" value="One" />
- <ctl name="WSA RX1 MUX" value="AIF1_PB" />
- <ctl name="WSA_RX1 INP0" value="RX1" />
- <ctl name="WSA_COMP2 Switch" value="1" />
- <ctl name="SpkrRight COMP Switch" value="1" />
- <ctl name="SpkrRight BOOST Switch" value="1" />
- <ctl name="SpkrRight VISENSE Switch" value="1" />
- <ctl name="SpkrRight SWR DAC_Port Switch" value="1" />
+ <ctl name="WSA RX0 MUX" value="AIF1_PB" />
+ <ctl name="WSA_RX0 INP0" value="RX0" />
+ <ctl name="WSA_COMP1 Switch" value="1" />
+ <ctl name="SpkrLeft COMP Switch" value="1" />
+ <ctl name="SpkrLeft BOOST Switch" value="1" />
+ <ctl name="SpkrLeft VISENSE Switch" value="1" />
+ <ctl name="SpkrLeft SWR DAC_Port Switch" value="1" />
</path>
<path name="speaker-mono">
<ctl name="WSA_CDC_DMA_RX_0 Channels" value="One" />
- <ctl name="WSA RX1 MUX" value="AIF1_PB" />
- <ctl name="WSA_RX1 INP0" value="RX1" />
- <ctl name="WSA_COMP2 Switch" value="1" />
- <ctl name="SpkrRight COMP Switch" value="1" />
- <ctl name="SpkrRight BOOST Switch" value="1" />
- <ctl name="SpkrRight VISENSE Switch" value="1" />
- <ctl name="SpkrRight SWR DAC_Port Switch" value="1" />
+ <ctl name="WSA RX0 MUX" value="AIF1_PB" />
+ <ctl name="WSA_RX0 INP0" value="RX0" />
+ <ctl name="WSA_COMP1 Switch" value="1" />
+ <ctl name="SpkrLeft COMP Switch" value="1" />
+ <ctl name="SpkrLeft BOOST Switch" value="1" />
+ <ctl name="SpkrLeft VISENSE Switch" value="1" />
+ <ctl name="SpkrLeft SWR DAC_Port Switch" value="1" />
</path>
<path name="speaker-mono-2">
@@ -2764,11 +2845,11 @@
</path>
<path name="speaker-mic">
- <path name="dmic3" />
+ <path name="amic3" />
</path>
<path name="speaker-protected">
- <ctl name="WSA_AIF_VI Mixer WSA_SPKR_VI_2" value="1" />
+ <ctl name="WSA_AIF_VI Mixer WSA_SPKR_VI_1" value="1" />
<ctl name="WSA_CDC_DMA_0 TX Format" value="PACKED_16B" />
<path name="speaker" />
<ctl name="VI_FEED_TX Channels" value="One" />
@@ -2776,7 +2857,7 @@
</path>
<path name="voice-speaker-protected">
- <ctl name="WSA_AIF_VI Mixer WSA_SPKR_VI_2" value="1" />
+ <ctl name="WSA_AIF_VI Mixer WSA_SPKR_VI_1" value="1" />
<ctl name="WSA_CDC_DMA_0 TX Format" value="PACKED_16B" />
<path name="speaker-mono" />
<ctl name="VI_FEED_TX Channels" value="One" />
@@ -2784,11 +2865,7 @@
</path>
<path name="voice-speaker-2-protected">
- <ctl name="WSA_AIF_VI Mixer WSA_SPKR_VI_2" value="1" />
- <ctl name="WSA_CDC_DMA_0 TX Format" value="PACKED_16B" />
- <path name="speaker-mono-2" />
- <ctl name="VI_FEED_TX Channels" value="One" />
- <ctl name="WSA_RX_0_VI_FB_RCH_MUX" value="WSA_CDC_DMA_TX_0" />
+ <path name="voice-speaker-protected" />
</path>
<path name="voice-speaker-stereo-protected">
@@ -2815,7 +2892,7 @@
</path>
<path name="handset-mic">
- <path name="dmic2" />
+ <path name="amic1" />
</path>
<path name="headphones">
@@ -2980,18 +3057,19 @@
<!-- Dual MIC devices -->
<path name="handset-dmic-endfire">
<ctl name="TX_CDC_DMA_TX_3 Channels" value="Two" />
+ <ctl name="TX DEC0 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX0" value="ADC0" />
<ctl name="TX_AIF1_CAP Mixer DEC0" value="1" />
- <ctl name="TX DMIC MUX0" value="DMIC1" />
+ <ctl name="ADC1_MIXER Switch" value="1" />
+ <ctl name="TX DEC1 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX1" value="ADC1" />
<ctl name="TX_AIF1_CAP Mixer DEC1" value="1" />
- <ctl name="TX DMIC MUX0" value="DMIC3" />
+ <ctl name="ADC2_MIXER Switch" value="1" />
+ <ctl name="ADC2 MUX" value="INP3" />
</path>
<path name="speaker-dmic-endfire">
- <ctl name="TX_CDC_DMA_TX_3 Channels" value="Two" />
- <ctl name="TX_AIF1_CAP Mixer DEC0" value="1" />
- <ctl name="TX DMIC MUX0" value="DMIC2" />
- <ctl name="TX_AIF1_CAP Mixer DEC1" value="1" />
- <ctl name="TX DMIC MUX0" value="DMIC1" />
+ <path name="handset-dmic-endfire" />
</path>
<path name="dmic-endfire">
@@ -3071,7 +3149,7 @@
</path>
<path name="voice-tty-vco-handset-mic">
- <path name="dmic3" />
+ <path name="amic3" />
</path>
<path name="unprocessed-handset-mic">
@@ -3090,14 +3168,40 @@
<path name="three-mic" />
</path>
+ <path name="three-mic">
+ <ctl name="TX_CDC_DMA_TX_3 Channels" value="Three" />
+ <ctl name="TX DEC0 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX0" value="ADC0" />
+ <ctl name="TX_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="ADC1_MIXER Switch" value="1" />
+ <ctl name="TX DEC1 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX1" value="ADC1" />
+ <ctl name="TX_AIF1_CAP Mixer DEC1" value="1" />
+ <ctl name="ADC2_MIXER Switch" value="1" />
+ <ctl name="ADC2 MUX" value="INP3" />
+ <ctl name="TX DEC2 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX2" value="ADC2" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="ADC3_MIXER Switch" value="1" />
+ <ctl name="ADC3 MUX" value="INP4" />
+ </path>
+
<path name="speaker-tmic">
- <ctl name="TX_CDC_DMA_TX_3 Channels" value="Three" />
- <ctl name="TX_AIF1_CAP Mixer DEC0" value="1" />
- <ctl name="TX DMIC MUX0" value="DMIC2" />
- <ctl name="TX_AIF1_CAP Mixer DEC1" value="1" />
- <ctl name="TX DMIC MUX1" value="DMIC1" />
- <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
- <ctl name="TX DMIC MUX2" value="DMIC3" />
+ <ctl name="TX_CDC_DMA_TX_3 Channels" value="Three" />
+ <ctl name="TX DEC0 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX0" value="ADC0" />
+ <ctl name="TX_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="ADC1_MIXER Switch" value="1" />
+ <ctl name="TX DEC1 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX1" value="ADC1" />
+ <ctl name="TX_AIF1_CAP Mixer DEC1" value="1" />
+ <ctl name="ADC2_MIXER Switch" value="1" />
+ <ctl name="ADC2 MUX" value="INP3" />
+ <ctl name="TX DEC2 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX2" value="ADC2" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="ADC3_MIXER Switch" value="1" />
+ <ctl name="ADC3 MUX" value="INP4" />
</path>
<path name="voice-speaker-tmic">
@@ -3105,15 +3209,6 @@
</path>
<path name="speaker-qmic">
- <ctl name="TX_CDC_DMA_TX_3 Channels" value="Four" />
- <ctl name="TX_AIF1_CAP Mixer DEC0" value="1" />
- <ctl name="TX DMIC MUX0" value="DMIC2" />
- <ctl name="TX_AIF1_CAP Mixer DEC1" value="1" />
- <ctl name="TX DMIC MUX1" value="DMIC1" />
- <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
- <ctl name="TX DMIC MUX2" value="DMIC3" />
- <ctl name="TX_AIF1_CAP Mixer DEC3" value="1" />
- <ctl name="TX DMIC MUX3" value="DMIC4" />
</path>
<path name="voice-speaker-qmic">
diff --git a/configs/atoll/sound_trigger_mixer_paths_qrd.xml b/configs/atoll/sound_trigger_mixer_paths_qrd.xml
index 8e6513c..487ea11 100644
--- a/configs/atoll/sound_trigger_mixer_paths_qrd.xml
+++ b/configs/atoll/sound_trigger_mixer_paths_qrd.xml
@@ -81,6 +81,12 @@
<ctl name="EC Reference Channels" value="Zero"/>
<ctl name="EC Reference Bit Format" value="0"/>
<ctl name="EC Reference SampleRate" value="0"/>
+ <ctl name="ADC1_MIXER Switch" value="0" />
+ <ctl name="ADC2_MIXER Switch" value="0" />
+ <ctl name="ADC3_MIXER Switch" value="0" />
+ <ctl name="ADC2 MUX" value="ZERO" />
+ <ctl name="ADC3 MUX" value="ZERO" />
+ <ctl name="ADC4 MUX" value="ZERO" />
<path name="listen-voice-wakeup-1">
<ctl name="LSM1 Mixer VA_CDC_DMA_TX_0" value="1" />
@@ -212,8 +218,9 @@
<path name="listen-ape-handset-mic">
<ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
- <ctl name="VA DEC0 MUX" value="MSM_DMIC" />
- <ctl name="VA DMIC MUX0" value="DMIC1" />
+ <ctl name="VA DEC0 MUX" value="SWR_MIC" />
+ <ctl name="VA SMIC MUX0" value="ADC0" />
+ <ctl name="ADC1_MIXER Switch" value="1" />
</path>
<path name="listen-ape-handset-mic-preproc">
@@ -222,41 +229,36 @@
<path name="listen-ape-handset-dmic">
<ctl name="VA_CDC_DMA_TX_0 Channels" value="Two" />
+ <ctl name="VA DEC0 MUX" value="SWR_MIC" />
+ <ctl name="VA SMIC MUX0" value="ADC0" />
<ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="ADC1_MIXER Switch" value="1" />
+ <ctl name="VA DEC1 MUX" value="SWR_MIC" />
+ <ctl name="VA SMIC MUX1" value="ADC2" />
<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="DMIC1" />
- <ctl name="VA DMIC MUX1" value="DMIC2" />
+ <ctl name="ADC2_MIXER Switch" value="1" />
+ <ctl name="ADC2 MUX" value="INP3" />
</path>
<path name="listen-ape-handset-tmic">
<ctl name="VA_CDC_DMA_TX_0 Channels" value="Three" />
+ <ctl name="VA DEC0 MUX" value="SWR_MIC" />
+ <ctl name="VA SMIC MUX0" value="ADC0" />
<ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="ADC1_MIXER Switch" value="1" />
+ <ctl name="VA DEC1 MUX" value="SWR_MIC" />
+ <ctl name="VA SMIC MUX1" value="ADC1" />
<ctl name="VA_AIF1_CAP Mixer DEC1" value="1" />
+ <ctl name="ADC2_MIXER Switch" value="1" />
+ <ctl name="ADC2 MUX" value="INP3" />
+ <ctl name="VA DEC2 MUX" value="SWR_MIC" />
+ <ctl name="VA SMIC MUX2" value="ADC2" />
<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="DMIC1" />
- <ctl name="VA DMIC MUX1" value="DMIC2" />
- <ctl name="VA DMIC MUX2" value="DMIC4" />
+ <ctl name="ADC3_MIXER Switch" value="1" />
+ <ctl name="ADC3 MUX" value="INP4" />
</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="DMIC1" />
- <ctl name="VA DMIC MUX1" value="DMIC2" />
- <ctl name="VA DMIC MUX2" value="DMIC3" />
- <ctl name="VA DMIC MUX3" value="DMIC4" />
</path>
<path name="listen-ape-headset-mic">
@@ -289,4 +291,8 @@
<ctl name="EC Reference SampleRate" value="48000"/>
</path>
+ <path name="echo-reference line">
+ <path name="echo-reference headset" />
+ </path>
+
</mixer>
diff --git a/configs/bengal/audio_policy_configuration.xml b/configs/bengal/audio_policy_configuration.xml
index a33356b..950b2b4 100644
--- a/configs/bengal/audio_policy_configuration.xml
+++ b/configs/bengal/audio_policy_configuration.xml
@@ -173,11 +173,6 @@
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="surround_sound" 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,AUDIO_CHANNEL_INDEX_MASK_3,AUDIO_CHANNEL_INDEX_MASK_4,AUDIO_CHANNEL_IN_5POINT1,AUDIO_CHANNEL_INDEX_MASK_6"/>
- </mixPort>
<mixPort name="usb_surround_sound" role="sink">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000,88200,96000,176400,192000"
@@ -358,8 +353,6 @@
sources="Telephony Rx"/>
<route type="mix" sink="primary input"
sources="Wired Headset Mic,BT SCO Headset Mic,FM Tuner,USB Device In,USB Headset In,Telephony Rx"/>
- <route type="mix" sink="surround_sound"
- sources="Built-In Mic,Built-In Back Mic"/>
<route type="mix" sink="usb_surround_sound"
sources="USB Device In,USB Headset In"/>
<route type="mix" sink="record_24"
diff --git a/configs/kona/kona.mk b/configs/kona/kona.mk
index cfd5a23..0b33ce4 100644
--- a/configs/kona/kona.mk
+++ b/configs/kona/kona.mk
@@ -401,7 +401,7 @@
PRODUCT_PROPERTY_OVERRIDES += \
vendor.audio.feature.a2dp_offload.enable=true \
vendor.audio.feature.afe_proxy.enable=true \
-vendor.audio.feature.anc_headset.enable=true \
+vendor.audio.feature.anc_headset.enable=false \
vendor.audio.feature.battery_listener.enable=true \
vendor.audio.feature.compr_cap.enable=false \
vendor.audio.feature.compress_in.enable=true \
diff --git a/configs/kona/mixer_paths.xml b/configs/kona/mixer_paths.xml
index 4163190..afed79a 100644
--- a/configs/kona/mixer_paths.xml
+++ b/configs/kona/mixer_paths.xml
@@ -1734,6 +1734,10 @@
<path name="audio-record-compress bt-sco" />
</path>
+ <path name="audio-record-compress headset-mic">
+ <ctl name="MultiMedia8 Mixer TX_CDC_DMA_TX_4" value="1" />
+ </path>
+
<path name="audio-record-compress usb-headset-mic">
<ctl name="MultiMedia8 Mixer USB_AUDIO_TX" value="1" />
</path>
@@ -1780,6 +1784,10 @@
<path name="low-latency-record bt-sco" />
</path>
+ <path name="low-latency-record headset-mic">
+ <ctl name="MultiMedia8 Mixer TX_CDC_DMA_TX_4" value="1" />
+ </path>
+
<path name="low-latency-record usb-headset-mic">
<ctl name="MultiMedia8 Mixer USB_AUDIO_TX" value="1" />
</path>
@@ -3236,6 +3244,10 @@
<ctl name="MultiMedia2 Mixer TX_CDC_DMA_TX_3" value="1" />
</path>
+ <path name="hifi-record headset-mic">
+ <ctl name="MultiMedia2 Mixer TX_CDC_DMA_TX_4" value="1" />
+ </path>
+
<path name="hifi-record usb-headset-mic">
<ctl name="MultiMedia2 Mixer USB_AUDIO_TX" value="1" />
</path>
diff --git a/configs/kona/mixer_paths_cdp.xml b/configs/kona/mixer_paths_cdp.xml
index 705de15..eeb6496 100644
--- a/configs/kona/mixer_paths_cdp.xml
+++ b/configs/kona/mixer_paths_cdp.xml
@@ -1609,6 +1609,10 @@
<ctl name="MultiMedia8 Mixer USB_AUDIO_TX" value="1" />
</path>
+ <path name="audio-record-compress headset-mic">
+ <ctl name="MultiMedia8 Mixer TX_CDC_DMA_TX_4" value="1" />
+ </path>
+
<path name="audio-record-compress2">
<ctl name="MultiMedia17 Mixer TX_CDC_DMA_TX_3" value="1" />
</path>
@@ -1655,6 +1659,10 @@
<ctl name="MultiMedia8 Mixer USB_AUDIO_TX" value="1" />
</path>
+ <path name="low-latency-record headset-mic">
+ <ctl name="MultiMedia8 Mixer TX_CDC_DMA_TX_4" value="1" />
+ </path>
+
<path name="low-latency-record capture-fm">
<ctl name="MultiMedia8 Mixer TERT_MI2S_TX" value="1" />
</path>
@@ -3061,6 +3069,10 @@
<ctl name="MultiMedia2 Mixer USB_AUDIO_TX" value="1" />
</path>
+ <path name="hifi-record headset-mic">
+ <ctl name="MultiMedia2 Mixer TX_CDC_DMA_TX_4" value="1" />
+ </path>
+
<path name="incall_music_uplink">
<ctl name="Incall_Music Audio Mixer MultiMedia9" value="1" />
</path>
diff --git a/configs/kona/mixer_paths_qrd.xml b/configs/kona/mixer_paths_qrd.xml
index be056b2..f76d7bd 100644
--- a/configs/kona/mixer_paths_qrd.xml
+++ b/configs/kona/mixer_paths_qrd.xml
@@ -1609,6 +1609,10 @@
<ctl name="MultiMedia8 Mixer USB_AUDIO_TX" value="1" />
</path>
+ <path name="audio-record-compress headset-mic">
+ <ctl name="MultiMedia8 Mixer TX_CDC_DMA_TX_4" value="1" />
+ </path>
+
<path name="audio-record-compress2">
<ctl name="MultiMedia17 Mixer TX_CDC_DMA_TX_3" value="1" />
</path>
@@ -1655,6 +1659,10 @@
<ctl name="MultiMedia8 Mixer USB_AUDIO_TX" value="1" />
</path>
+ <path name="low-latency-record headset-mic">
+ <ctl name="MultiMedia8 Mixer TX_CDC_DMA_TX_4" value="1" />
+ </path>
+
<path name="low-latency-record capture-fm">
<ctl name="MultiMedia8 Mixer TERT_MI2S_TX" value="1" />
</path>
@@ -2395,6 +2403,10 @@
<ctl name="MultiMedia2 Mixer USB_AUDIO_TX" value="1" />
</path>
+ <path name="hifi-record headset-mic">
+ <ctl name="MultiMedia2 Mixer TX_CDC_DMA_TX_4" value="1" />
+ </path>
+
<path name="incall_music_uplink">
<ctl name="Incall_Music Audio Mixer MultiMedia9" value="1" />
</path>
@@ -3067,6 +3079,16 @@
<path name="three-mic" />
</path>
+ <path name="three-mic">
+ <ctl name="TX_CDC_DMA_TX_3 Channels" value="Three" />
+ <ctl name="TX_AIF1_CAP Mixer DEC3" value="1" />
+ <ctl name="TX DMIC MUX3" value="DMIC1" />
+ <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="DMIC2" />
+ </path>
+
<path name="speaker-tmic">
<ctl name="TX_CDC_DMA_TX_3 Channels" value="Three" />
<ctl name="TX_AIF1_CAP Mixer DEC3" value="1" />
diff --git a/configs/kona/sound_trigger_platform_info.xml b/configs/kona/sound_trigger_platform_info.xml
index 2defe5b..17a937c 100644
--- a/configs/kona/sound_trigger_platform_info.xml
+++ b/configs/kona/sound_trigger_platform_info.xml
@@ -51,6 +51,7 @@
<param dedicated_headset_path="false" />
<param platform_lpi_enable="true" />
<param enable_debug_dumps="false" />
+ <param support_non_lpi_without_ec="false" />
</common_config>
<acdb_ids>
<param DEVICE_HANDSET_MIC_APE="100" />
@@ -121,8 +122,14 @@
<!-- is FFECNS -->
<param fluence_type="FLUENCE_TMIC" />
<param execution_mode="ADSP" />
- <!-- lpi_mode: "NON_LPI", "LPI" -->
- <param lpi_mode="NON_LPI" />
+ <!-- lpi_mode: "NON_LPI_BARGE_IN", "NON_LPI", "LPI" -->
+ <!-- NON_LPI_BARGE_IN: Default non-LPI mode type. lsm_usecase -->
+ <!-- must be present with this mode type to handle barge-in. -->
+ <!-- NON_LPI: If another lsm_usecase is present with this mode -->
+ <!-- type, it will be used for non-LPI non-barge-in usecases. -->
+ <!-- If not present, NON_LPI_BARGE_IN mode type will be used. -->
+ <!-- LPI: This mode type will be used for LPI usecases. -->
+ <param lpi_mode="NON_LPI_BARGE_IN" />
<param app_type="2" /> <!-- app type used in ACDB -->
<param in_channels="5"/> <!-- Module input channels -->
<param load_sound_model_ids="0x00012C1C, 0x0, 0x00012C14" />
@@ -144,7 +151,13 @@
<!-- is FFECNS -->
<param fluence_type="FLUENCE_TMIC" />
<param execution_mode="ADSP" />
- <!-- lpi_mode: "NON_LPI", "LPI" -->
+ <!-- lpi_mode: "NON_LPI_BARGE_IN", "NON_LPI", "LPI" -->
+ <!-- NON_LPI_BARGE_IN: Default non-LPI mode type. lsm_usecase -->
+ <!-- must be present with this mode type to handle barge-in. -->
+ <!-- NON_LPI: If another lsm_usecase is present with this mode -->
+ <!-- type, it will be used for non-LPI non-barge-in usecases. -->
+ <!-- If not present, NON_LPI_BARGE_IN mode type will be used. -->
+ <!-- LPI: This mode type will be used for LPI usecases. -->
<param lpi_mode="LPI" />
<param app_type="2" /> <!-- app type used in ACDB -->
<param in_channels="3"/> <!-- Module input channels -->
diff --git a/configs/lito/mixer_paths_qrd.xml b/configs/lito/mixer_paths_qrd.xml
index e2a6bcd..5ac7521 100644
--- a/configs/lito/mixer_paths_qrd.xml
+++ b/configs/lito/mixer_paths_qrd.xml
@@ -3275,6 +3275,16 @@
<path name="three-mic" />
</path>
+ <path name="three-mic">
+ <ctl name="TX_CDC_DMA_TX_3 Channels" value="Three" />
+ <ctl name="TX_AIF1_CAP Mixer DEC3" value="1" />
+ <ctl name="TX DMIC MUX3" value="DMIC1" />
+ <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="DMIC2" />
+ </path>
+
<path name="speaker-tmic">
<ctl name="TX_CDC_DMA_TX_3 Channels" value="Three" />
<ctl name="TX_AIF1_CAP Mixer DEC3" value="1" />
diff --git a/configs/msmnile_au/audio_platform_info.xml b/configs/msmnile_au/audio_platform_info.xml
index 55f0d66..4fdf786 100644
--- a/configs/msmnile_au/audio_platform_info.xml
+++ b/configs/msmnile_au/audio_platform_info.xml
@@ -35,8 +35,8 @@
<device name="SND_DEVICE_OUT_BUS_NAV" acdb_id="14"/>
<device name="SND_DEVICE_OUT_BUS_PHN" acdb_id="94"/>
<device name="SND_DEVICE_OUT_BUS_RSE" acdb_id="60"/>
- <device name="SND_DEVICE_OUT_BT_SCO" acdb_id="94"/>
- <device name="SND_DEVICE_OUT_BT_SCO_WB" acdb_id="94"/>
+ <device name="SND_DEVICE_OUT_BT_SCO" acdb_id="21"/>
+ <device name="SND_DEVICE_OUT_BT_SCO_WB" acdb_id="39"/>
<device name="SND_DEVICE_OUT_BT_A2DP" acdb_id="60"/>
<device name="SND_DEVICE_OUT_VOICE_HANDSET" acdb_id="94"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER" acdb_id="94"/>
@@ -49,8 +49,8 @@
<device name="SND_DEVICE_IN_VOICE_HEADSET_MIC" acdb_id="95"/>
<device name="SND_DEVICE_IN_VOICE_SPEAKER_MIC" acdb_id="95"/>
<device name="SND_DEVICE_IN_VOICE_SPEAKER_MIC_HFP" acdb_id="95"/>
- <device name="SND_DEVICE_IN_BT_SCO_MIC" acdb_id="95"/>
- <device name="SND_DEVICE_IN_BT_SCO_MIC_WB" acdb_id="95"/>
+ <device name="SND_DEVICE_IN_BT_SCO_MIC" acdb_id="20"/>
+ <device name="SND_DEVICE_IN_BT_SCO_MIC_WB" acdb_id="38"/>
<device name="SND_DEVICE_IN_HANDSET_DMIC" acdb_id="80"/>
<device name="SND_DEVICE_IN_SPEAKER_DMIC" acdb_id="80"/>
<device name="SND_DEVICE_IN_QUAD_MIC" acdb_id="47"/>
@@ -111,10 +111,14 @@
<usecase name="USECASE_AUDIO_PLAYBACK_MMAP" type="out" id="28" />
<usecase name="USECASE_AUDIO_RECORD_MMAP" type="in" id="28" />
<usecase name="USECASE_AUDIO_RECORD" type="in" id="0" />
- <usecase name="USECASE_AUDIO_HFP_SCO" type="in" id="36" />
- <usecase name="USECASE_AUDIO_HFP_SCO" type="out" id="36" />
- <usecase name="USECASE_AUDIO_HFP_SCO_WB" type="in" id="36" />
- <usecase name="USECASE_AUDIO_HFP_SCO_WB" type="out" id="36" />
+ <usecase name="USECASE_AUDIO_HFP_SCO" type="in" id="29" />
+ <usecase name="USECASE_AUDIO_HFP_SCO" type="out" id="29" />
+ <usecase name="USECASE_AUDIO_HFP_SCO_WB" type="in" id="29" />
+ <usecase name="USECASE_AUDIO_HFP_SCO_WB" type="out" id="29" />
+ <usecase name="USECASE_AUDIO_HFP_SCO_DOWNLINK" type="in" id="36" />
+ <usecase name="USECASE_AUDIO_HFP_SCO_DOWNLINK" type="out" id="36" />
+ <usecase name="USECASE_AUDIO_HFP_SCO_WB_DOWNLINK" type="in" id="36" />
+ <usecase name="USECASE_AUDIO_HFP_SCO_WB_DOWNLINK" type="out" id="36" />
</pcm_ids>
<config_params>
@@ -131,6 +135,7 @@
<param key="true_32_bit" value="true"/>
<!-- In the below value string, the value indicates sidetone gain in dB -->
<param key="usb_sidetone_gain" value="35"/>
+ <param key="hfp_pcm_dev_id" value="36"/>
</config_params>
<gain_db_to_level_mapping>
@@ -145,8 +150,8 @@
<device name="SND_DEVICE_OUT_HANDSET" interface="TERT_TDM_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER" interface="TERT_TDM_RX_0"/>
<device name="SND_DEVICE_OUT_HEADPHONES" interface="TERT_TDM_RX_0"/>
- <device name="SND_DEVICE_OUT_BT_SCO" interface="TERT_TDM_RX_2"/>
- <device name="SND_DEVICE_OUT_BT_SCO_WB" interface="TERT_TDM_RX_2"/>
+ <device name="SND_DEVICE_OUT_BT_SCO" interface="AUX_PCM_RX"/>
+ <device name="SND_DEVICE_OUT_BT_SCO_WB" interface="AUX_PCM_RX"/>
<device name="SND_DEVICE_OUT_BT_A2DP" interface="TERT_TDM_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_HANDSET" interface="TERT_TDM_RX_2"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER" interface="TERT_TDM_RX_2"/>
@@ -163,8 +168,8 @@
<device name="SND_DEVICE_IN_VOICE_HEADSET_MIC" interface="TERT_TDM_TX_0"/>
<device name="SND_DEVICE_IN_VOICE_SPEAKER_MIC" interface="TERT_TDM_TX_0"/>
<device name="SND_DEVICE_IN_VOICE_SPEAKER_MIC_HFP" interface="TERT_TDM_TX_0"/>
- <device name="SND_DEVICE_IN_BT_SCO_MIC" interface="TERT_TDM_TX_0"/>
- <device name="SND_DEVICE_IN_BT_SCO_MIC_WB" interface="TERT_TDM_TX_0"/>
+ <device name="SND_DEVICE_IN_BT_SCO_MIC" interface="AUX_PCM_TX"/>
+ <device name="SND_DEVICE_IN_BT_SCO_MIC_WB" interface="AUX_PCM_TX"/>
<device name="SND_DEVICE_IN_HANDSET_DMIC" interface="TERT_TDM_TX_0"/>
<device name="SND_DEVICE_IN_SPEAKER_DMIC" interface="TERT_TDM_TX_0"/>
<device name="SND_DEVICE_IN_QUAD_MIC" interface="TERT_TDM_TX_0"/>
diff --git a/configs/msmnile_au/mixer_paths_adp.xml b/configs/msmnile_au/mixer_paths_adp.xml
index 02dd367..566f1e9 100644
--- a/configs/msmnile_au/mixer_paths_adp.xml
+++ b/configs/msmnile_au/mixer_paths_adp.xml
@@ -1601,8 +1601,6 @@
</path>
<path name="hfp-sco">
- <ctl name="TERT_TDM_RX_2 Audio Mixer MultiMedia21" value="1" />
- <ctl name="MultiMedia21 Mixer AUX_PCM_UL_TX" value="1" />
<ctl name="AUX_PCM_RX Audio Mixer MultiMedia6" value="1" />
<ctl name="TERT_TDM_TX_0 Channels" value="One" />
<ctl name="MultiMedia6 Mixer TERT_TDM_TX_0" value="1" />
@@ -1630,20 +1628,38 @@
<path name="hfp-sco headphones" />
</path>
+ <path name="hfp-sco bt-sco">
+ <path name="hfp-sco" />
+ </path>
+
<path name="hfp-sco-wb">
- <ctl name="PRIM_AUX_PCM_TX SampleRate" value="KHZ_16" />
<ctl name="PRIM_AUX_PCM_RX SampleRate" value="KHZ_16" />
<path name="hfp-sco" />
</path>
+ <path name="hfp-sco-wb bt-sco-wb">
+ <path name="hfp-sco-wb" />
+ </path>
+
<path name="hfp-sco-wb headphones">
<path name="hfp-sco headphones" />
</path>
+
<path name="hfp-sco-wb headset">
<path name="hfp-sco headphones" />
</path>
+ <path name="hfp-sco-downlink">
+ <ctl name="TERT_TDM_RX_2 Audio Mixer MultiMedia21" value="1" />
+ <ctl name="MultiMedia21 Mixer AUX_PCM_UL_TX" value="1" />
+ </path>
+
+ <path name="hfp-sco-wb-downlink">
+ <ctl name="PRIM_AUX_PCM_TX SampleRate" value="KHZ_16" />
+ <path name="hfp-sco-downlink" />
+ </path>
+
<path name="compress-voip-call">
<ctl name="SLIM_0_RX_Voice Mixer Voip" value="1" />
<ctl name="Voip_Tx Mixer SLIM_0_TX_Voip" value="1" />
@@ -2105,6 +2121,10 @@
<path name="speaker-mono" />
</path>
+ <path name="voice-speaker-hfp">
+ <path name="speaker-mono" />
+ </path>
+
<path name="voice-speaker-2">
<path name="speaker-mono-2" />
</path>
@@ -2121,6 +2141,10 @@
<path name="speaker-mic-qrd" />
</path>
+ <path name="voice-speaker-mic-hfp">
+ <path name="speaker-mic" />
+ </path>
+
<path name="voice-headphones">
<path name="headphones" />
</path>
diff --git a/configs/msmnile_au/mixer_paths_custom.xml b/configs/msmnile_au/mixer_paths_custom.xml
index 8ededba..2136c79 100644
--- a/configs/msmnile_au/mixer_paths_custom.xml
+++ b/configs/msmnile_au/mixer_paths_custom.xml
@@ -1589,8 +1589,6 @@
</path>
<path name="hfp-sco">
- <ctl name="TERT_TDM_RX_2 Audio Mixer MultiMedia21" value="1" />
- <ctl name="MultiMedia21 Mixer AUX_PCM_UL_TX" value="1" />
<ctl name="AUX_PCM_RX Audio Mixer MultiMedia6" value="1" />
<ctl name="TERT_TDM_TX_0 Channels" value="One" />
<ctl name="MultiMedia6 Mixer TERT_TDM_TX_0" value="1" />
@@ -1618,20 +1616,38 @@
<path name="hfp-sco headphones" />
</path>
+ <path name="hfp-sco bt-sco">
+ <path name="hfp-sco" />
+ </path>
+
<path name="hfp-sco-wb">
- <ctl name="PRIM_AUX_PCM_TX SampleRate" value="KHZ_16" />
<ctl name="PRIM_AUX_PCM_RX SampleRate" value="KHZ_16" />
<path name="hfp-sco" />
</path>
+ <path name="hfp-sco-wb bt-sco-wb">
+ <path name="hfp-sco-wb" />
+ </path>
+
<path name="hfp-sco-wb headphones">
<path name="hfp-sco headphones" />
</path>
+
<path name="hfp-sco-wb headset">
<path name="hfp-sco headphones" />
</path>
+ <path name="hfp-sco-downlink">
+ <ctl name="TERT_TDM_RX_2 Audio Mixer MultiMedia21" value="1" />
+ <ctl name="MultiMedia21 Mixer AUX_PCM_UL_TX" value="1" />
+ </path>
+
+ <path name="hfp-sco-wb-downlink">
+ <ctl name="PRIM_AUX_PCM_TX SampleRate" value="KHZ_16" />
+ <path name="hfp-sco-downlink" />
+ </path>
+
<path name="compress-voip-call">
<ctl name="SLIM_0_RX_Voice Mixer Voip" value="1" />
<ctl name="Voip_Tx Mixer SLIM_0_TX_Voip" value="1" />
@@ -2093,6 +2109,10 @@
<path name="speaker-mono" />
</path>
+ <path name="voice-speaker-hfp">
+ <path name="speaker-mono" />
+ </path>
+
<path name="voice-speaker-2">
<path name="speaker-mono-2" />
</path>
@@ -2109,6 +2129,10 @@
<path name="speaker-mic-qrd" />
</path>
+ <path name="voice-speaker-mic-hfp">
+ <path name="speaker-mic" />
+ </path>
+
<path name="voice-headphones">
<path name="headphones" />
</path>
diff --git a/configs/msmsteppe_au/audio_platform_info.xml b/configs/msmsteppe_au/audio_platform_info.xml
index 55f0d66..4fdf786 100644
--- a/configs/msmsteppe_au/audio_platform_info.xml
+++ b/configs/msmsteppe_au/audio_platform_info.xml
@@ -35,8 +35,8 @@
<device name="SND_DEVICE_OUT_BUS_NAV" acdb_id="14"/>
<device name="SND_DEVICE_OUT_BUS_PHN" acdb_id="94"/>
<device name="SND_DEVICE_OUT_BUS_RSE" acdb_id="60"/>
- <device name="SND_DEVICE_OUT_BT_SCO" acdb_id="94"/>
- <device name="SND_DEVICE_OUT_BT_SCO_WB" acdb_id="94"/>
+ <device name="SND_DEVICE_OUT_BT_SCO" acdb_id="21"/>
+ <device name="SND_DEVICE_OUT_BT_SCO_WB" acdb_id="39"/>
<device name="SND_DEVICE_OUT_BT_A2DP" acdb_id="60"/>
<device name="SND_DEVICE_OUT_VOICE_HANDSET" acdb_id="94"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER" acdb_id="94"/>
@@ -49,8 +49,8 @@
<device name="SND_DEVICE_IN_VOICE_HEADSET_MIC" acdb_id="95"/>
<device name="SND_DEVICE_IN_VOICE_SPEAKER_MIC" acdb_id="95"/>
<device name="SND_DEVICE_IN_VOICE_SPEAKER_MIC_HFP" acdb_id="95"/>
- <device name="SND_DEVICE_IN_BT_SCO_MIC" acdb_id="95"/>
- <device name="SND_DEVICE_IN_BT_SCO_MIC_WB" acdb_id="95"/>
+ <device name="SND_DEVICE_IN_BT_SCO_MIC" acdb_id="20"/>
+ <device name="SND_DEVICE_IN_BT_SCO_MIC_WB" acdb_id="38"/>
<device name="SND_DEVICE_IN_HANDSET_DMIC" acdb_id="80"/>
<device name="SND_DEVICE_IN_SPEAKER_DMIC" acdb_id="80"/>
<device name="SND_DEVICE_IN_QUAD_MIC" acdb_id="47"/>
@@ -111,10 +111,14 @@
<usecase name="USECASE_AUDIO_PLAYBACK_MMAP" type="out" id="28" />
<usecase name="USECASE_AUDIO_RECORD_MMAP" type="in" id="28" />
<usecase name="USECASE_AUDIO_RECORD" type="in" id="0" />
- <usecase name="USECASE_AUDIO_HFP_SCO" type="in" id="36" />
- <usecase name="USECASE_AUDIO_HFP_SCO" type="out" id="36" />
- <usecase name="USECASE_AUDIO_HFP_SCO_WB" type="in" id="36" />
- <usecase name="USECASE_AUDIO_HFP_SCO_WB" type="out" id="36" />
+ <usecase name="USECASE_AUDIO_HFP_SCO" type="in" id="29" />
+ <usecase name="USECASE_AUDIO_HFP_SCO" type="out" id="29" />
+ <usecase name="USECASE_AUDIO_HFP_SCO_WB" type="in" id="29" />
+ <usecase name="USECASE_AUDIO_HFP_SCO_WB" type="out" id="29" />
+ <usecase name="USECASE_AUDIO_HFP_SCO_DOWNLINK" type="in" id="36" />
+ <usecase name="USECASE_AUDIO_HFP_SCO_DOWNLINK" type="out" id="36" />
+ <usecase name="USECASE_AUDIO_HFP_SCO_WB_DOWNLINK" type="in" id="36" />
+ <usecase name="USECASE_AUDIO_HFP_SCO_WB_DOWNLINK" type="out" id="36" />
</pcm_ids>
<config_params>
@@ -131,6 +135,7 @@
<param key="true_32_bit" value="true"/>
<!-- In the below value string, the value indicates sidetone gain in dB -->
<param key="usb_sidetone_gain" value="35"/>
+ <param key="hfp_pcm_dev_id" value="36"/>
</config_params>
<gain_db_to_level_mapping>
@@ -145,8 +150,8 @@
<device name="SND_DEVICE_OUT_HANDSET" interface="TERT_TDM_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER" interface="TERT_TDM_RX_0"/>
<device name="SND_DEVICE_OUT_HEADPHONES" interface="TERT_TDM_RX_0"/>
- <device name="SND_DEVICE_OUT_BT_SCO" interface="TERT_TDM_RX_2"/>
- <device name="SND_DEVICE_OUT_BT_SCO_WB" interface="TERT_TDM_RX_2"/>
+ <device name="SND_DEVICE_OUT_BT_SCO" interface="AUX_PCM_RX"/>
+ <device name="SND_DEVICE_OUT_BT_SCO_WB" interface="AUX_PCM_RX"/>
<device name="SND_DEVICE_OUT_BT_A2DP" interface="TERT_TDM_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_HANDSET" interface="TERT_TDM_RX_2"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER" interface="TERT_TDM_RX_2"/>
@@ -163,8 +168,8 @@
<device name="SND_DEVICE_IN_VOICE_HEADSET_MIC" interface="TERT_TDM_TX_0"/>
<device name="SND_DEVICE_IN_VOICE_SPEAKER_MIC" interface="TERT_TDM_TX_0"/>
<device name="SND_DEVICE_IN_VOICE_SPEAKER_MIC_HFP" interface="TERT_TDM_TX_0"/>
- <device name="SND_DEVICE_IN_BT_SCO_MIC" interface="TERT_TDM_TX_0"/>
- <device name="SND_DEVICE_IN_BT_SCO_MIC_WB" interface="TERT_TDM_TX_0"/>
+ <device name="SND_DEVICE_IN_BT_SCO_MIC" interface="AUX_PCM_TX"/>
+ <device name="SND_DEVICE_IN_BT_SCO_MIC_WB" interface="AUX_PCM_TX"/>
<device name="SND_DEVICE_IN_HANDSET_DMIC" interface="TERT_TDM_TX_0"/>
<device name="SND_DEVICE_IN_SPEAKER_DMIC" interface="TERT_TDM_TX_0"/>
<device name="SND_DEVICE_IN_QUAD_MIC" interface="TERT_TDM_TX_0"/>
diff --git a/configs/msmsteppe_au/mixer_paths_adp.xml b/configs/msmsteppe_au/mixer_paths_adp.xml
index 6cebd13..7622dd8 100644
--- a/configs/msmsteppe_au/mixer_paths_adp.xml
+++ b/configs/msmsteppe_au/mixer_paths_adp.xml
@@ -1372,8 +1372,6 @@
</path>
<path name="hfp-sco">
- <ctl name="TERT_TDM_RX_2 Audio Mixer MultiMedia21" value="1" />
- <ctl name="MultiMedia21 Mixer AUX_PCM_UL_TX" value="1" />
<ctl name="AUX_PCM_RX Audio Mixer MultiMedia6" value="1" />
<ctl name="TERT_TDM_TX_0 Channels" value="One" />
<ctl name="MultiMedia6 Mixer TERT_TDM_TX_0" value="1" />
@@ -1397,16 +1395,33 @@
<path name="hfp-sco headphones">
</path>
+ <path name="hfp-sco bt-sco">
+ <path name="hfp-sco" />
+ </path>
+
<path name="hfp-sco-wb">
- <ctl name="PRIM_AUX_PCM_TX SampleRate" value="KHZ_16" />
<ctl name="PRIM_AUX_PCM_RX SampleRate" value="KHZ_16" />
<path name="hfp-sco" />
</path>
+ <path name="hfp-sco-wb bt-sco-wb">
+ <path name="hfp-sco-wb" />
+ </path>
+
<path name="hfp-sco-wb headphones">
<path name="hfp-sco headphones" />
</path>
+ <path name="hfp-sco-downlink">
+ <ctl name="TERT_TDM_RX_2 Audio Mixer MultiMedia21" value="1" />
+ <ctl name="MultiMedia21 Mixer AUX_PCM_UL_TX" value="1" />
+ </path>
+
+ <path name="hfp-sco-wb-downlink">
+ <ctl name="PRIM_AUX_PCM_TX SampleRate" value="KHZ_16" />
+ <path name="hfp-sco-downlink" />
+ </path>
+
<path name="compress-voip-call">
<ctl name="SLIM_0_RX_Voice Mixer Voip" value="1" />
<ctl name="Voip_Tx Mixer SLIM_0_TX_Voip" value="1" />
@@ -1831,6 +1846,10 @@
<path name="speaker-mono" />
</path>
+ <path name="voice-speaker-hfp">
+ <path name="speaker-mono" />
+ </path>
+
<path name="voice-speaker-2">
<path name="speaker-mono-2" />
</path>
@@ -1847,6 +1866,10 @@
<path name="speaker-mic-qrd" />
</path>
+ <path name="voice-speaker-mic-hfp">
+ <path name="speaker-mic" />
+ </path>
+
<path name="voice-headphones">
<path name="headphones" />
</path>
diff --git a/configs/msmsteppe_au/mixer_paths_custom.xml b/configs/msmsteppe_au/mixer_paths_custom.xml
index 8620565..dd0da54 100644
--- a/configs/msmsteppe_au/mixer_paths_custom.xml
+++ b/configs/msmsteppe_au/mixer_paths_custom.xml
@@ -1361,8 +1361,6 @@
</path>
<path name="hfp-sco">
- <ctl name="TERT_TDM_RX_2 Audio Mixer MultiMedia21" value="1" />
- <ctl name="MultiMedia21 Mixer AUX_PCM_UL_TX" value="1" />
<ctl name="AUX_PCM_RX Audio Mixer MultiMedia6" value="1" />
<ctl name="TERT_TDM_TX_0 Channels" value="One" />
<ctl name="MultiMedia6 Mixer TERT_TDM_TX_0" value="1" />
@@ -1386,16 +1384,33 @@
<path name="hfp-sco headphones">
</path>
+ <path name="hfp-sco bt-sco">
+ <path name="hfp-sco" />
+ </path>
+
<path name="hfp-sco-wb">
- <ctl name="PRIM_AUX_PCM_TX SampleRate" value="KHZ_16" />
<ctl name="PRIM_AUX_PCM_RX SampleRate" value="KHZ_16" />
<path name="hfp-sco" />
</path>
+ <path name="hfp-sco-wb bt-sco-wb">
+ <path name="hfp-sco-wb" />
+ </path>
+
<path name="hfp-sco-wb headphones">
<path name="hfp-sco headphones" />
</path>
+ <path name="hfp-sco-downlink">
+ <ctl name="TERT_TDM_RX_2 Audio Mixer MultiMedia21" value="1" />
+ <ctl name="MultiMedia21 Mixer AUX_PCM_UL_TX" value="1" />
+ </path>
+
+ <path name="hfp-sco-wb-downlink">
+ <ctl name="PRIM_AUX_PCM_TX SampleRate" value="KHZ_16" />
+ <path name="hfp-sco-downlink" />
+ </path>
+
<path name="compress-voip-call">
<ctl name="SLIM_0_RX_Voice Mixer Voip" value="1" />
<ctl name="Voip_Tx Mixer SLIM_0_TX_Voip" value="1" />
@@ -1820,6 +1835,10 @@
<path name="speaker-mono" />
</path>
+ <path name="voice-speaker-hfp">
+ <path name="speaker-mono" />
+ </path>
+
<path name="voice-speaker-2">
<path name="speaker-mono-2" />
</path>
@@ -1836,6 +1855,10 @@
<path name="speaker-mic-qrd" />
</path>
+ <path name="voice-speaker-mic-hfp">
+ <path name="speaker-mic" />
+ </path>
+
<path name="voice-headphones">
<path name="headphones" />
</path>
diff --git a/configs/sdm710/audio_platform_info.xml b/configs/sdm710/audio_platform_info.xml
index 553e02f..0932e7c 100644
--- a/configs/sdm710/audio_platform_info.xml
+++ b/configs/sdm710/audio_platform_info.xml
@@ -88,7 +88,7 @@
<usecase name="USECASE_AUDIO_PLAYBACK_FM" type="out" id="5"/>
<usecase name="USECASE_AUDIO_PLAYBACK_FM" type="in" id="34"/>
<usecase name="USECASE_AUDIO_SPKR_CALIB_RX" type="out" id="5"/>
- <usecase name="USECASE_AUDIO_SPKR_CALIB_TX" type="in" id="37"/>
+ <usecase name="USECASE_AUDIO_SPKR_CALIB_TX" type="in" id="42"/>
<usecase name="USECASE_AUDIO_PLAYBACK_AFE_PROXY" type="out" id="6"/>
<usecase name="USECASE_AUDIO_RECORD_AFE_PROXY" type="in" id="7"/>
<usecase name="USECASE_AUDIO_RECORD_LOW_LATENCY" type="in" id="17" />
diff --git a/configs/trinket/audio_policy_configuration.xml b/configs/trinket/audio_policy_configuration.xml
index 6d92ad5..6c36e0c 100644
--- a/configs/trinket/audio_policy_configuration.xml
+++ b/configs/trinket/audio_policy_configuration.xml
@@ -178,11 +178,6 @@
samplingRates="8000,16000,48000"
channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="surround_sound" role="sink" maxActiveCount="2">
- <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,AUDIO_CHANNEL_INDEX_MASK_4,AUDIO_CHANNEL_IN_5POINT1,AUDIO_CHANNEL_INDEX_MASK_6"/>
- </mixPort>
<mixPort name="usb_surround_sound" role="sink">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000,88200,96000,176400,192000"
@@ -362,8 +357,6 @@
sources="Wired Headset Mic,BT SCO Headset Mic,FM Tuner,USB Device In,USB Headset In,Telephony Rx"/>
<route type="mix" sink="voip_tx"
sources="Built-In Mic,Built-In Back Mic,BT SCO Headset Mic,USB Device In,USB Headset In"/>
- <route type="mix" sink="surround_sound"
- sources="Built-In Mic,Built-In Back Mic"/>
<route type="mix" sink="usb_surround_sound"
sources="USB Device In,USB Headset In"/>
<route type="mix" sink="record_24"
diff --git a/hal/audio_extn/Android.mk b/hal/audio_extn/Android.mk
index 4d3784c..ccc1b2e 100644
--- a/hal/audio_extn/Android.mk
+++ b/hal/audio_extn/Android.mk
@@ -143,7 +143,8 @@
libtinycompress \
libaudioroute \
libdl \
- libexpat
+ libexpat \
+ libprocessgroup
LOCAL_C_INCLUDES := \
vendor/qcom/opensource/audio-hal/primary-hal/hal \
@@ -168,7 +169,7 @@
LOCAL_HEADER_LIBRARIES += libhardware_headers
LOCAL_HEADER_LIBRARIES += libsystem_headers
-#include $(BUILD_SHARED_LIBRARY)
+include $(BUILD_SHARED_LIBRARY)
#--------------------------------------------
# Build HDMI_EDID LIB
diff --git a/hal/audio_extn/audio_extn.c b/hal/audio_extn/audio_extn.c
index 70d9306..bb3437a 100644
--- a/hal/audio_extn/audio_extn.c
+++ b/hal/audio_extn/audio_extn.c
@@ -1125,8 +1125,10 @@
bool audio_extn_get_anc_enabled(void)
{
- ALOGD("%s: anc_enabled:%d", __func__, aextnmod.anc_enabled);
- return (aextnmod.anc_enabled ? true: false);
+ ALOGD("%s: anc_enabled:%d", __func__,
+ (aextnmod.anc_enabled && audio_extn_anc_headset_feature_enabled));
+ return (aextnmod.anc_enabled &&
+ audio_extn_anc_headset_feature_enabled);
}
bool audio_extn_should_use_handset_anc(int in_channels)
diff --git a/hal/audio_extn/auto_hal.c b/hal/audio_extn/auto_hal.c
old mode 100644
new mode 100755
index 739d564..84f578f
--- a/hal/audio_extn/auto_hal.c
+++ b/hal/audio_extn/auto_hal.c
@@ -158,6 +158,11 @@
sources->ext.device.address);
} else {
address = (char *)calloc(1, 1);
+ if (address == NULL) {
+ ALOGE("%s: failed to get address",__func__);
+ ret = -EFAULT;
+ goto error;
+ }
}
parms = str_parms_create_str(address);
if (!parms) {
@@ -192,6 +197,11 @@
sinks->ext.device.address);
} else {
address = (char *)calloc(1, 1);
+ if (address == NULL) {
+ ALOGE("%s: failed to get address",__func__);
+ ret = -EFAULT;
+ goto error;
+ }
}
parms = str_parms_create_str(address);
if (!parms) {
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index cea5e74..0580353 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -513,6 +513,8 @@
static void in_snd_mon_cb(void * stream, struct str_parms * parms);
static void out_snd_mon_cb(void * stream, struct str_parms * parms);
+static int configure_btsco_sample_rate(snd_device_t snd_device);
+
#ifdef AUDIO_FEATURE_ENABLED_GCOV
extern void __gcov_flush();
static void enable_gcov()
@@ -1305,6 +1307,7 @@
goto err;
}
+ configure_btsco_sample_rate(snd_device);
/* due to the possibility of calibration overwrite between listen
and audio, notify listen hal before audio calibration is sent */
audio_extn_sound_trigger_update_device_status(snd_device,
@@ -2312,6 +2315,50 @@
return bt_soc_status;
}
+static int configure_btsco_sample_rate(snd_device_t snd_device)
+{
+ struct mixer_ctl *ctl = NULL;
+ struct mixer_ctl *ctl_sr_rx = NULL, *ctl_sr_tx = NULL, *ctl_sr = NULL;
+ char *rate_str = NULL;
+ bool is_rx_dev = true;
+
+ if (is_btsco_device(snd_device, snd_device)) {
+ ctl_sr_tx = mixer_get_ctl_by_name(adev->mixer, "BT SampleRate TX");
+ ctl_sr_rx = mixer_get_ctl_by_name(adev->mixer, "BT SampleRate RX");
+ if (!ctl_sr_tx || !ctl_sr_rx) {
+ ctl_sr = mixer_get_ctl_by_name(adev->mixer, "BT SampleRate");
+ if (!ctl_sr)
+ return -ENOSYS;
+ }
+
+ switch (snd_device) {
+ case SND_DEVICE_OUT_BT_SCO:
+ rate_str = "KHZ_8";
+ break;
+ case SND_DEVICE_IN_BT_SCO_MIC_NREC:
+ case SND_DEVICE_IN_BT_SCO_MIC:
+ rate_str = "KHZ_8";
+ is_rx_dev = false;
+ break;
+ case SND_DEVICE_OUT_BT_SCO_WB:
+ rate_str = "KHZ_16";
+ break;
+ case SND_DEVICE_IN_BT_SCO_MIC_WB_NREC:
+ case SND_DEVICE_IN_BT_SCO_MIC_WB:
+ rate_str = "KHZ_16";
+ is_rx_dev = false;
+ break;
+ default:
+ return 0;
+ }
+
+ ctl = (ctl_sr == NULL) ? (is_rx_dev ? ctl_sr_rx : ctl_sr_tx) : ctl_sr;
+ if (mixer_ctl_set_enum_by_string(ctl, rate_str) != 0)
+ return -ENOSYS;
+ }
+ return 0;
+}
+
int out_standby_l(struct audio_stream *stream);
struct stream_in *adev_get_active_input(const struct audio_device *adev)
@@ -5885,25 +5932,24 @@
size_t kernel_buffer_size = out->config.period_size * out->config.period_count;
uint64_t signed_frames = 0;
+ uint64_t frames_temp = 0;
- if (avail > kernel_buffer_size)
- avail = kernel_buffer_size;
-
- if (out->written >= (kernel_buffer_size - avail))
- signed_frames = out->written - kernel_buffer_size + avail;
+ frames_temp = (kernel_buffer_size > avail) ? (kernel_buffer_size - avail) : 0;
+ if (out->written >= frames_temp)
+ signed_frames = out->written - frames_temp;
// This adjustment accounts for buffering after app processor.
// It is based on estimated DSP latency per use case, rather than exact.
- if (signed_frames >= (platform_render_latency(out->usecase) * out->sample_rate / 1000000LL))
- signed_frames -=
- (platform_render_latency(out->usecase) * out->sample_rate / 1000000LL);
+ frames_temp = platform_render_latency(out->usecase) * out->sample_rate / 1000000LL;
+ if (signed_frames >= frames_temp)
+ signed_frames -= frames_temp;
// Adjustment accounts for A2dp encoder latency with non offload usecases
// Note: Encoder latency is returned in ms, while platform_render_latency in us.
if (AUDIO_DEVICE_OUT_ALL_A2DP & out->devices) {
- if (signed_frames >= (audio_extn_a2dp_get_encoder_latency() * out->sample_rate / 1000))
- signed_frames -=
- (audio_extn_a2dp_get_encoder_latency() * out->sample_rate / 1000);
+ frames_temp = audio_extn_a2dp_get_encoder_latency() * out->sample_rate / 1000;
+ if (signed_frames >= frames_temp)
+ signed_frames -= frames_temp;
}
// It would be unusual for this value to be negative, but check just in case ...
@@ -8690,6 +8736,7 @@
//XXX needed for voice_extn_compress_voip_open_input_stream
in->config.rate = config->sample_rate;
if ((in->dev->mode == AUDIO_MODE_IN_COMMUNICATION ||
+ in->source == AUDIO_SOURCE_VOICE_COMMUNICATION ||
voice_extn_compress_voip_is_active(in->dev)) &&
(voice_extn_compress_voip_is_format_supported(in->format)) &&
valid_rate && valid_ch) {
@@ -9075,8 +9122,9 @@
}
}
}
+ if (audio_extn_ssr_get_stream() != in)
+ in->config.channels = channel_count;
- in->config.channels = channel_count;
in->sample_rate = in->config.rate;
audio_extn_utils_update_stream_input_app_type_cfg(adev->platform,
diff --git a/hal/msm8974/hw_info.c b/hal/msm8974/hw_info.c
index 26fae75..8c000ba 100644
--- a/hal/msm8974/hw_info.c
+++ b/hal/msm8974/hw_info.c
@@ -531,6 +531,10 @@
} else if (!strncmp(snd_card_name, "atoll-wcd937x-snd-card",
sizeof("atoll-wcd937x-snd-card"))) {
strlcpy(hw_info->name, "atoll", sizeof(hw_info->name));
+ } else if (!strncmp(snd_card_name, "atoll-qrd-snd-card",
+ sizeof("atoll-qrd-snd-card"))) {
+ strlcpy(hw_info->name, "atoll", sizeof(hw_info->name));
+ hw_info->is_stereo_spkr = false;
} else if (!strncmp(snd_card_name, "kona-qrd-snd-card",
sizeof("kona-qrd-snd-card"))) {
strlcpy(hw_info->name, "kona", sizeof(hw_info->name));
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index ab63925..8814bc7 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -1694,7 +1694,9 @@
!strncmp(snd_card_name, "atoll-wcd937x-snd-card",
sizeof("atoll-wcd937x-snd-card")) ||
!strncmp(snd_card_name, "atoll-idp-snd-card",
- sizeof("atoll-idp-snd-card"))) {
+ sizeof("atoll-idp-snd-card")) ||
+ !strncmp(snd_card_name, "atoll-qrd-snd-card",
+ sizeof("atoll-qrd-snd-card"))) {
ALOGI("%s: snd_card_name: %s",__func__,snd_card_name);
my_data->is_internal_codec = true;
my_data->is_slimbus_interface = false;
@@ -3249,6 +3251,9 @@
else if (!strncmp(snd_card_name, "lito-qrd-snd-card",
sizeof("lito-qrd-snd-card")))
platform_info_init(PLATFORM_INFO_XML_PATH_QRD, my_data, PLATFORM);
+ else if (!strncmp(snd_card_name, "atoll-qrd-snd-card",
+ sizeof("atoll-qrd-snd-card")))
+ platform_info_init(PLATFORM_INFO_XML_PATH_QRD, my_data, PLATFORM);
else if (!strncmp(snd_card_name, "qcs405-wsa-snd-card",
sizeof("qcs405-wsa-snd-card")))
platform_info_init(PLATFORM_INFO_XML_PATH_WSA, my_data, PLATFORM);