Merge "configs: Add speaker-safe mixer paths to all targets"
diff --git a/configs/atoll/audio_policy_configuration.xml b/configs/atoll/audio_policy_configuration.xml
index c6365ff..1e4e338 100644
--- a/configs/atoll/audio_policy_configuration.xml
+++ b/configs/atoll/audio_policy_configuration.xml
@@ -178,11 +178,6 @@
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="8000,16000,32000,48000" channelMasks="AUDIO_CHANNEL_IN_MONO"/>
</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"
@@ -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/configs/kona/kona.mk b/configs/kona/kona.mk
index 1a2225a..cfd5a23 100644
--- a/configs/kona/kona.mk
+++ b/configs/kona/kona.mk
@@ -181,10 +181,10 @@
vendor/qcom/opensource/audio-hal/primary-hal/configs/kona/audio_platform_info_intcodec.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_info_intcodec.xml \
vendor/qcom/opensource/audio-hal/primary-hal/configs/kona/sound_trigger_mixer_paths.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_mixer_paths.xml \
vendor/qcom/opensource/audio-hal/primary-hal/configs/kona/sound_trigger_mixer_paths_qrd.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_mixer_paths_qrd.xml \
- vendor/qcom/opensource/audio-hal/primary-hal/configs/kona/sound_trigger_mixer_paths_qrd.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_mixer_paths_cdp.xml \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/kona/sound_trigger_mixer_paths_cdp.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_mixer_paths_cdp.xml \
vendor/qcom/opensource/audio-hal/primary-hal/configs/kona/mixer_paths.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths.xml \
vendor/qcom/opensource/audio-hal/primary-hal/configs/kona/mixer_paths_qrd.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths_qrd.xml \
- vendor/qcom/opensource/audio-hal/primary-hal/configs/kona/mixer_paths_qrd.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths_cdp.xml \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/kona/mixer_paths_cdp.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths_cdp.xml \
vendor/qcom/opensource/audio-hal/primary-hal/configs/kona/audio_configs.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_configs.xml \
vendor/qcom/opensource/audio-hal/primary-hal/configs/kona/audio_configs_stock.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_configs_stock.xml \
vendor/qcom/opensource/audio-hal/primary-hal/configs/kona/audio_tuning_mixer.txt:$(TARGET_COPY_OUT_VENDOR)/etc/audio_tuning_mixer.txt \
diff --git a/configs/kona/mixer_paths.xml b/configs/kona/mixer_paths.xml
index 0641095..928cdea 100644
--- a/configs/kona/mixer_paths.xml
+++ b/configs/kona/mixer_paths.xml
@@ -320,6 +320,7 @@
<ctl name="MultiMedia1 Mixer TX_CDC_DMA_TX_3" value="0" />
<ctl name="ADC2_MIXER Switch" value="0" />
<ctl name="ADC2 MUX" value="ZERO" />
+ <ctl name="DEC0_BCS Switch" value="0" />
<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" />
@@ -2099,48 +2100,49 @@
<!-- These are actual sound device specific mixer settings -->
<path name="amic2">
- <ctl name="TX DEC5 MUX" value="SWR_MIC" />
- <ctl name="TX SMIC MUX5" value="ADC1" />
+ <ctl name="TX DEC0 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX0" value="ADC1" />
<ctl name="TX_CDC_DMA_TX_4 Channels" value="One" />
- <ctl name="TX_AIF2_CAP Mixer DEC5" value="1" />
+ <ctl name="DEC0_BCS Switch" value="1" />
+ <ctl name="TX_AIF2_CAP Mixer DEC0" value="1" />
<ctl name="ADC2_MIXER Switch" value="1" />
<ctl name="ADC2 MUX" value="INP2" />
</path>
<path name="dmic1">
<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="DMIC0" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC0" />
</path>
<path name="dmic2">
<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="DMIC1" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC1" />
</path>
<path name="dmic3">
<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="DMIC2" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC2" />
</path>
<path name="dmic4">
<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="DMIC3" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC3" />
</path>
<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" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC4" />
</path>
<path name="dmic6">
<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="DMIC5" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC5" />
</path>
<path name="speaker">
@@ -2226,7 +2228,7 @@
<path name="sidetone-headphones">
<path name="sidetone-iir" />
<ctl name="IIR0 INP0 Volume" value="54" />
- <ctl name="IIR0 INP0 MUX" value="DEC0" />
+ <ctl name="IIR0 INP0 MUX" value="DEC2" />
<ctl name="RX INT0 MIX2 INP" value="SRC0" />
<ctl name="RX INT1 MIX2 INP" value="SRC0" />
</path>
@@ -2234,7 +2236,7 @@
<path name="sidetone-handset">
<path name="sidetone-iir" />
<ctl name="IIR0 INP0 Volume" value="54" />
- <ctl name="IIR0 INP0 MUX" value="DEC0" />
+ <ctl name="IIR0 INP0 MUX" value="DEC2" />
<ctl name="RX INT2 MIX2 INP" value="SRC0" />
<ctl name="WSA_RX0 INT0 SIDETONE MIX" value="SRC0" />
</path>
@@ -2359,6 +2361,7 @@
</path>
<path name="headset-mic">
+ <ctl name="TX_DEC0 Volume" value="84" />
<path name="amic2" />
</path>
@@ -2513,23 +2516,23 @@
<!-- Dual MIC devices -->
<path name="handset-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="DMIC1" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC1" />
<ctl name="TX_AIF1_CAP Mixer DEC1" value="1" />
<ctl name="TX DMIC MUX1" value="DMIC3" />
</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="DMIC4" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC4" />
<ctl name="TX_AIF1_CAP Mixer DEC1" value="1" />
<ctl name="TX DMIC MUX1" value="DMIC1" />
</path>
<path name="dmic-endfire">
<path name="handset-dmic-endfire" />
- <ctl name="IIR0 INP0 MUX" value="DEC0" />
+ <ctl name="IIR0 INP0 MUX" value="DEC2" />
</path>
<path name="dmic-endfire-liquid">
@@ -2590,15 +2593,15 @@
</path>
<path name="speaker-dmic-broadside">
<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="DMIC4" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC4" />
<ctl name="TX_AIF1_CAP Mixer DEC1" value="1" />
<ctl name="TX DMIC MUX1" value="DMIC1" />
</path>
<path name="dmic-broadside">
<path name="speaker-dmic-broadside" />
- <ctl name="IIR0 INP0 MUX" value="DEC0" />
+ <ctl name="IIR0 INP0 MUX" value="DEC2" />
</path>
<path name="voice-speaker-dmic-broadside">
@@ -2608,8 +2611,8 @@
<!-- Tri MIC devices -->
<path name="three-mic">
<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="DMIC3" />
+ <ctl name="TX_AIF1_CAP Mixer DEC3" value="1" />
+ <ctl name="TX DMIC MUX3" value="DMIC3" />
<ctl name="TX_AIF1_CAP Mixer DEC1" value="1" />
<ctl name="TX DMIC MUX1" value="DMIC0" />
<ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
@@ -2618,8 +2621,8 @@
<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="DMIC4" />
+ <ctl name="TX_AIF1_CAP Mixer DEC3" value="1" />
+ <ctl name="TX DMIC MUX3" value="DMIC4" />
<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" />
@@ -2633,8 +2636,8 @@
<!-- Quad MIC devices -->
<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="DMIC4" />
+ <ctl name="TX_AIF1_CAP Mixer DEC4" value="1" />
+ <ctl name="TX DMIC MUX4" value="DMIC4" />
<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" />
diff --git a/configs/kona/mixer_paths_cdp.xml b/configs/kona/mixer_paths_cdp.xml
index 87e6355..705de15 100644
--- a/configs/kona/mixer_paths_cdp.xml
+++ b/configs/kona/mixer_paths_cdp.xml
@@ -322,6 +322,7 @@
<ctl name="ADC1_MIXER Switch" value="0" />
<ctl name="ADC2_MIXER Switch" value="0" />
<ctl name="ADC2 MUX" value="ZERO" />
+ <ctl name="DEC0_BCS Switch" value="0" />
<ctl name="ADC3_MIXER Switch" value="0" />
<ctl name="ADC3 MUX" value="ZERO" />
<ctl name="ADC4_MIXER Switch" value="0" />
@@ -2112,26 +2113,27 @@
</path>
<path name="amic2">
- <ctl name="TX DEC5 MUX" value="SWR_MIC" />
- <ctl name="TX SMIC MUX5" value="ADC1" />
+ <ctl name="TX DEC0 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX0" value="ADC1" />
<ctl name="TX_CDC_DMA_TX_4 Channels" value="One" />
- <ctl name="TX_AIF2_CAP Mixer DEC5" value="1" />
+ <ctl name="DEC0_BCS Switch" value="1" />
+ <ctl name="TX_AIF2_CAP Mixer DEC0" value="1" />
<ctl name="ADC2_MIXER Switch" value="1" />
<ctl name="ADC2 MUX" value="INP2" />
</path>
<path name="amic3">
- <ctl name="TX DEC0 MUX" value="SWR_MIC" />
- <ctl name="TX SMIC MUX0" value="ADC1" />
- <ctl name="TX_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="TX DEC2 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX2" value="ADC1" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
<ctl name="ADC2_MIXER Switch" value="1" />
<ctl name="ADC2 MUX" value="INP3" />
</path>
<path name="amic4">
- <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="TX DEC5 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX5" value="ADC2" />
+ <ctl name="TX_AIF1_CAP Mixer DEC5" value="1" />
<ctl name="ADC3_MIXER Switch" value="1" />
<ctl name="ADC3 MUX" value="INP4" />
</path>
@@ -2146,38 +2148,38 @@
<path name="dmic1">
<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="DMIC0" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC0" />
</path>
<path name="dmic2">
<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="DMIC1" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC1" />
</path>
<path name="dmic3">
<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="DMIC2" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC2" />
</path>
<path name="dmic4">
<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="DMIC3" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC3" />
</path>
<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" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC4" />
</path>
<path name="dmic6">
<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="DMIC5" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC5" />
</path>
<path name="speaker">
@@ -2263,7 +2265,7 @@
<path name="sidetone-headphones">
<path name="sidetone-iir" />
<ctl name="IIR0 INP0 Volume" value="54" />
- <ctl name="IIR0 INP0 MUX" value="DEC0" />
+ <ctl name="IIR0 INP0 MUX" value="DEC2" />
<ctl name="RX INT0 MIX2 INP" value="SRC0" />
<ctl name="RX INT1 MIX2 INP" value="SRC0" />
</path>
@@ -2271,7 +2273,7 @@
<path name="sidetone-handset">
<path name="sidetone-iir" />
<ctl name="IIR0 INP0 Volume" value="54" />
- <ctl name="IIR0 INP0 MUX" value="DEC0" />
+ <ctl name="IIR0 INP0 MUX" value="DEC2" />
<ctl name="RX INT2 MIX2 INP" value="SRC0" />
<ctl name="WSA_RX0 INT0 SIDETONE MIX" value="SRC0" />
</path>
@@ -2566,7 +2568,7 @@
<path name="dmic-endfire">
<path name="handset-dmic-endfire" />
- <ctl name="IIR0 INP0 MUX" value="DEC0" />
+ <ctl name="IIR0 INP0 MUX" value="DEC2" />
</path>
<path name="dmic-endfire-liquid">
@@ -2633,7 +2635,7 @@
<path name="dmic-broadside">
<path name="speaker-dmic-broadside" />
- <ctl name="IIR0 INP0 MUX" value="DEC0" />
+ <ctl name="IIR0 INP0 MUX" value="DEC2" />
</path>
<path name="voice-speaker-dmic-broadside">
diff --git a/configs/kona/mixer_paths_qrd.xml b/configs/kona/mixer_paths_qrd.xml
index 266c267..be056b2 100644
--- a/configs/kona/mixer_paths_qrd.xml
+++ b/configs/kona/mixer_paths_qrd.xml
@@ -320,6 +320,7 @@
<ctl name="MultiMedia1 Mixer TX_CDC_DMA_TX_3" value="0" />
<ctl name="ADC2_MIXER Switch" value="0" />
<ctl name="ADC2 MUX" value="ZERO" />
+ <ctl name="DEC0_BCS Switch" value="0" />
<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" />
@@ -2581,66 +2582,67 @@
<!-- These are actual sound device specific mixer settings -->
<path name="amic1">
- <ctl name="TX DEC0 MUX" value="SWR_MIC" />
- <ctl name="TX SMIC MUX0" value="ADC0" />
+ <ctl name="TX DEC2 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX2" value="ADC0" />
<ctl name="TX_CDC_DMA_TX_3 Channels" value="One" />
- <ctl name="TX_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
<ctl name="ADC1_MIXER Switch" value="1" />
</path>
<path name="amic2">
- <ctl name="TX DEC5 MUX" value="SWR_MIC" />
- <ctl name="TX SMIC MUX5" value="ADC1" />
+ <ctl name="TX DEC0 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX0" value="ADC1" />
<ctl name="TX_CDC_DMA_TX_4 Channels" value="One" />
- <ctl name="TX_AIF2_CAP Mixer DEC5" value="1" />
+ <ctl name="DEC0_BCS Switch" value="1" />
+ <ctl name="TX_AIF2_CAP Mixer DEC0" value="1" />
<ctl name="ADC2_MIXER Switch" value="1" />
<ctl name="ADC2 MUX" value="INP2" />
</path>
<path name="amic3">
- <ctl name="TX DEC0 MUX" value="SWR_MIC" />
- <ctl name="TX SMIC MUX0" value="ADC2" />
+ <ctl name="TX DEC2 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX2" value="ADC2" />
<ctl name="TX_CDC_DMA_TX_3 Channels" value="One" />
- <ctl name="TX_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
<ctl name="ADC2_MIXER Switch" value="1" />
<ctl name="ADC2 MUX" value="INP3" />
</path>
<path name="dmic1">
<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="DMIC0" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC0" />
</path>
<path name="dmic2">
<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="DMIC1" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC1" />
</path>
<path name="dmic3">
<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="DMIC2" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC2" />
</path>
<path name="dmic4">
<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="DMIC3" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC3" />
</path>
<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" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC4" />
</path>
<path name="dmic6">
<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="DMIC5" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC5" />
</path>
<path name="speaker">
@@ -2700,7 +2702,7 @@
<path name="sidetone-headphones">
<path name="sidetone-iir" />
<ctl name="IIR0 INP0 Volume" value="40" />
- <ctl name="IIR0 INP0 MUX" value="DEC0" />
+ <ctl name="IIR0 INP0 MUX" value="DEC2" />
<ctl name="RX INT0 MIX2 INP" value="SRC0" />
<ctl name="RX INT1 MIX2 INP" value="SRC0" />
</path>
@@ -2708,7 +2710,7 @@
<path name="sidetone-handset">
<path name="sidetone-iir" />
<ctl name="IIR0 INP0 Volume" value="54" />
- <ctl name="IIR0 INP0 MUX" value="DEC0" />
+ <ctl name="IIR0 INP0 MUX" value="DEC2" />
<ctl name="RX INT0 MIX2 INP" value="SRC0" />
</path>
@@ -2825,6 +2827,7 @@
</path>
<path name="headset-mic">
+ <ctl name="TX_DEC0 Volume" value="84" />
<path name="amic2" />
</path>
@@ -2944,23 +2947,23 @@
<!-- Dual MIC devices -->
<path name="handset-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="DMIC1" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC1" />
<ctl name="TX_AIF1_CAP Mixer DEC1" value="1" />
<ctl name="TX DMIC MUX1" value="DMIC3" />
</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 DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC2" />
<ctl name="TX_AIF1_CAP Mixer DEC1" value="1" />
<ctl name="TX DMIC MUX1" value="DMIC1" />
</path>
<path name="dmic-endfire">
<path name="handset-dmic-endfire" />
- <ctl name="IIR0 INP0 MUX" value="DEC0" />
+ <ctl name="IIR0 INP0 MUX" value="DEC2" />
</path>
<path name="handset-stereo-dmic-ef">
@@ -2997,7 +3000,7 @@
<path name="dmic-broadside">
<path name="speaker-dmic-broadside" />
- <ctl name="IIR0 INP0 MUX" value="DEC0" />
+ <ctl name="IIR0 INP0 MUX" value="DEC2" />
</path>
<path name="voice-speaker-dmic-broadside">
@@ -3066,8 +3069,8 @@
<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 DEC3" value="1" />
+ <ctl name="TX DMIC MUX3" 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" />
@@ -3080,8 +3083,8 @@
<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 DEC4" value="1" />
+ <ctl name="TX DMIC MUX4" 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" />
diff --git a/configs/kona/sound_trigger_platform_info.xml b/configs/kona/sound_trigger_platform_info.xml
index 2a44adc..2defe5b 100644
--- a/configs/kona/sound_trigger_platform_info.xml
+++ b/configs/kona/sound_trigger_platform_info.xml
@@ -50,6 +50,7 @@
<param dedicated_sva_path="true" />
<param dedicated_headset_path="false" />
<param platform_lpi_enable="true" />
+ <param enable_debug_dumps="false" />
</common_config>
<acdb_ids>
<param DEVICE_HANDSET_MIC_APE="100" />
@@ -120,9 +121,33 @@
<!-- is FFECNS -->
<param fluence_type="FLUENCE_TMIC" />
<param execution_mode="ADSP" />
+ <!-- lpi_mode: "NON_LPI", "LPI" -->
+ <param lpi_mode="NON_LPI" />
<param app_type="2" /> <!-- app type used in ACDB -->
<param in_channels="5"/> <!-- Module input channels -->
- <param in_channels_lpi="3"/>
+ <param load_sound_model_ids="0x00012C1C, 0x0, 0x00012C14" />
+ <param unload_sound_model_ids="0x00012C1C, 0x0, 0x00012C15" />
+ <param confidence_levels_ids="0x00012C1C, 0x0, 0x00012C07" />
+ <param operation_mode_ids="0x00012C1C, 0x0, 0x00012C02" />
+ <param polling_enable_ids="0x00012C1C, 0x0, 0x00012C1B" />
+ <param custom_config_ids="0x00012C1C, 0x0, 0x00012C20" />
+ <param det_event_type_ids="0x00012C1C, 0x0, 0x00012C2C" />
+ <param lab_dam_cfg_ids="0x00012C08, 0x0, 0x000102C4" />
+ </lsm_usecase>
+ <lsm_usecase>
+ <param capture_device="HANDSET" />
+ <!-- adm_cfg_profile should match with the one defined under adm_config -->
+ <!-- Set it to NONE if LSM directly connects to AFE -->
+ <param adm_cfg_profile="FFECNS" />
+ <!-- fluence_type: "FLUENCE_MIC", "FLUENCE_DMIC", "FLUENCE_TMIC" -->
+ <!-- "FLUENCE_QMIC". Param value is valid when adm_cfg_profile -->
+ <!-- is FFECNS -->
+ <param fluence_type="FLUENCE_TMIC" />
+ <param execution_mode="ADSP" />
+ <!-- lpi_mode: "NON_LPI", "LPI" -->
+ <param lpi_mode="LPI" />
+ <param app_type="2" /> <!-- app type used in ACDB -->
+ <param in_channels="3"/> <!-- Module input channels -->
<param load_sound_model_ids="0x00012C1C, 0x0, 0x00012C14" />
<param unload_sound_model_ids="0x00012C1C, 0x0, 0x00012C15" />
<param confidence_levels_ids="0x00012C1C, 0x0, 0x00012C07" />
diff --git a/configs/lito/audio_policy_configuration.xml b/configs/lito/audio_policy_configuration.xml
index c6365ff..1e4e338 100644
--- a/configs/lito/audio_policy_configuration.xml
+++ b/configs/lito/audio_policy_configuration.xml
@@ -178,11 +178,6 @@
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="8000,16000,32000,48000" channelMasks="AUDIO_CHANNEL_IN_MONO"/>
</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"
@@ -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/configs/lito/lito.mk b/configs/lito/lito.mk
index 175169a..b7f890b 100644
--- a/configs/lito/lito.mk
+++ b/configs/lito/lito.mk
@@ -176,8 +176,10 @@
vendor/qcom/opensource/audio-hal/primary-hal/configs/lito/audio_platform_info_intcodec.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_info_intcodec.xml \
vendor/qcom/opensource/audio-hal/primary-hal/configs/lito/sound_trigger_mixer_paths.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_mixer_paths.xml \
vendor/qcom/opensource/audio-hal/primary-hal/configs/lito/sound_trigger_mixer_paths_qrd.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_mixer_paths_qrd.xml \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/lito/sound_trigger_mixer_paths_cdp.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_mixer_paths_cdp.xml \
vendor/qcom/opensource/audio-hal/primary-hal/configs/lito/mixer_paths.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths.xml \
vendor/qcom/opensource/audio-hal/primary-hal/configs/lito/mixer_paths_qrd.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths_qrd.xml \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/lito/mixer_paths_cdp.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths_cdp.xml \
vendor/qcom/opensource/audio-hal/primary-hal/configs/lito/audio_configs.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_configs.xml \
vendor/qcom/opensource/audio-hal/primary-hal/configs/lito/audio_configs_stock.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_configs_stock.xml \
frameworks/native/data/etc/android.hardware.audio.pro.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.audio.pro.xml \
diff --git a/configs/lito/mixer_paths.xml b/configs/lito/mixer_paths.xml
index 6cd7fb2..617b7a8 100644
--- a/configs/lito/mixer_paths.xml
+++ b/configs/lito/mixer_paths.xml
@@ -320,6 +320,7 @@
<ctl name="MultiMedia1 Mixer TX_CDC_DMA_TX_3" value="0" />
<ctl name="ADC2_MIXER Switch" value="0" />
<ctl name="ADC2 MUX" value="ZERO" />
+ <ctl name="DEC0_BCS Switch" value="0" />
<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" />
@@ -2363,48 +2364,49 @@
<!-- These are actual sound device specific mixer settings -->
<path name="amic2">
- <ctl name="TX DEC5 MUX" value="SWR_MIC" />
- <ctl name="TX SMIC MUX5" value="ADC1" />
+ <ctl name="TX DEC0 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX0" value="ADC1" />
<ctl name="TX_CDC_DMA_TX_4 Channels" value="One" />
- <ctl name="TX_AIF2_CAP Mixer DEC5" value="1" />
+ <ctl name="TX_AIF2_CAP Mixer DEC0" value="1" />
+ <ctl name="DEC0_BCS Switch" value="1" />
<ctl name="ADC2_MIXER Switch" value="1" />
<ctl name="ADC2 MUX" value="INP2" />
</path>
<path name="dmic1">
<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="DMIC0" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC0" />
</path>
<path name="dmic2">
<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="DMIC1" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC1" />
</path>
<path name="dmic3">
<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="DMIC2" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC2" />
</path>
<path name="dmic4">
<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="DMIC3" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC3" />
</path>
<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" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC4" />
</path>
<path name="dmic6">
<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="DMIC5" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC5" />
</path>
<path name="speaker">
@@ -2475,7 +2477,7 @@
<path name="sidetone-headphones">
<path name="sidetone-iir" />
<ctl name="IIR0 INP0 Volume" value="54" />
- <ctl name="IIR0 INP0 MUX" value="DEC0" />
+ <ctl name="IIR0 INP0 MUX" value="DEC2" />
<ctl name="RX INT0 MIX2 INP" value="SRC0" />
<ctl name="RX INT1 MIX2 INP" value="SRC0" />
</path>
@@ -2483,7 +2485,7 @@
<path name="sidetone-handset">
<path name="sidetone-iir" />
<ctl name="IIR0 INP0 Volume" value="54" />
- <ctl name="IIR0 INP0 MUX" value="DEC0" />
+ <ctl name="IIR0 INP0 MUX" value="DEC2" />
<ctl name="RX INT2 MIX2 INP" value="SRC0" />
<ctl name="WSA_RX0 INT0 SIDETONE MIX" value="SRC0" />
</path>
@@ -2592,6 +2594,7 @@
</path>
<path name="headset-mic">
+ <ctl name="TX_DEC0 Volume" value="84" />
<path name="amic2" />
</path>
@@ -2766,23 +2769,23 @@
<!-- Dual MIC devices -->
<path name="handset-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="DMIC1" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC1" />
<ctl name="TX_AIF1_CAP Mixer DEC1" value="1" />
<ctl name="TX DMIC MUX1" value="DMIC3" />
</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="DMIC4" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC4" />
<ctl name="TX_AIF1_CAP Mixer DEC1" value="1" />
<ctl name="TX DMIC MUX1" value="DMIC1" />
</path>
<path name="dmic-endfire">
<path name="handset-dmic-endfire" />
- <ctl name="IIR0 INP0 MUX" value="DEC0" />
+ <ctl name="IIR0 INP0 MUX" value="DEC2" />
</path>
<path name="dmic-endfire-liquid">
@@ -2843,15 +2846,15 @@
</path>
<path name="speaker-dmic-broadside">
<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="DMIC4" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC4" />
<ctl name="TX_AIF1_CAP Mixer DEC1" value="1" />
<ctl name="TX DMIC MUX1" value="DMIC1" />
</path>
<path name="dmic-broadside">
<path name="speaker-dmic-broadside" />
- <ctl name="IIR0 INP0 MUX" value="DEC0" />
+ <ctl name="IIR0 INP0 MUX" value="DEC2" />
</path>
<path name="voice-speaker-dmic-broadside">
@@ -2861,8 +2864,8 @@
<!-- Tri MIC devices -->
<path name="three-mic">
<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="DMIC3" />
+ <ctl name="TX_AIF1_CAP Mixer DEC3" value="1" />
+ <ctl name="TX DMIC MUX3" value="DMIC3" />
<ctl name="TX_AIF1_CAP Mixer DEC1" value="1" />
<ctl name="TX DMIC MUX1" value="DMIC0" />
<ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
@@ -2871,8 +2874,8 @@
<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="DMIC4" />
+ <ctl name="TX_AIF1_CAP Mixer DEC3" value="1" />
+ <ctl name="TX DMIC MUX3" value="DMIC4" />
<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" />
@@ -2886,8 +2889,8 @@
<!-- Quad MIC devices -->
<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="DMIC4" />
+ <ctl name="TX_AIF1_CAP Mixer DEC4" value="1" />
+ <ctl name="TX DMIC MUX4" value="DMIC4" />
<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" />
diff --git a/configs/lito/mixer_paths_cdp.xml b/configs/lito/mixer_paths_cdp.xml
new file mode 100644
index 0000000..c15f411
--- /dev/null
+++ b/configs/lito/mixer_paths_cdp.xml
@@ -0,0 +1,2918 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- Copyright (c) 2019, The Linux Foundation. All rights reserved. -->
+<!-- -->
+<!-- Redistribution and use in source and binary forms, with or without -->
+<!-- modification, are permitted provided that the following conditions are -->
+<!-- met: -->
+<!-- * Redistributions of source code must retain the above copyright -->
+<!-- notice, this list of conditions and the following disclaimer. -->
+<!-- * Redistributions in binary form must reproduce the above -->
+<!-- copyright notice, this list of conditions and the following -->
+<!-- disclaimer in the documentation and/or other materials provided -->
+<!-- with the distribution. -->
+<!-- * Neither the name of The Linux Foundation nor the names of its -->
+<!-- contributors may be used to endorse or promote products derived -->
+<!-- from this software without specific prior written permission. -->
+<!-- -->
+<!-- THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED -->
+<!-- WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -->
+<!-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT -->
+<!-- ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS -->
+<!-- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -->
+<!-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -->
+<!-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -->
+<!-- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -->
+<!-- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -->
+<!-- OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -->
+<!-- IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -->
+<mixer>
+ <!-- These are the initial mixer settings -->
+ <ctl name="Voice Rx Device Mute" id="0" value="0" />
+ <ctl name="Voice Rx Device Mute" id="1" value="-1" />
+ <ctl name="Voice Rx Device Mute" id="2" value="20" />
+ <ctl name="Voice Tx Mute" id="0" value="0" />
+ <ctl name="Voice Tx Mute" id="1" value="-1" />
+ <ctl name="Voice Tx Mute" id="2" value="500" />
+ <ctl name="Voice Rx Gain" id="0" value="0" />
+ <ctl name="Voice Rx Gain" id="1" value="-1" />
+ <ctl name="Voice Rx Gain" id="2" value="20" />
+ <ctl name="Voice Sidetone Enable" value="0" />
+ <ctl name="Voip Tx Mute" id="0" value="0" />
+ <ctl name="Voip Tx Mute" id="1" value="500" />
+ <ctl name="Voip Rx Gain" id="0" value="0" />
+ <ctl name="Voip Rx Gain" id="1" value="20" />
+ <ctl name="Voip Mode Config" value="12" />
+ <ctl name="Voip Rate Config" value="0" />
+ <ctl name="Voip Evrc Min Max Rate Config" id="0" value="1" />
+ <ctl name="Voip Evrc Min Max Rate Config" id="1" value="4" />
+ <ctl name="Voip Dtx Mode" value="0" />
+ <ctl name="TTY Mode" value="OFF" />
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia1" value="0" />
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia4" value="0" />
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia5" value="0" />
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia7" value="0" />
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia8" value="0" />
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia10" value="0" />
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia11" value="0" />
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia12" value="0" />
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia13" value="0" />
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia14" value="0" />
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia15" value="0" />
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia16" value="0" />
+ <ctl name="MultiMedia5 Mixer AFE_PCM_TX" value="0" />
+ <ctl name="MultiMedia5 Mixer TX_CDC_DMA_TX_3" value="0" />
+ <ctl name="MultiMedia1 Mixer TX_CDC_DMA_TX_3" value="0" />
+ <ctl name="MultiMedia1 Mixer TX_CDC_DMA_TX_4" value="0" />
+ <ctl name="MultiMedia1 Mixer SLIM_7_TX" value="0" />
+ <ctl name="MultiMedia8 Mixer SLIM_7_TX" value="0" />
+ <ctl name="MultiMedia10 Mixer TX_CDC_DMA_TX_3" value="0" />
+ <ctl name="MultiMedia10 Mixer TX_CDC_DMA_TX_4" value="0" />
+ <ctl name="MultiMedia10 Mixer SLIM_7_TX" value="0" />
+ <ctl name="MultiMedia10 Mixer AFE_PCM_TX" value="0" />
+ <ctl name="MultiMedia17 Mixer TX_CDC_DMA_TX_3" value="0" />
+ <ctl name="MultiMedia17 Mixer TX_CDC_DMA_TX_4" value="0" />
+ <ctl name="MultiMedia17 Mixer SLIM_7_TX" value="0" />
+ <ctl name="DISPLAY_PORT Mixer MultiMedia1" value="0" />
+ <ctl name="DISPLAY_PORT Mixer MultiMedia2" value="0" />
+ <ctl name="DISPLAY_PORT Mixer MultiMedia3" value="0" />
+ <ctl name="DISPLAY_PORT Mixer MultiMedia4" value="0" />
+ <ctl name="DISPLAY_PORT Mixer MultiMedia5" value="0" />
+ <ctl name="DISPLAY_PORT Mixer MultiMedia6" value="0" />
+ <ctl name="DISPLAY_PORT Mixer MultiMedia7" value="0" />
+ <ctl name="DISPLAY_PORT Mixer MultiMedia8" value="0" />
+ <ctl name="DISPLAY_PORT Mixer MultiMedia9" value="0" />
+ <ctl name="DISPLAY_PORT Mixer MultiMedia10" value="0" />
+ <ctl name="DISPLAY_PORT Mixer MultiMedia11" value="0" />
+ <ctl name="DISPLAY_PORT Mixer MultiMedia12" value="0" />
+ <ctl name="DISPLAY_PORT Mixer MultiMedia13" value="0" />
+ <ctl name="DISPLAY_PORT Mixer MultiMedia14" value="0" />
+ <ctl name="DISPLAY_PORT Mixer MultiMedia15" value="0" />
+ <ctl name="DISPLAY_PORT Mixer MultiMedia16" value="0" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia1" value="0" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia2" value="0" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia3" value="0" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia4" value="0" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia5" value="0" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia7" value="0" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia8" value="0" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia10" value="0" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia11" value="0" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia12" value="0" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia13" value="0" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia14" value="0" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia15" value="0" />
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia16" value="0" />
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia1" value="0" />
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia2" value="0" />
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia3" value="0" />
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia4" value="0" />
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia5" value="0" />
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia7" value="0" />
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia8" value="0" />
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia10" value="0" />
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia11" value="0" />
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia12" value="0" />
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia13" value="0" />
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia14" value="0" />
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia15" value="0" />
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia16" value="0" />
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia1" value="0" />
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia2" value="0" />
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia3" value="0" />
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia4" value="0" />
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia5" value="0" />
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia7" value="0" />
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia8" value="0" />
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia10" value="0" />
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia11" value="0" />
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia12" value="0" />
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia13" value="0" />
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia14" value="0" />
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia15" value="0" />
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia16" value="0" />
+ <ctl name="MultiMedia1 Mixer USB_AUDIO_TX" value="0" />
+ <ctl name="MultiMedia2 Mixer USB_AUDIO_TX" value="0" />
+ <ctl name="MultiMedia5 Mixer USB_AUDIO_TX" value="0" />
+ <ctl name="MultiMedia8 Mixer USB_AUDIO_TX" value="0" />
+ <ctl name="MultiMedia10 Mixer USB_AUDIO_TX" value="0" />
+ <ctl name="MultiMedia17 Mixer USB_AUDIO_TX" value="0" />
+ <ctl name="TX_CDC_DMA_TX_3 Channels" value="One" />
+ <ctl name="WSA_CDC_DMA_RX_0 Channels" value="One" />
+ <ctl name="RX_CDC_DMA_RX_0 Channels" value="One" />
+ <ctl name="VI_FEED_TX Channels" value="Two" />
+ <ctl name="WSA_AIF_VI Mixer WSA_SPKR_VI_1" value="0" />
+ <ctl name="WSA_AIF_VI Mixer WSA_SPKR_VI_2" value="0" />
+ <ctl name="WSA_CDC_DMA_RX_0 Format" value="UNPACKED" />
+ <ctl name="WSA_CDC_DMA_TX_0 Format" value="UNPACKED" />
+ <ctl name="RX_CDC_DMA_RX_0 Format" value="UNPACKED" />
+ <ctl name="TX_CDC_DMA_TX_3 Format" value="UNPACKED" />
+ <!-- HFP start -->
+ <ctl name="HFP_SLIM7_UL_HL Switch" value="0" />
+ <ctl name="WSA_CDC_DMA_RX_0 Port Mixer SLIM_7_TX" value="0" />
+ <ctl name="RX_CDC_DMA_RX_0 Port Mixer SLIM_7_TX" value="0" />
+ <!-- HFP end -->
+ <!-- echo reference -->
+ <ctl name="AUDIO_REF_EC_UL1 MUX" value="None" />
+ <!-- usb headset -->
+ <ctl name="AFE_PCM_RX Audio Mixer MultiMedia1" value="0" />
+ <ctl name="AFE_PCM_RX Audio Mixer MultiMedia2" value="0" />
+ <ctl name="AFE_PCM_RX Audio Mixer MultiMedia4" value="0" />
+ <ctl name="AFE_PCM_RX Audio Mixer MultiMedia7" value="0" />
+ <ctl name="AFE_PCM_RX Audio Mixer MultiMedia10" value="0" />
+ <ctl name="AFE_PCM_RX Audio Mixer MultiMedia11" value="0" />
+ <ctl name="AFE_PCM_RX Audio Mixer MultiMedia12" value="0" />
+ <ctl name="AFE_PCM_RX Audio Mixer MultiMedia13" value="0" />
+ <ctl name="AFE_PCM_RX Audio Mixer MultiMedia14" value="0" />
+ <ctl name="AFE_PCM_RX Audio Mixer MultiMedia15" value="0" />
+ <ctl name="AFE_PCM_RX Audio Mixer MultiMedia16" value="0" />
+ <ctl name="MultiMedia1 Mixer AFE_PCM_TX" value="0" />
+ <ctl name="AFE_PCM_RX Audio Mixer MultiMedia5" value="0" />
+ <!-- usb headset end -->
+ <!-- fm -->
+ <ctl name="Tert MI2S LOOPBACK Volume" value="0" />
+ <ctl name="WSA_CDC_DMA_RX_0 Port Mixer SLIM_8_TX" value="0" />
+ <ctl name="WSA_CDC_DMA_RX_0_DL_HL Switch" value="0" />
+ <ctl name="RX_CDC_DMA_RX_0 Port Mixer SLIM_8_TX" value="0" />
+ <ctl name="RX_CDC_DMA_RX_0_DL_HL Switch" value="0" />
+ <ctl name="MultiMedia1 Mixer SLIM_8_TX" value="0" />
+ <ctl name="MultiMedia2 Mixer SLIM_8_TX" value="0" />
+ <!-- fm end -->
+
+ <!-- Multimode Voice1 -->
+ <ctl name="WSA_CDC_DMA_RX_0_Voice Mixer VoiceMMode1" value="0" />
+ <ctl name="RX_CDC_DMA_RX_0_Voice Mixer VoiceMMode1" value="0" />
+ <ctl name="VoiceMMode1_Tx Mixer TX_CDC_DMA_TX_3_MMode1" value="0" />
+ <ctl name="VoiceMMode1_Tx Mixer TX_CDC_DMA_TX_4_MMode1" value="0" />
+ <!-- Multimode Voice1 BTSCO -->
+ <ctl name="SLIM_7_RX_Voice Mixer VoiceMMode1" value="0" />
+ <ctl name="VoiceMMode1_Tx Mixer SLIM_7_TX_MMode1" value="0" />
+ <!-- Multimode Voice1 USB headset -->
+ <ctl name="AFE_PCM_RX_Voice Mixer VoiceMMode1" value="0" />
+ <ctl name="VoiceMMode1_Tx Mixer AFE_PCM_TX_MMode1" value="0" />
+ <ctl name="USB_AUDIO_RX_Voice Mixer VoiceMMode1" value="0" />
+ <ctl name="VoiceMMode1_Tx Mixer USB_AUDIO_TX_MMode1" value="0" />
+ <!-- Multimode Voice1 Display-Port -->
+ <ctl name="DISPLAY_PORT_RX_Voice Mixer VoiceMMode1" value="0" />
+ <!-- Miltimode Voice1 end-->
+
+ <!-- Multimode Voice2 -->
+ <ctl name="WSA_CDC_DMA_RX_0_Voice Mixer VoiceMMode2" value="0" />
+ <ctl name="RX_CDC_DMA_RX_0_Voice Mixer VoiceMMode2" value="0" />
+ <ctl name="VoiceMMode1_Tx Mixer TX_CDC_DMA_TX_3_MMode2" value="0" />
+ <ctl name="VoiceMMode1_Tx Mixer TX_CDC_DMA_TX_4_MMode2" value="0" />
+ <!-- Multimode Voice2 BTSCO -->
+ <ctl name="SLIM_7_RX_Voice Mixer VoiceMMode2" value="0" />
+ <ctl name="VoiceMMode2_Tx Mixer SLIM_7_TX_MMode2" value="0" />
+ <!-- Multimode Voice2 USB headset -->
+ <ctl name="AFE_PCM_RX_Voice Mixer VoiceMMode2" value="0" />
+ <ctl name="VoiceMMode2_Tx Mixer AFE_PCM_TX_MMode2" value="0" />
+ <ctl name="USB_AUDIO_RX_Voice Mixer VoiceMMode2" value="0" />
+ <ctl name="VoiceMMode2_Tx Mixer USB_AUDIO_TX_MMode2" value="0" />
+ <!-- Multimode Voice2 Display-Port -->
+ <ctl name="DISPLAY_PORT_RX_Voice Mixer VoiceMMode2" value="0" />
+ <!-- Multimode Voice2 end-->
+
+ <!-- Voice external ec. reference -->
+ <ctl name="VOC_EXT_EC MUX" value="NONE" />
+ <!-- Voice external ec. reference end -->
+
+ <!-- RT Proxy Cal -->
+ <ctl name="RT_PROXY_1_RX SetCalMode" value="CAL_MODE_NONE" />
+ <ctl name="RT_PROXY_1_TX SetCalMode" value="CAL_MODE_NONE" />
+ <!-- RT Proxy Cal end -->
+
+ <!-- Incall Recording -->
+ <ctl name="MultiMedia1 Mixer VOC_REC_UL" value="0" />
+ <ctl name="MultiMedia1 Mixer VOC_REC_DL" value="0" />
+ <ctl name="MultiMedia8 Mixer VOC_REC_UL" value="0" />
+ <ctl name="MultiMedia8 Mixer VOC_REC_DL" value="0" />
+ <!-- Incall Recording End -->
+
+ <!-- Incall Music -->
+ <ctl name="Incall_Music Audio Mixer MultiMedia2" value="0" />
+ <ctl name="Incall_Music Audio Mixer MultiMedia9" value="0" />
+ <!-- Incall Music End -->
+
+ <!-- compress-voip-call start -->
+ <ctl name="WSA_CDC_DMA_RX_0_Voice Mixer Voip" value="0" />
+ <ctl name="RX_CDC_DMA_RX_0_Voice Mixer Voip" value="0" />
+ <ctl name="Voip_Tx Mixer TX_CDC_DMA_TX_3_Voip" value="0" />
+ <ctl name="SLIM_7_RX_Voice Mixer Voip" value="0" />
+ <ctl name="Voip_Tx Mixer SLIM_7_TX_Voip" value="0" />
+ <ctl name="AFE_PCM_RX_Voice Mixer Voip" value="0" />
+ <ctl name="Voip_Tx Mixer AFE_PCM_TX_Voip" value="0" />
+ <ctl name="USB_AUDIO_RX_Voice Mixer Voip" value="0" />
+ <ctl name="Voip_Tx Mixer USB_AUDIO_TX_Voip" value="0" />
+ <!-- compress-voip-call end-->
+
+ <!-- Audio BTSCO -->
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia1" value="0" />
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia4" value="0" />
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia5" value="0" />
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia6" value="0" />
+ <ctl name="MultiMedia1 Mixer SLIM_7_TX" value="0" />
+ <!-- audio record compress-->
+ <ctl name="MultiMedia8 Mixer TX_CDC_DMA_TX_3" value="0" />
+ <ctl name="MultiMedia8 Mixer SLIM_7_TX" value="0" />
+ <ctl name="MultiMedia8 Mixer AFE_PCM_TX" value="0" />
+ <!-- audio record compress end-->
+
+ <!-- split a2dp -->
+ <ctl name="BT SampleRate" value="KHZ_8" />
+ <ctl name="AFE Input Channels" value="Zero" />
+ <ctl name="SLIM7_RX ADM Channels" value="Zero" />
+ <!-- split a2dp end-->
+
+ <!-- ADSP testfwk -->
+ <ctl name="WSA_CDC_DMA_RX_0_DL_HL Switch" value="0" />
+ <ctl name="RX_CDC_DMA_RX_0_DL_HL Switch" value="0" />
+ <!-- ADSP testfwk end-->
+
+ <ctl name="AFE_PCM_RX Audio Mixer MultiMedia3" value="0" />
+
+ <!-- Codec controls -->
+ <!-- WSA controls -->
+ <ctl name="WSA RX0 MUX" value="ZERO" />
+ <ctl name="WSA RX1 MUX" value="ZERO" />
+ <ctl name="WSA_RX0 INP0" value="ZERO" />
+ <ctl name="WSA_RX1 INP0" value="ZERO" />
+ <ctl name="WSA_AIF_VI Mixer WSA_SPKR_VI_1" value="0" />
+ <ctl name="WSA_AIF_VI Mixer WSA_SPKR_VI_2" value="0" />
+ <ctl name="WSA_RX_0_VI_FB_LCH_MUX" value="ZERO" />
+ <ctl name="WSA_RX_0_VI_FB_RCH_MUX" value="ZERO" />
+ <ctl name="SpkrLeft COMP Switch" value="0" />
+ <ctl name="SpkrRight COMP Switch" value="0" />
+ <ctl name="SpkrLeft BOOST Switch" value="0" />
+ <ctl name="SpkrRight BOOST Switch" value="0" />
+ <ctl name="SpkrLeft VISENSE Switch" value="0" />
+ <ctl name="SpkrRight VISENSE Switch" value="0" />
+ <ctl name="SpkrLeft SWR DAC_Port Switch" value="0" />
+ <ctl name="SpkrRight SWR DAC_Port Switch" value="0" />
+
+ <!-- RX Controls -->
+ <ctl name="RX_MACRO RX0 MUX" value="ZERO" />
+ <ctl name="RX_MACRO RX1 MUX" value="ZERO" />
+ <ctl name="RX_CDC_DMA_RX_0 Channels" value="One" />
+ <ctl name="RX INT0_1 MIX1 INP0" value="ZERO" />
+ <ctl name="RX INT0_1 MIX1 INP1" value="ZERO" />
+ <ctl name="RX INT0_1 MIX1 INP2" value="ZERO" />
+ <ctl name="RX INT1_1 MIX1 INP0" value="ZERO" />
+ <ctl name="RX INT1_1 MIX1 INP1" value="ZERO" />
+ <ctl name="RX INT1_1 MIX1 INP2" value="ZERO" />
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia1" value="0" />
+ <ctl name="RX INT0 DEM MUX" value="NORMAL_DSM_OUT" />
+ <ctl name="RX INT1 DEM MUX" value="NORMAL_DSM_OUT" />
+ <ctl name="RX_COMP1 Switch" value="0" />
+ <ctl name="RX_COMP2 Switch" value="0" />
+ <ctl name="HPHL_COMP Switch" value="0" />
+ <ctl name="HPHR_COMP Switch" value="0" />
+ <ctl name="EAR_RDAC Switch" value="0" />
+ <ctl name="HPHL_RDAC Switch" value="0" />
+ <ctl name="HPHR_RDAC Switch" value="0" />
+ <ctl name="AUX_RDAC Switch" value="0" />
+ <ctl name="RDAC3_MUX" value="ZERO" />
+ <ctl name="RX_EAR Mode" value="OFF" />
+
+ <!-- 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="ADC2_MIXER Switch" value="0" />
+ <ctl name="DEC0_BCS Switch" value="0" />
+ <ctl name="ADC2 MUX" value="ZERO" />
+ <ctl name="ADC3_MIXER Switch" value="0" />
+ <ctl name="ADC3 MUX" value="ZERO" />
+ <ctl name="ADC4_MIXER Switch" value="0" />
+ <ctl name="ADC4 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" />
+ <ctl name="TX_AIF1_CAP Mixer DEC3" value="0" />
+ <ctl name="TX_AIF1_CAP Mixer DEC4" value="0" />
+ <ctl name="TX_AIF1_CAP Mixer DEC5" value="0" />
+ <ctl name="TX_AIF1_CAP Mixer DEC6" value="0" />
+ <ctl name="TX_AIF1_CAP Mixer DEC7" value="0" />
+ <ctl name="TX DEC0 MUX" value="MSM_DMIC" />
+ <ctl name="TX DMIC MUX0" value="ZERO" />
+ <ctl name="TX SMIC MUX0" value="ZERO" />
+ <ctl name="TX DEC1 MUX" value="MSM_DMIC" />
+ <ctl name="TX DMIC MUX1" value="ZERO" />
+ <ctl name="TX SMIC MUX1" value="ZERO" />
+ <ctl name="TX DEC2 MUX" value="MSM_DMIC" />
+ <ctl name="TX DMIC MUX2" value="ZERO" />
+ <ctl name="TX SMIC MUX2" value="ZERO" />
+ <ctl name="TX DEC3 MUX" value="MSM_DMIC" />
+ <ctl name="TX DMIC MUX3" value="ZERO" />
+ <ctl name="TX SMIC MUX3" value="ZERO" />
+ <ctl name="TX DEC4 MUX" value="MSM_DMIC" />
+ <ctl name="TX DMIC MUX4" value="ZERO" />
+ <ctl name="TX SMIC MUX4" value="ZERO" />
+ <ctl name="TX DEC5 MUX" value="MSM_DMIC" />
+ <ctl name="TX DMIC MUX5" value="ZERO" />
+ <ctl name="TX SMIC MUX5" value="ZERO" />
+ <ctl name="TX DEC6 MUX" value="MSM_DMIC" />
+ <ctl name="TX DMIC MUX6" value="ZERO" />
+ <ctl name="TX SMIC MUX6" value="ZERO" />
+ <ctl name="TX DEC7 MUX" value="MSM_DMIC" />
+ <ctl name="TX DMIC MUX7" value="ZERO" />
+ <ctl name="TX SMIC MUX7" value="ZERO" />
+
+ <!-- Volume controls -->
+ <ctl name="WSA_RX0 Digital Volume" value="84" />
+ <ctl name="WSA_RX1 Digital Volume" value="84" />
+ <ctl name="RX_RX0 Digital Volume" value="84" />
+ <ctl name="RX_RX1 Digital Volume" value="84" />
+ <ctl name="RX_RX2 Digital Volume" value="84" />
+ <ctl name="HPHL Volume" value="20" />
+ <ctl name="HPHR Volume" value="20" />
+ <ctl name="EAR SPKR PA Gain" value="G_DEFAULT" />
+
+ <ctl name="TX_DEC0 Volume" value="102" />
+ <ctl name="TX_DEC1 Volume" value="102" />
+ <ctl name="TX_DEC2 Volume" value="102" />
+ <ctl name="TX_DEC3 Volume" value="102" />
+ <ctl name="TX_DEC4 Volume" value="84" />
+ <ctl name="TX_DEC5 Volume" value="84" />
+ <ctl name="TX_DEC6 Volume" value="84" />
+ <ctl name="TX_DEC7 Volume" value="84" />
+
+ <ctl name="ADC1 Volume" value="12" />
+ <ctl name="ADC2 Volume" value="12" />
+ <ctl name="ADC3 Volume" value="12" />
+
+ <!-- Compander controls -->
+ <ctl name="WSA_COMP1 Switch" value="0" />
+ <ctl name="WSA_COMP2 Switch" value="0" />
+ <ctl name="COMP7 Switch" value="0" />
+ <ctl name="COMP8 Switch" value="0" />
+
+ <!-- Headphone class-H mode -->
+ <ctl name="RX_HPH_PWR_MODE" value="ULP" />
+ <ctl name="RX HPH Mode" value="CLS_H_ULP" />
+
+ <!-- IIR/voice anc -->
+ <ctl name="IIR0 Band1" id ="0" value="268435456" />
+ <ctl name="IIR0 Band1" id ="1" value="0" />
+ <ctl name="IIR0 Band1" id ="2" value="0" />
+ <ctl name="IIR0 Band1" id ="3" value="0" />
+ <ctl name="IIR0 Band1" id ="4" value="0" />
+ <ctl name="IIR0 Band2" id ="0" value="268435456" />
+ <ctl name="IIR0 Band2" id ="1" value="0" />
+ <ctl name="IIR0 Band2" id ="2" value="0" />
+ <ctl name="IIR0 Band2" id ="3" value="0" />
+ <ctl name="IIR0 Band2" id ="4" value="0" />
+ <ctl name="IIR0 Band3" id ="0" value="268435456" />
+ <ctl name="IIR0 Band3" id ="1" value="0" />
+ <ctl name="IIR0 Band3" id ="2" value="0" />
+ <ctl name="IIR0 Band3" id ="3" value="0" />
+ <ctl name="IIR0 Band3" id ="4" value="0" />
+ <ctl name="IIR0 Band4" id ="0" value="268435456" />
+ <ctl name="IIR0 Band4" id ="1" value="0" />
+ <ctl name="IIR0 Band4" id ="2" value="0" />
+ <ctl name="IIR0 Band4" id ="3" value="0" />
+ <ctl name="IIR0 Band4" id ="4" value="0" />
+ <ctl name="IIR0 Band5" id ="0" value="268435456" />
+ <ctl name="IIR0 Band5" id ="1" value="0" />
+ <ctl name="IIR0 Band5" id ="2" value="0" />
+ <ctl name="IIR0 Band5" id ="3" value="0" />
+ <ctl name="IIR0 Band5" id ="4" value="0" />
+ <ctl name="IIR0 Enable Band1" value="0" />
+ <ctl name="IIR0 Enable Band2" value="0" />
+ <ctl name="IIR0 Enable Band3" value="0" />
+ <ctl name="IIR0 Enable Band4" value="0" />
+ <ctl name="IIR0 Enable Band5" value="0" />
+ <ctl name="IIR0 INP0 Volume" value="54" />
+ <ctl name="IIR0 INP0 MUX" value="ZERO" />
+ <ctl name="IIR0 INP1 MUX" value="ZERO" />
+ <ctl name="IIR0 INP2 MUX" value="ZERO" />
+ <ctl name="IIR0 INP3 MUX" value="ZERO" />
+
+ <!-- vbat related data -->
+ <ctl name="GSM mode Enable" value="OFF" />
+ <ctl name="WSA_Softclip0 Enable" value="0" />
+ <ctl name="WSA_Softclip1 Enable" value="0" />
+ <ctl name="WSA_RX INT0 VBAT WSA RX0 VBAT Enable" value="0" />
+ <ctl name="WSA_RX INT1 VBAT WSA RX1 VBAT Enable" value="0" />
+
+ <!-- Codec controls end -->
+
+ <!-- defaults for mmap record -->
+ <ctl name="MultiMedia16 Mixer TX_CDC_DMA_TX_3" value="0" />
+ <ctl name="MultiMedia16 Mixer TX_CDC_DMA_TX_4" value="0" />
+ <ctl name="MultiMedia16 Mixer SLIM_7_TX" value="0" />
+ <ctl name="MultiMedia16 Mixer SLIM_8_TX" value="0" />
+ <ctl name="MultiMedia16 Mixer USB_AUDIO_TX" value="0" />
+
+ <!-- These are audio route (FE to BE) specific mixer settings -->
+ <path name="gsm-mode">
+ <ctl name="GSM mode Enable" value="ON" />
+ </path>
+
+ <path name="echo-reference">
+ <ctl name="AUDIO_REF_EC_UL1 MUX" value="WSA_CDC_DMA_RX_0" />
+ </path>
+
+ <path name="echo-reference headphones">
+ <ctl name="AUDIO_REF_EC_UL1 MUX" value="RX_CDC_DMA_RX_0" />
+ </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" />
+ </path>
+
+ <path name="echo-reference headphones-44.1">
+ <ctl name="AUDIO_REF_EC_UL1 MUX" value="RX_CDC_DMA_RX_0" />
+ </path>
+
+ <path name="echo-reference-voip">
+ <ctl name="AUDIO_REF_EC_UL10 MUX" value="WSA_CDC_DMA_RX_0" />
+ </path>
+
+ <path name="echo-reference-voip headphones">
+ <ctl name="AUDIO_REF_EC_UL10 MUX" value="RX_CDC_DMA_RX_0" />
+ </path>
+
+ <path name="deep-buffer-playback">
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia1" value="1" />
+ </path>
+
+ <path name="deep-buffer-playback speaker-protected">
+ <path name="deep-buffer-playback" />
+ </path>
+
+ <path name="deep-buffer-playback display-port">
+ <ctl name="DISPLAY_PORT Mixer MultiMedia1" value="1" />
+ </path>
+
+ <path name="deep-buffer-playback speaker-and-display-port">
+ <path name="deep-buffer-playback display-port" />
+ <path name="deep-buffer-playback" />
+ </path>
+
+ <path name="deep-buffer-playback bt-sco">
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia1" value="1" />
+ </path>
+
+ <path name="deep-buffer-playback bt-sco-wb">
+ <ctl name="BT SampleRate" value="KHZ_16" />
+ <path name="deep-buffer-playback bt-sco" />
+ </path>
+
+ <path name="deep-buffer-playback bt-sco-swb">
+ <path name="deep-buffer-playback bt-sco" />
+ </path>
+
+ <path name="deep-buffer-playback afe-proxy">
+ <ctl name="AFE_PCM_RX Audio Mixer MultiMedia1" value="1" />
+ </path>
+
+ <path name="deep-buffer-playback usb-headphones">
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia1" value="1" />
+ </path>
+
+ <path name="deep-buffer-playback usb-headset">
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia1" value="1" />
+ </path>
+
+ <path name="deep-buffer-playback speaker-and-usb-headphones">
+ <path name="deep-buffer-playback usb-headphones" />
+ <path name="deep-buffer-playback" />
+ </path>
+
+ <path name="deep-buffer-playback headphones">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia1" value="1" />
+ </path>
+
+ <path name="deep-buffer-playback headset">
+ <path name="deep-buffer-playback headphones" />
+ </path>
+
+ <path name="deep-buffer-playback speaker-and-headphones">
+ <path name="deep-buffer-playback headphones" />
+ <path name="deep-buffer-playback" />
+ </path>
+
+ <path name="deep-buffer-playback speaker-and-bt-sco">
+ <path name="deep-buffer-playback bt-sco" />
+ <path name="deep-buffer-playback" />
+ </path>
+
+ <path name="deep-buffer-playback speaker-and-bt-sco-wb">
+ <path name="deep-buffer-playback bt-sco-wb" />
+ <path name="deep-buffer-playback" />
+ </path>
+
+ <path name="deep-buffer-playback speaker-and-bt-sco-swb">
+ <path name="deep-buffer-playback bt-sco-swb" />
+ <path name="deep-buffer-playback" />
+ </path>
+
+ <path name="low-latency-playback">
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia5" value="1" />
+ </path>
+
+ <path name="low-latency-playback speaker-protected">
+ <path name="low-latency-playback" />
+ </path>
+
+ <path name="low-latency-playback display-port">
+ <ctl name="DISPLAY_PORT Mixer MultiMedia5" value="1" />
+ </path>
+
+ <path name="low-latency-playback bt-sco">
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia5" value="1" />
+ </path>
+
+ <path name="low-latency-playback bt-sco-wb">
+ <ctl name="BT SampleRate" value="KHZ_16" />
+ <path name="low-latency-playback bt-sco" />
+ </path>
+
+ <path name="low-latency-playback bt-sco-swb">
+ <path name="low-latency-playback bt-sco" />
+ </path>
+
+ <path name="low-latency-playback speaker-and-display-port">
+ <path name="low-latency-playback display-port" />
+ <path name="low-latency-playback" />
+ </path>
+
+ <path name="low-latency-playback afe-proxy">
+ <ctl name="AFE_PCM_RX Audio Mixer MultiMedia5" value="1" />
+ </path>
+
+ <path name="low-latency-playback usb-headphones">
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia5" value="1" />
+ </path>
+
+ <path name="low-latency-playback usb-headset">
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia5" value="1" />
+ </path>
+
+ <path name="low-latency-playback speaker-and-usb-headphones">
+ <path name="low-latency-playback usb-headphones" />
+ <path name="low-latency-playback" />
+ </path>
+
+ <path name="low-latency-playback headphones">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia5" value="1" />
+ </path>
+
+ <path name="low-latency-playback headset">
+ <path name="low-latency-playback headphones" />
+ </path>
+
+ <path name="low-latency-playback speaker-and-headphones">
+ <path name="low-latency-playback headphones" />
+ <path name="low-latency-playback" />
+ </path>
+ <path name="low-latency-playback resume">
+ <ctl name="MultiMedia5_RX QOS Vote" value="Enable" />
+ </path>
+
+ <path name="low-latency-playback speaker-and-bt-sco">
+ <path name="low-latency-playback bt-sco" />
+ <path name="low-latency-playback" />
+ </path>
+
+ <path name="low-latency-playback speaker-and-bt-sco-wb">
+ <path name="low-latency-playback bt-sco-wb" />
+ <path name="low-latency-playback" />
+ </path>
+
+ <path name="low-latency-playback speaker-and-bt-sco-swb">
+ <path name="low-latency-playback bt-sco-swb" />
+ <path name="low-latency-playback" />
+ </path>
+
+ <path name="audio-ull-playback">
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia8" value="1" />
+ </path>
+
+ <path name="audio-ull-playback speaker-protected">
+ <path name="audio-ull-playback" />
+ </path>
+
+ <path name="audio-ull-playback headphones">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia8" value="1" />
+ </path>
+
+ <path name="audio-ull-playback headset">
+ <path name="audio-ull-playback headphones" />
+ </path>
+
+ <path name="audio-ull-playback speaker-and-headphones">
+ <path name="audio-ull-playback" />
+ <path name="audio-ull-playback headphones" />
+ </path>
+
+ <path name="audio-ull-playback display-port">
+ <ctl name="DISPLAY_PORT Mixer MultiMedia8" value="1" />
+ </path>
+
+ <path name="audio-ull-playback bt-sco">
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia8" value="1" />
+ </path>
+
+ <path name="audio-ull-playback bt-sco-wb">
+ <ctl name="BT SampleRate" value="KHZ_16" />
+ <path name="audio-ull-playback bt-sco" />
+ </path>
+
+ <path name="audio-ull-playback bt-sco-swb">
+ <path name="audio-ull-playback bt-sco" />
+ </path>
+
+ <path name="audio-ull-playback speaker-and-display-port">
+ <path name="audio-ull-playback display-port" />
+ <path name="audio-ull-playback" />
+ </path>
+
+ <path name="audio-ull-playback afe-proxy">
+ <ctl name="AFE_PCM_RX Audio Mixer MultiMedia8" value="1" />
+ </path>
+
+ <path name="audio-ull-playback usb-headphones">
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia8" value="1" />
+ </path>
+
+ <path name="audio-ull-playback usb-headset">
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia8" value="1" />
+ </path>
+
+ <path name="audio-ull-playback speaker-and-bt-sco">
+ <path name="audio-ull-playback bt-sco" />
+ <path name="audio-ull-playback" />
+ </path>
+
+ <path name="audio-ull-playback speaker-and-bt-sco-wb">
+ <path name="audio-ull-playback bt-sco-wb" />
+ <path name="audio-ull-playback" />
+ </path>
+
+ <path name="audio-ull-playback speaker-and-bt-sco-swb">
+ <path name="audio-ull-playback bt-sco-swb" />
+ <path name="audio-ull-playback" />
+ </path>
+
+ <path name="multi-channel-playback display-port">
+ <ctl name="DISPLAY_PORT Mixer MultiMedia2" value="1" />
+ </path>
+
+ <path name="multi-channel-playback afe-proxy">
+ <ctl name="AFE_PCM_RX Audio Mixer MultiMedia2" value="1" />
+ </path>
+
+ <path name="compress-offload-playback">
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia4" value="1" />
+ </path>
+
+ <path name="compress-offload-playback speaker-protected">
+ <path name="compress-offload-playback" />
+ </path>
+
+ <path name="compress-offload-playback display-port">
+ <ctl name="DISPLAY_PORT Mixer MultiMedia4" value="1" />
+ </path>
+
+ <path name="silence-playback display-port">
+ <ctl name="DISPLAY_PORT Mixer MultiMedia9" value="1" />
+ </path>
+
+ <path name="compress-offload-playback bt-sco">
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia4" value="1" />
+ </path>
+
+ <path name="compress-offload-playback bt-sco-wb">
+ <ctl name="BT SampleRate" value="KHZ_16" />
+ <path name="compress-offload-playback bt-sco" />
+ </path>
+
+ <path name="compress-offload-playback bt-sco-swb">
+ <path name="compress-offload-playback bt-sco" />
+ </path>
+
+ <path name="compress-offload-playback speaker-and-display-port">
+ <path name="compress-offload-playback display-port" />
+ <path name="compress-offload-playback" />
+ </path>
+
+ <path name="compress-offload-playback afe-proxy">
+ <ctl name="AFE_PCM_RX Audio Mixer MultiMedia4" value="1" />
+ </path>
+
+ <path name="compress-offload-playback usb-headphones">
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia4" value="1" />
+ </path>
+
+ <path name="compress-offload-playback usb-headset">
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia4" value="1" />
+ </path>
+
+ <path name="compress-offload-playback speaker-and-usb-headphones">
+ <path name="compress-offload-playback usb-headphones" />
+ <path name="compress-offload-playback" />
+ </path>
+
+ <path name="compress-offload-playback headphones">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia4" value="1" />
+ </path>
+
+ <path name="compress-offload-playback headset">
+ <path name="compress-offload-playback headphones" />
+ </path>
+
+ <path name="compress-offload-playback headphones-44.1">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia4" value="1" />
+ </path>
+
+ <path name="compress-offload-playback headphones-dsd">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia4" value="1" />
+ </path>
+
+ <path name="compress-offload-playback speaker-and-headphones">
+ <path name="compress-offload-playback headphones" />
+ <path name="compress-offload-playback" />
+ </path>
+
+ <path name="compress-offload-playback speaker-and-bt-sco">
+ <path name="compress-offload-playback bt-sco" />
+ <path name="compress-offload-playback" />
+ </path>
+
+ <path name="compress-offload-playback speaker-and-bt-sco-wb">
+ <path name="compress-offload-playback bt-sco-wb" />
+ <path name="compress-offload-playback" />
+ </path>
+
+ <path name="compress-offload-playback speaker-and-bt-sco-swb">
+ <path name="compress-offload-playback bt-sco-swb" />
+ <path name="compress-offload-playback" />
+ </path>
+
+ <path name="compress-offload-playback2">
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia7" value="1" />
+ </path>
+
+ <path name="compress-offload-playback2 display-port">
+ <ctl name="DISPLAY_PORT Mixer MultiMedia7" value="1" />
+ </path>
+
+ <path name="compress-offload-playback2 bt-sco">
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia7" value="1" />
+ </path>
+
+ <path name="compress-offload-playback2 bt-sco-wb">
+ <ctl name="BT SampleRate" value="KHZ_16" />
+ <path name="compress-offload-playback2 bt-sco" />
+ </path>
+
+ <path name="compress-offload-playback2 bt-sco-swb">
+ <path name="compress-offload-playback2 bt-sco" />
+ </path>
+
+ <path name="compress-offload-playback2 speaker-and-display-port">
+ <path name="compress-offload-playback2 display-port" />
+ <path name="compress-offload-playback2" />
+ </path>
+
+ <path name="compress-offload-playback2 afe-proxy">
+ <ctl name="AFE_PCM_RX Audio Mixer MultiMedia7" value="1" />
+ </path>
+
+ <path name="compress-offload-playback2 usb-headphones">
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia7" value="1" />
+ </path>
+
+ <path name="compress-offload-playback2 usb-headset">
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia7" value="1" />
+ </path>
+
+ <path name="compress-offload-playback2 speaker-and-usb-headphones">
+ <path name="compress-offload-playback2 usb-headphones" />
+ <path name="compress-offload-playback2" />
+ </path>
+
+ <path name="compress-offload-playback2 headphones">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia7" value="1" />
+ </path>
+
+ <path name="compress-offload-playback2 headset">
+ <path name="compress-offload-playback2 headphones" />
+ </path>
+
+ <path name="compress-offload-playback2 headphones-44.1">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia7" value="1" />
+
+ </path>
+
+ <path name="compress-offload-playback2 headphones-dsd">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia7" value="1" />
+ </path>
+
+ <path name="compress-offload-playback2 speaker-and-headphones">
+ <path name="compress-offload-playback2 headphones" />
+ <path name="compress-offload-playback2" />
+ </path>
+
+ <path name="compress-offload-playback2 speaker-and-bt-sco">
+ <path name="compress-offload-playback2 bt-sco" />
+ <path name="compress-offload-playback2" />
+ </path>
+
+ <path name="compress-offload-playback2 speaker-and-bt-sco-wb">
+ <path name="compress-offload-playback2 bt-sco-wb" />
+ <path name="compress-offload-playback2" />
+ </path>
+
+ <path name="compress-offload-playback2 speaker-and-bt-sco-swb">
+ <path name="compress-offload-playback2 bt-sco-swb" />
+ <path name="compress-offload-playback2" />
+ </path>
+
+ <path name="compress-offload-playback3">
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia10" value="1" />
+ </path>
+
+ <path name="compress-offload-playback3 display-port">
+ <ctl name="DISPLAY_PORT Mixer MultiMedia10" value="1" />
+ </path>
+
+ <path name="compress-offload-playback3 bt-sco">
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia10" value="1" />
+ </path>
+
+ <path name="compress-offload-playback3 bt-sco-wb">
+ <ctl name="BT SampleRate" value="KHZ_16" />
+ <path name="compress-offload-playback3 bt-sco" />
+ </path>
+
+ <path name="compress-offload-playback3 bt-sco-swb">
+ <path name="compress-offload-playback3 bt-sco" />
+ </path>
+
+ <path name="compress-offload-playback3 speaker-and-display-port">
+ <path name="compress-offload-playback3 display-port" />
+ <path name="compress-offload-playback3" />
+ </path>
+
+ <path name="compress-offload-playback3 afe-proxy">
+ <ctl name="AFE_PCM_RX Audio Mixer MultiMedia10" value="1" />
+ </path>
+
+ <path name="compress-offload-playback3 usb-headphones">
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia10" value="1" />
+ </path>
+
+ <path name="compress-offload-playback3 usb-headset">
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia10" value="1" />
+ </path>
+
+ <path name="compress-offload-playback3 speaker-and-usb-headphones">
+ <path name="compress-offload-playback3 usb-headphones" />
+ <path name="compress-offload-playback3" />
+ </path>
+
+ <path name="compress-offload-playback3 headphones">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia10" value="1" />
+ </path>
+
+ <path name="compress-offload-playback3 headset">
+ <path name="compress-offload-playback3 headphones" />
+ </path>
+
+ <path name="compress-offload-playback3 headphones-44.1">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia10" value="1" />
+ </path>
+
+ <path name="compress-offload-playback3 headphones-dsd">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia10" value="1" />
+ </path>
+
+ <path name="compress-offload-playback3 speaker-and-headphones">
+ <path name="compress-offload-playback3 headphones" />
+ <path name="compress-offload-playback3" />
+ </path>
+
+ <path name="compress-offload-playback3 speaker-and-bt-sco">
+ <path name="compress-offload-playback3 bt-sco" />
+ <path name="compress-offload-playback3" />
+ </path>
+
+ <path name="compress-offload-playback3 speaker-and-bt-sco-wb">
+ <path name="compress-offload-playback3 bt-sco-wb" />
+ <path name="compress-offload-playback3" />
+ </path>
+
+ <path name="compress-offload-playback3 speaker-and-bt-sco-swb">
+ <path name="compress-offload-playback3 bt-sco-swb" />
+ <path name="compress-offload-playback3" />
+ </path>
+
+ <path name="compress-offload-playback4">
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia11" value="1" />
+ </path>
+
+ <path name="compress-offload-playback4 display-port">
+ <ctl name="DISPLAY_PORT Mixer MultiMedia11" value="1" />
+ </path>
+
+ <path name="compress-offload-playback4 bt-sco">
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia11" value="1" />
+ </path>
+
+ <path name="compress-offload-playback4 bt-sco-wb">
+ <ctl name="BT SampleRate" value="KHZ_16" />
+ <path name="compress-offload-playback4 bt-sco" />
+ </path>
+
+ <path name="compress-offload-playback4 bt-sco-swb">
+ <path name="compress-offload-playback4 bt-sco" />
+ </path>
+
+ <path name="compress-offload-playback4 speaker-and-display-port">
+ <path name="compress-offload-playback4 display-port" />
+ <path name="compress-offload-playback4" />
+ </path>
+
+
+ <path name="compress-offload-playback4 afe-proxy">
+ <ctl name="AFE_PCM_RX Audio Mixer MultiMedia11" value="1" />
+ </path>
+
+ <path name="compress-offload-playback4 usb-headphones">
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia11" value="1" />
+ </path>
+
+ <path name="compress-offload-playback4 usb-headset">
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia11" value="1" />
+ </path>
+
+ <path name="compress-offload-playback4 speaker-and-usb-headphones">
+ <path name="compress-offload-playback4 usb-headphones" />
+ <path name="compress-offload-playback4" />
+ </path>
+
+ <path name="compress-offload-playback4 headphones">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia11" value="1" />
+ </path>
+
+ <path name="compress-offload-playback4 headset">
+ <path name="compress-offload-playback4 headphones" />
+ </path>
+
+ <path name="compress-offload-playback4 headphones-44.1">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia11" value="1" />
+ </path>
+
+ <path name="compress-offload-playback4 headphones-dsd">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia11" value="1" />
+ </path>
+
+ <path name="compress-offload-playback4 speaker-and-headphones">
+ <path name="compress-offload-playback4 headphones" />
+ <path name="compress-offload-playback4" />
+ </path>
+
+ <path name="compress-offload-playback4 speaker-and-bt-sco">
+ <path name="compress-offload-playback4 bt-sco" />
+ <path name="compress-offload-playback4" />
+ </path>
+
+ <path name="compress-offload-playback4 speaker-and-bt-sco-wb">
+ <path name="compress-offload-playback4 bt-sco-wb" />
+ <path name="compress-offload-playback4" />
+ </path>
+
+ <path name="compress-offload-playback4 speaker-and-bt-sco-swb">
+ <path name="compress-offload-playback4 bt-sco-swb" />
+ <path name="compress-offload-playback4" />
+ </path>
+
+ <path name="compress-offload-playback5">
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia12" value="1" />
+ </path>
+
+ <path name="compress-offload-playback5 display-port">
+ <ctl name="DISPLAY_PORT Mixer MultiMedia12" value="1" />
+ </path>
+
+ <path name="compress-offload-playback5 bt-sco">
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia12" value="1" />
+ </path>
+
+ <path name="compress-offload-playback5 bt-sco-wb">
+ <ctl name="BT SampleRate" value="KHZ_16" />
+ <path name="compress-offload-playback5 bt-sco" />
+ </path>
+
+ <path name="compress-offload-playback5 bt-sco-swb">
+ <path name="compress-offload-playback5 bt-sco" />
+ </path>
+
+ <path name="compress-offload-playback5 speaker-and-display-port">
+ <path name="compress-offload-playback5 display-port" />
+ <path name="compress-offload-playback5" />
+ </path>
+
+ <path name="compress-offload-playback5 afe-proxy">
+ <ctl name="AFE_PCM_RX Audio Mixer MultiMedia12" value="1" />
+ </path>
+
+ <path name="compress-offload-playback5 usb-headphones">
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia12" value="1" />
+ </path>
+
+ <path name="compress-offload-playback5 usb-headset">
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia12" value="1" />
+ </path>
+
+ <path name="compress-offload-playback5 speaker-and-usb-headphones">
+ <path name="compress-offload-playback5 usb-headphones" />
+ <path name="compress-offload-playback5" />
+ </path>
+
+ <path name="compress-offload-playback5 headphones">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia12" value="1" />
+ </path>
+
+ <path name="compress-offload-playback5 headset">
+ <path name="compress-offload-playback5 headphones" />
+ </path>
+
+ <path name="compress-offload-playback5 headphones-44.1">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia12" value="1" />
+ </path>
+
+ <path name="compress-offload-playback5 headphones-dsd">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia12" value="1" />
+ </path>
+
+ <path name="compress-offload-playback5 speaker-and-headphones">
+ <path name="compress-offload-playback5 headphones" />
+ <path name="compress-offload-playback5" />
+ </path>
+
+ <path name="compress-offload-playback5 speaker-and-bt-sco">
+ <path name="compress-offload-playback5 bt-sco" />
+ <path name="compress-offload-playback5" />
+ </path>
+
+ <path name="compress-offload-playback5 speaker-and-bt-sco-wb">
+ <path name="compress-offload-playback5 bt-sco-wb" />
+ <path name="compress-offload-playback5" />
+ </path>
+
+ <path name="compress-offload-playback5 speaker-and-bt-sco-swb">
+ <path name="compress-offload-playback5 bt-sco-swb" />
+ <path name="compress-offload-playback5" />
+ </path>
+
+ <path name="compress-offload-playback6">
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia13" value="1" />
+ </path>
+
+ <path name="compress-offload-playback6 display-port">
+ <ctl name="DISPLAY_PORT Mixer MultiMedia13" value="1" />
+ </path>
+
+ <path name="compress-offload-playback6 bt-sco">
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia13" value="1" />
+ </path>
+
+ <path name="compress-offload-playback6 bt-sco-wb">
+ <ctl name="BT SampleRate" value="KHZ_16" />
+ <path name="compress-offload-playback6 bt-sco" />
+ </path>
+
+ <path name="compress-offload-playback6 bt-sco-swb">
+ <path name="compress-offload-playback6 bt-sco" />
+ </path>
+
+ <path name="compress-offload-playback6 speaker-and-display-port">
+ <path name="compress-offload-playback6 display-port" />
+ <path name="compress-offload-playback6" />
+ </path>
+
+ <path name="compress-offload-playback6 afe-proxy">
+ <ctl name="AFE_PCM_RX Audio Mixer MultiMedia13" value="1" />
+ </path>
+
+ <path name="compress-offload-playback6 usb-headphones">
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia13" value="1" />
+ </path>
+
+ <path name="compress-offload-playback6 usb-headset">
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia13" value="1" />
+ </path>
+
+ <path name="compress-offload-playback6 speaker-and-usb-headphones">
+ <path name="compress-offload-playback6 usb-headphones" />
+ <path name="compress-offload-playback6" />
+ </path>
+
+ <path name="compress-offload-playback6 headphones">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia13" value="1" />
+ </path>
+
+ <path name="compress-offload-playback6 headset">
+ <path name="compress-offload-playback6 headphones" />
+ </path>
+
+ <path name="compress-offload-playback6 headphones-44.1">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia13" value="1" />
+ </path>
+
+ <path name="compress-offload-playback6 headphones-dsd">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia13" value="1" />
+ </path>
+
+ <path name="compress-offload-playback6 speaker-and-headphones">
+ <path name="compress-offload-playback6 headphones" />
+ <path name="compress-offload-playback6" />
+ </path>
+
+ <path name="compress-offload-playback6 speaker-and-bt-sco">
+ <path name="compress-offload-playback6 bt-sco" />
+ <path name="compress-offload-playback6" />
+ </path>
+
+ <path name="compress-offload-playback6 speaker-and-bt-sco-wb">
+ <path name="compress-offload-playback6 bt-sco-wb" />
+ <path name="compress-offload-playback6" />
+ </path>
+
+ <path name="compress-offload-playback6 speaker-and-bt-sco-swb">
+ <path name="compress-offload-playback6 bt-sco-swb" />
+ <path name="compress-offload-playback6" />
+ </path>
+
+ <path name="compress-offload-playback7">
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia14" value="1" />
+ </path>
+
+ <path name="compress-offload-playback7 display-port">
+ <ctl name="DISPLAY_PORT Mixer MultiMedia14" value="1" />
+ </path>
+
+ <path name="compress-offload-playback7 bt-sco">
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia14" value="1" />
+ </path>
+
+ <path name="compress-offload-playback7 bt-sco-wb">
+ <ctl name="BT SampleRate" value="KHZ_16" />
+ <path name="compress-offload-playback7 bt-sco" />
+ </path>
+
+ <path name="compress-offload-playback7 bt-sco-swb">
+ <path name="compress-offload-playback7 bt-sco" />
+ </path>
+
+ <path name="compress-offload-playback7 speaker-and-display-port">
+ <path name="compress-offload-playback7 display-port" />
+ <path name="compress-offload-playback7" />
+ </path>
+
+ <path name="compress-offload-playback7 afe-proxy">
+ <ctl name="AFE_PCM_RX Audio Mixer MultiMedia14" value="1" />
+ </path>
+
+ <path name="compress-offload-playback7 usb-headphones">
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia14" value="1" />
+ </path>
+
+ <path name="compress-offload-playback7 usb-headset">
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia14" value="1" />
+ </path>
+
+ <path name="compress-offload-playback7 speaker-and-usb-headphones">
+ <path name="compress-offload-playback7 usb-headphones" />
+ <path name="compress-offload-playback7" />
+ </path>
+
+ <path name="compress-offload-playback7 headphones">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia14" value="1" />
+ </path>
+
+ <path name="compress-offload-playback7 headset">
+ <path name="compress-offload-playback7 headphones" />
+ </path>
+
+ <path name="compress-offload-playback7 headphones-44.1">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia14" value="1" />
+ </path>
+
+ <path name="compress-offload-playback7 headphones-dsd">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia14" value="1" />
+ </path>
+
+ <path name="compress-offload-playback7 speaker-and-headphones">
+ <path name="compress-offload-playback7 headphones" />
+ <path name="compress-offload-playback7" />
+ </path>
+
+ <path name="compress-offload-playback7 speaker-and-bt-sco">
+ <path name="compress-offload-playback7 bt-sco" />
+ <path name="compress-offload-playback7" />
+ </path>
+
+ <path name="compress-offload-playback7 speaker-and-bt-sco-wb">
+ <path name="compress-offload-playback7 bt-sco-wb" />
+ <path name="compress-offload-playback7" />
+ </path>
+
+ <path name="compress-offload-playback7 speaker-and-bt-sco-swb">
+ <path name="compress-offload-playback7 bt-sco-swb" />
+ <path name="compress-offload-playback7" />
+ </path>
+
+ <path name="compress-offload-playback8">
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia15" value="1" />
+ </path>
+
+ <path name="compress-offload-playback8 display-port">
+ <ctl name="DISPLAY_PORT Mixer MultiMedia15" value="1" />
+ </path>
+
+ <path name="compress-offload-playback8 bt-sco">
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia15" value="1" />
+ </path>
+
+ <path name="compress-offload-playback8 bt-sco-wb">
+ <ctl name="BT SampleRate" value="KHZ_16" />
+ <path name="compress-offload-playback8 bt-sco" />
+ </path>
+
+ <path name="compress-offload-playback8 bt-sco-swb">
+ <path name="compress-offload-playback8 bt-sco" />
+ </path>
+
+ <path name="compress-offload-playback8 speaker-and-display-port">
+ <path name="compress-offload-playback8 display-port" />
+ <path name="compress-offload-playback8" />
+ </path>
+
+ <path name="compress-offload-playback8 afe-proxy">
+ <ctl name="AFE_PCM_RX Audio Mixer MultiMedia15" value="1" />
+ </path>
+
+ <path name="compress-offload-playback8 usb-headphones">
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia15" value="1" />
+ </path>
+
+ <path name="compress-offload-playback8 usb-headset">
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia15" value="1" />
+ </path>
+
+ <path name="compress-offload-playback8 speaker-and-usb-headphones">
+ <path name="compress-offload-playback8 usb-headphones" />
+ <path name="compress-offload-playback8" />
+ </path>
+
+ <path name="compress-offload-playback8 headphones">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia15" value="1" />
+ </path>
+
+ <path name="compress-offload-playback8 headset">
+ <path name="compress-offload-playback8 headphones" />
+ </path>
+
+ <path name="compress-offload-playback8 headphones-44.1">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia15" value="1" />
+ </path>
+
+ <path name="compress-offload-playback8 headphones-dsd">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia15" value="1" />
+ </path>
+
+ <path name="compress-offload-playback8 speaker-and-headphones">
+ <path name="compress-offload-playback8 headphones" />
+ <path name="compress-offload-playback8" />
+ </path>
+
+ <path name="compress-offload-playback8 speaker-and-bt-sco">
+ <path name="compress-offload-playback8 bt-sco" />
+ <path name="compress-offload-playback8" />
+ </path>
+
+ <path name="compress-offload-playback8 speaker-and-bt-sco-wb">
+ <path name="compress-offload-playback8 bt-sco-wb" />
+ <path name="compress-offload-playback8" />
+ </path>
+
+ <path name="compress-offload-playback8 speaker-and-bt-sco-swb">
+ <path name="compress-offload-playback8 bt-sco-swb" />
+ <path name="compress-offload-playback8" />
+ </path>
+
+ <path name="compress-offload-playback9">
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia16" value="1" />
+ </path>
+
+ <path name="compress-offload-playback9 display-port">
+ <ctl name="DISPLAY_PORT Mixer MultiMedia16" value="1" />
+ </path>
+
+ <path name="compress-offload-playback9 bt-sco">
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia16" value="1" />
+ </path>
+
+ <path name="compress-offload-playback9 bt-sco-wb">
+ <ctl name="BT SampleRate" value="KHZ_16" />
+ <path name="compress-offload-playback9 bt-sco" />
+ </path>
+
+ <path name="compress-offload-playback9 bt-sco-swb">
+ <path name="compress-offload-playback9 bt-sco" />
+ </path>
+
+ <path name="compress-offload-playback9 speaker-and-display-port">
+ <path name="compress-offload-playback9 display-port" />
+ <path name="compress-offload-playback9" />
+ </path>
+
+ <path name="compress-offload-playback9 afe-proxy">
+ <ctl name="AFE_PCM_RX Audio Mixer MultiMedia16" value="1" />
+ </path>
+
+ <path name="compress-offload-playback9 usb-headphones">
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia16" value="1" />
+ </path>
+
+ <path name="compress-offload-playback9 usb-headset">
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia16" value="1" />
+ </path>
+
+ <path name="compress-offload-playback9 speaker-and-usb-headphones">
+ <path name="compress-offload-playback9 usb-headphones" />
+ <path name="compress-offload-playback9" />
+ </path>
+
+ <path name="compress-offload-playback9 headphones">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia16" value="1" />
+ </path>
+
+ <path name="compress-offload-playback9 headset">
+ <path name="compress-offload-playback9 headphones" />
+ </path>
+
+ <path name="compress-offload-playback9 headphones-44.1">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia16" value="1" />
+ </path>
+
+ <path name="compress-offload-playback9 headphones-dsd">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia16" value="1" />
+ </path>
+
+ <path name="compress-offload-playback9 speaker-and-headphones">
+ <path name="compress-offload-playback9 headphones" />
+ <path name="compress-offload-playback9" />
+ </path>
+
+ <path name="compress-offload-playback9 speaker-and-bt-sco">
+ <path name="compress-offload-playback9 bt-sco" />
+ <path name="compress-offload-playback9" />
+ </path>
+
+ <path name="compress-offload-playback9 speaker-and-bt-sco-wb">
+ <path name="compress-offload-playback9 bt-sco-wb" />
+ <path name="compress-offload-playback9" />
+ </path>
+
+ <path name="compress-offload-playback9 speaker-and-bt-sco-swb">
+ <path name="compress-offload-playback9 bt-sco-swb" />
+ <path name="compress-offload-playback9" />
+ </path>
+
+ <path name="audio-record">
+ <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>
+
+ <path name="audio-record bt-sco">
+ <ctl name="MultiMedia1 Mixer SLIM_7_TX" value="1" />
+ </path>
+
+ <path name="audio-record bt-sco-wb">
+ <ctl name="BT SampleRate" value="KHZ_16" />
+ <path name="audio-record bt-sco" />
+ </path>
+
+ <path name="audio-record bt-sco-swb">
+ <path name="audio-record bt-sco" />
+ </path>
+
+ <path name="audio-record headset-mic">
+ <ctl name="MultiMedia1 Mixer TX_CDC_DMA_TX_4" value="1" />
+ </path>
+
+ <path name="audio-record capture-fm">
+ <ctl name="MultiMedia1 Mixer SLIM_8_TX" value="1" />
+ </path>
+
+ <path name="audio-record-compress">
+ <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>
+
+ <path name="audio-record-compress bt-sco-wb">
+ <ctl name="BT SampleRate" value="KHZ_16" />
+ <path name="audio-record-compress bt-sco" />
+ </path>
+
+ <path name="audio-record-compress bt-sco-swb">
+ <path name="audio-record-compress bt-sco" />
+ </path>
+
+ <path name="audio-record-compress usb-headset-mic">
+ <ctl name="MultiMedia8 Mixer USB_AUDIO_TX" value="1" />
+ </path>
+
+ <path name="audio-record-compress2">
+ <ctl name="MultiMedia17 Mixer TX_CDC_DMA_TX_3" value="1" />
+ </path>
+
+ <path name="audio-record-compress2 bt-sco">
+ <ctl name="MultiMedia17 Mixer SLIM_7_TX" value="1" />
+ </path>
+
+ <path name="audio-record-compress bt-sco-wb">
+ <ctl name="BT SampleRate" value="KHZ_16" />
+ <path name="audio-record-compress2 bt-sco" />
+ </path>
+
+ <path name="audio-record-compress2 bt-sco-swb">
+ <path name="audio-record-compress2 bt-sco" />
+ </path>
+
+ <path name="audio-record-compress2 usb-headset-mic">
+ <ctl name="MultiMedia17 Mixer USB_AUDIO_TX" value="1" />
+ </path>
+
+ <path name="audio-record-compress2 headset-mic">
+ <ctl name="MultiMedia17 Mixer TX_CDC_DMA_TX_4" value="1" />
+ </path>
+
+ <path name="low-latency-record">
+ <ctl name="MultiMedia8 Mixer TX_CDC_DMA_TX_3" value="1" />
+ </path>
+
+ <path name="low-latency-record bt-sco">
+ <ctl name="MultiMedia8 Mixer SLIM_7_TX" value="1" />
+ </path>
+
+ <path name="low-latency-record bt-sco-wb">
+ <ctl name="BT SampleRate" value="KHZ_16" />
+ <path name="low-latency-record bt-sco" />
+ </path>
+
+ <path name="low-latency-record bt-sco-swb">
+ <path name="low-latency-record bt-sco" />
+ </path>
+
+ <path name="low-latency-record usb-headset-mic">
+ <ctl name="MultiMedia8 Mixer USB_AUDIO_TX" value="1" />
+ </path>
+
+ <path name="low-latency-record capture-fm">
+ <ctl name="MultiMedia8 Mixer SLIM_8_TX" value="1" />
+ </path>
+
+ <path name="fm-virtual-record capture-fm">
+ <ctl name="MultiMedia2 Mixer SLIM_8_TX" value="1" />
+ </path>
+
+ <path name="play-fm">
+ <ctl name="Tert MI2S LOOPBACK Volume" value="1" />
+ <ctl name="WSA_CDC_DMA_RX_0 Port Mixer SLIM_8_TX" value="1" />
+ <ctl name="WSA_CDC_DMA_RX_0_DL_HL Switch" value="1" />
+ </path>
+
+ <path name="play-fm headphones">
+ <ctl name="Tert MI2S LOOPBACK Volume" value="1" />
+ <ctl name="RX_CDC_DMA_RX_0 Port Mixer SLIM_8_TX" value="1" />
+ <ctl name="RX_CDC_DMA_RX_0_DL_HL Switch" value="1" />
+ </path>
+
+ <path name="play-fm headset">
+ <path name="play-fm headphones" />
+ </path>
+
+ <path name="incall-rec-uplink">
+ <ctl name="MultiMedia1 Mixer VOC_REC_UL" value="1" />
+ </path>
+
+ <path name="incall-rec-uplink bt-sco">
+ <path name="incall-rec-uplink" />
+ </path>
+
+ <path name="incall-rec-uplink bt-sco-wb">
+ <path name="incall-rec-uplink" />
+ </path>
+
+ <path name="incall-rec-uplink bt-sco-swb">
+ <path name="incall-rec-uplink" />
+ </path>
+
+ <path name="incall-rec-uplink usb-headset-mic">
+ <path name="incall-rec-uplink" />
+ </path>
+
+ <path name="incall-rec-uplink afe-proxy">
+ <path name="incall-rec-uplink" />
+ </path>
+
+ <path name="incall-rec-uplink headset-mic">
+ <path name="incall-rec-uplink" />
+ </path>
+
+ <path name="incall-rec-uplink-compress">
+ <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>
+
+ <path name="incall-rec-uplink-compress bt-sco-wb">
+ <path name="incall-rec-uplink-compress" />
+ </path>
+
+ <path name="incall-rec-uplink-compress bt-sco-swb">
+ <path name="incall-rec-uplink-compress" />
+ </path>
+
+ <path name="incall-rec-uplink-compress usb-headset-mic">
+ <path name="incall-rec-uplink-compress" />
+ </path>
+
+ <path name="incall-rec-uplink-compress afe-proxy">
+ <path name="incall-rec-uplink-compress" />
+ </path>
+
+ <path name="incall-rec-uplink-compress headset-mic">
+ <path name="incall-rec-uplink-compress" />
+ </path>
+
+ <path name="incall-rec-downlink">
+ <ctl name="MultiMedia1 Mixer VOC_REC_DL" value="1" />
+ </path>
+
+ <path name="incall-rec-downlink bt-sco">
+ <path name="incall-rec-downlink" />
+ </path>
+
+ <path name="incall-rec-downlink bt-sco-wb">
+ <path name="incall-rec-downlink" />
+ </path>
+
+ <path name="incall-rec-downlink bt-sco-swb">
+ <path name="incall-rec-downlink" />
+ </path>
+
+ <path name="incall-rec-downlink usb-headset-mic">
+ <path name="incall-rec-downlink" />
+ </path>
+
+ <path name="incall-rec-downlink afe-proxy">
+ <path name="incall-rec-downlink" />
+ </path>
+
+ <path name="incall-rec-downlink headset-mic">
+ <path name="incall-rec-downlink" />
+ </path>
+
+ <path name="incall-rec-downlink-compress">
+ <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>
+
+ <path name="incall-rec-downlink-compress bt-sco-wb">
+ <path name="incall-rec-downlink-compress" />
+ </path>
+
+ <path name="incall-rec-downlink-compress bt-sco-swb">
+ <path name="incall-rec-downlink-compress" />
+ </path>
+
+ <path name="incall-rec-downlink-compress usb-headset-mic">
+ <path name="incall-rec-downlink-compress" />
+ </path>
+
+ <path name="incall-rec-downlink-compress afe-proxy">
+ <path name="incall-rec-downlink-compress" />
+ </path>
+
+ <path name="incall-rec-downlink-compress headset-mic">
+ <path name="incall-rec-downlink-compress" />
+ </path>
+
+ <path name="incall-rec-uplink-and-downlink">
+ <path name="incall-rec-uplink" />
+ <path name="incall-rec-downlink" />
+ </path>
+
+ <path name="incall-rec-uplink-and-downlink bt-sco">
+ <path name="incall-rec-uplink-and-downlink" />
+ </path>
+
+ <path name="incall-rec-uplink-and-downlink bt-sco-wb">
+ <path name="incall-rec-uplink-and-downlink" />
+ </path>
+
+ <path name="incall-rec-uplink-and-downlink bt-sco-swb">
+ <path name="incall-rec-uplink-and-downlink" />
+ </path>
+
+ <path name="incall-rec-uplink-and-downlink usb-headset-mic">
+ <path name="incall-rec-uplink-and-downlink" />
+ </path>
+
+ <path name="incall-rec-uplink-and-downlink afe-proxy">
+ <path name="incall-rec-uplink-and-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-compress">
+ <path name="incall-rec-uplink-compress" />
+ <path name="incall-rec-downlink-compress" />
+ </path>
+
+ <path name="incall-rec-uplink-and-downlink-compress bt-sco">
+ <path name="incall-rec-uplink-and-downlink-compress" />
+ </path>
+
+ <path name="incall-rec-uplink-and-downlink-compress bt-sco-wb">
+ <path name="incall-rec-uplink-and-downlink-compress" />
+ </path>
+
+ <path name="incall-rec-uplink-and-downlink-compress bt-sco-swb">
+ <path name="incall-rec-uplink-and-downlink-compress" />
+ </path>
+
+ <path name="incall-rec-uplink-and-downlink-compress usb-headset-mic">
+ <path name="incall-rec-uplink-and-downlink-compress" />
+ </path>
+
+ <path name="incall-rec-uplink-and-downlink-compress afe-proxy">
+ <path name="incall-rec-uplink-and-downlink-compress" />
+ </path>
+
+ <path name="incall-rec-uplink-and-downlink-compress headset-mic">
+ <path name="incall-rec-uplink-and-downlink-compress" />
+ </path>
+
+ <path name="hfp-sco">
+ </path>
+
+ <path name="hfp-sco headphones">
+ </path>
+
+ <path name="hfp-sco-wb">
+ <path name="hfp-sco" />
+ </path>
+
+ <path name="hfp-sco-wb headphones">
+ <path name="hfp-sco headphones" />
+ </path>
+
+ <path name="compress-voip-call">
+ <ctl name="WSA_CDC_DMA_RX_0_Voice Mixer Voip" value="1" />
+ <ctl name="Voip_Tx Mixer TX_CDC_DMA_TX_3_Voip" value="1" />
+ </path>
+
+ <path name="compress-voip-call bt-a2dp">
+ <ctl name="SLIM_7_RX_Voice Mixer Voip" value="1" />
+ <ctl name="Voip_Tx Mixer TX_CDC_DMA_TX_3_Voip" value="1" />
+ </path>
+
+ <path name="compress-voip-call headphones">
+ <ctl name="RX_CDC_DMA_RX_0_Voice Mixer Voip" value="1" />
+ <ctl name="Voip_Tx Mixer TX_CDC_DMA_TX_3_Voip" value="1" />
+ </path>
+
+
+ <path name="compress-voip-call bt-sco">
+ <ctl name="SLIM_7_RX_Voice Mixer Voip" value="1" />
+ <ctl name="Voip_Tx Mixer SLIM_7_TX_Voip" value="1" />
+ </path>
+
+ <path name="compress-voip-call bt-sco-wb">
+ <ctl name="BT SampleRate" value="KHZ_16" />
+ <path name="compress-voip-call bt-sco" />
+ </path>
+
+ <path name="compress-voip-call bt-sco-swb">
+ <path name="compress-voip-call bt-sco" />
+ </path>
+
+ <path name="compress-voip-call afe-proxy">
+ <ctl name="AFE_PCM_RX_Voice Mixer Voip" value="1" />
+ <ctl name="Voip_Tx Mixer AFE_PCM_TX_Voip" value="1" />
+ </path>
+
+ <path name="compress-voip-call usb-headphones">
+ <ctl name="USB_AUDIO_RX_Voice Mixer Voip" value="1" />
+ <ctl name="Voip_Tx Mixer TX_CDC_DMA_TX_3_Voip" value="1" />
+ </path>
+
+ <path name="compress-voip-call usb-headset">
+ <ctl name="USB_AUDIO_RX_Voice Mixer Voip" value="1" />
+ <ctl name="Voip_Tx Mixer USB_AUDIO_TX_Voip" value="1" />
+ </path>
+
+ <path name="voicemmode1-call">
+ <ctl name="WSA_CDC_DMA_RX_0_Voice Mixer VoiceMMode1" value="1" />
+ <ctl name="VoiceMMode1_Tx Mixer TX_CDC_DMA_TX_3_MMode1" value="1" />
+ </path>
+
+ <path name="voicemmode1-call headphones">
+ <ctl name="RX_CDC_DMA_RX_0_Voice Mixer VoiceMMode1" value="1" />
+ <ctl name="VoiceMMode1_Tx Mixer TX_CDC_DMA_TX_3_MMode1" value="1" />
+ </path>
+
+ <path name="voicemmode1-call headset">
+ <ctl name="RX_CDC_DMA_RX_0_Voice Mixer VoiceMMode1" value="1" />
+ <ctl name="VoiceMMode1_Tx Mixer TX_CDC_DMA_TX_4_MMode1" value="1" />
+ </path>
+
+ <path name="voicemmode1-call bt-sco">
+ <ctl name="SLIM_7_RX_Voice Mixer VoiceMMode1" value="1" />
+ <ctl name="VoiceMMode1_Tx Mixer SLIM_7_TX_MMode1" value="1" />
+ </path>
+
+ <path name="voicemmode1-call bt-sco-wb">
+ <ctl name="BT SampleRate" value="KHZ_16" />
+ <path name="voicemmode1-call bt-sco" />
+ </path>
+
+ <path name="voicemmode1-call bt-sco-swb">
+ <path name="voicemmode1-call bt-sco" />
+ </path>
+
+ <path name="voicemmode1-call afe-proxy">
+ <ctl name="AFE_PCM_RX_Voice Mixer VoiceMMode1" value="1" />
+ <ctl name="VoiceMMode1_Tx Mixer AFE_PCM_TX_MMode1" value="1" />
+ </path>
+
+ <path name="voicemmode1-call usb-headphones">
+ <ctl name="USB_AUDIO_RX_Voice Mixer VoiceMMode1" value="1" />
+ <ctl name="VoiceMMode1_Tx Mixer TX_CDC_DMA_TX_3_MMode1" value="1" />
+ </path>
+
+ <path name="voicemmode1-call usb-headset">
+ <ctl name="USB_AUDIO_RX_Voice Mixer VoiceMMode1" value="1" />
+ <ctl name="VoiceMMode1_Tx Mixer USB_AUDIO_TX_MMode1" value="1" />
+ </path>
+
+ <path name="voicemmode1-call display-port-and-usb-headset-mic">
+ <ctl name="DISPLAY_PORT_RX_Voice Mixer VoiceMMode1" value="1" />
+ <ctl name="VoiceMMode1_Tx Mixer USB_AUDIO_TX_MMode1" value="1" />
+ </path>
+
+ <path name="voicemmode1-call display-port">
+ <ctl name="DISPLAY_PORT_RX_Voice Mixer VoiceMMode1" value="1" />
+ <ctl name="VoiceMMode1_Tx Mixer TX_CDC_DMA_TX_3_MMode1" value="1" />
+ </path>
+
+ <path name="voicemmode2-call">
+ <ctl name="WSA_CDC_DMA_RX_0_Voice Mixer VoiceMMode2" value="1" />
+ <ctl name="VoiceMMode2_Tx Mixer TX_CDC_DMA_TX_3_MMode2" value="1" />
+ </path>
+
+ <path name="voicemmode2-call headphones">
+ <ctl name="RX_CDC_DMA_RX_0_Voice Mixer VoiceMMode2" value="1" />
+ <ctl name="VoiceMMode2_Tx Mixer TX_CDC_DMA_TX_3_MMode2" value="1" />
+ </path>
+
+ <path name="voicemmode2-call headset">
+ <ctl name="RX_CDC_DMA_RX_0_Voice Mixer VoiceMMode2" value="1" />
+ <ctl name="VoiceMMode2_Tx Mixer TX_CDC_DMA_TX_4_MMode2" value="1" />
+ </path>
+
+ <path name="voicemmode2-call bt-sco">
+ <ctl name="SLIM_7_RX_Voice Mixer VoiceMMode2" value="1" />
+ <ctl name="VoiceMMode2_Tx Mixer SLIM_7_TX_MMode2" value="1" />
+ </path>
+
+ <path name="voicemmode2-call bt-sco-wb">
+ <ctl name="BT SampleRate" value="KHZ_16" />
+ <path name="voicemmode2-call bt-sco" />
+ </path>
+
+ <path name="voicemmode2-call bt-sco-swb">
+ <path name="voicemmode2-call bt-sco" />
+ </path>
+
+ <path name="voicemmode2-call afe-proxy">
+ <ctl name="AFE_PCM_RX_Voice Mixer VoiceMMode2" value="1" />
+ <ctl name="VoiceMMode2_Tx Mixer AFE_PCM_TX_MMode2" value="1" />
+ </path>
+
+ <path name="voicemmode2-call usb-headphones">
+ <ctl name="USB_AUDIO_RX_Voice Mixer VoiceMMode2" value="1" />
+ <ctl name="VoiceMMode2_Tx Mixer TX_CDC_DMA_TX_3_MMode2" value="1" />
+ </path>
+
+ <path name="voicemmode2-call usb-headset">
+ <ctl name="USB_AUDIO_RX_Voice Mixer VoiceMMode2" value="1" />
+ <ctl name="VoiceMMode2_Tx Mixer USB_AUDIO_TX_MMode2" value="1" />
+ </path>
+
+ <path name="voicemmode2-call display-port-and-usb-headset-mic">
+ <ctl name="DISPLAY_PORT_RX_Voice Mixer VoiceMMode2" value="1" />
+ <ctl name="VoiceMMode2_Tx Mixer USB_AUDIO_TX_MMode2" value="1" />
+ </path>
+
+ <path name="voicemmode2-call display-port">
+ <ctl name="DISPLAY_PORT_RX_Voice Mixer VoiceMMode2" value="1" />
+ <ctl name="VoiceMMode2_Tx Mixer TX_CDC_DMA_TX_3_MMode2" value="1" />
+ </path>
+
+ <!-- VoIP Rx settings -->
+ <path name="audio-playback-voip">
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia10" value="1" />
+ </path>
+
+ <path name="audio-playback-voip headphones">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia10" value="1" />
+ </path>
+
+ <path name="audio-playback-voip bt-sco">
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia10" value="1" />
+ </path>
+
+ <path name="audio-playback-voip bt-sco-wb">
+ <ctl name="BT SampleRate" value="KHZ_16" />
+ <path name="audio-playback-voip bt-sco" />
+ </path>
+
+ <path name="audio-playback-voip bt-sco-swb">
+ <path name="audio-playback-voip bt-sco" />
+ </path>
+
+ <path name="audio-playback-voip bt-a2dp">
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia10" value="1" />
+ </path>
+
+ <path name="audio-playback-voip afe-proxy">
+ <ctl name="AFE_PCM_RX Audio Mixer MultiMedia10" value="1" />
+ </path>
+
+ <path name="audio-playback-voip usb-headphones">
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia10" value="1" />
+ </path>
+
+ <path name="audio-playback-voip usb-headset">
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia10" value="1" />
+ </path>
+
+ <path name="audio-playback-voip display-port">
+ <ctl name="DISPLAY_PORT Mixer MultiMedia10" value="1" />
+ </path>
+
+ <path name="audio-playback-voip speaker-and-display-port">
+ <path name="audio-playback-voip display-port" />
+ <path name="audio-playback-voip" />
+ </path>
+
+ <!-- VoIP Tx settings -->
+ <path name="audio-record-voip">
+ <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>
+
+ <path name="audio-record-voip bt-sco">
+ <ctl name="MultiMedia10 Mixer SLIM_7_TX" value="1" />
+ </path>
+
+ <path name="audio-record-voip bt-sco-wb">
+ <ctl name="BT SampleRate" value="KHZ_16" />
+ <path name="audio-record-voip bt-sco" />
+ </path>
+
+ <path name="audio-record-voip bt-sco-swb">
+ <path name="audio-record-voip bt-sco" />
+ </path>
+
+ <path name="audio-record-voip headset-mic">
+ <ctl name="MultiMedia10 Mixer TX_CDC_DMA_TX_4" value="1" />
+ </path>
+
+ <path name="spkr-rx-calib">
+ <ctl name="WSA_CDC_DMA_RX_0_DL_HL Switch" value="1" />
+ </path>
+
+ <path name="spkr-vi-record">
+ </path>
+
+ <!-- These are actual sound device specific mixer settings -->
+ <path name="amic1">
+ <ctl name="TX DEC1 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX1" value="ADC0" />
+ <ctl name="TX_AIF1_CAP Mixer DEC1" value="1" />
+ <ctl name="ADC1_MIXER Switch" value="1" />
+ </path>
+
+ <path name="amic2">
+ <ctl name="TX DEC0 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX0" value="ADC1" />
+ <ctl name="DEC0_BCS Switch" value="1" />
+ <ctl name="TX_CDC_DMA_TX_4 Channels" value="One" />
+ <ctl name="TX_AIF2_CAP Mixer DEC0" value="1" />
+ <ctl name="ADC2_MIXER Switch" value="1" />
+ <ctl name="ADC2 MUX" value="INP2" />
+ </path>
+
+ <path name="amic3">
+ <ctl name="TX DEC2 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX2" value="ADC1" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="ADC2_MIXER Switch" value="1" />
+ <ctl name="ADC2 MUX" value="INP3" />
+ </path>
+
+ <path name="amic4">
+ <ctl name="TX DEC5 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX5" value="ADC2" />
+ <ctl name="TX_AIF1_CAP Mixer DEC5" value="1" />
+ <ctl name="ADC3_MIXER Switch" value="1" />
+ <ctl name="ADC3 MUX" value="INP4" />
+ </path>
+
+ <path name="amic5">
+ <ctl name="TX DEC3 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX3" value="ADC3" />
+ <ctl name="TX_AIF1_CAP Mixer DEC3" value="1" />
+ <ctl name="ADC4_MIXER Switch" value="1" />
+ <ctl name="ADC4 MUX" value="INP5" />
+ </path>
+
+ <path name="dmic1">
+ <ctl name="TX_CDC_DMA_TX_3 Channels" value="One" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC0" />
+ </path>
+
+ <path name="dmic2">
+ <ctl name="TX_CDC_DMA_TX_3 Channels" value="One" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC1" />
+ </path>
+
+ <path name="dmic3">
+ <ctl name="TX_CDC_DMA_TX_3 Channels" value="One" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC2" />
+ </path>
+
+ <path name="dmic4">
+ <ctl name="TX_CDC_DMA_TX_3 Channels" value="One" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC3" />
+ </path>
+
+ <path name="dmic5">
+ <ctl name="TX_CDC_DMA_TX_3 Channels" value="One" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC4" />
+ </path>
+
+ <path name="dmic6">
+ <ctl name="TX_CDC_DMA_TX_3 Channels" value="One" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC5" />
+ </path>
+
+ <path name="speaker">
+ <ctl name="WSA_CDC_DMA_RX_0 Channels" value="Two" />
+ <ctl name="WSA RX0 MUX" value="AIF1_PB" />
+ <ctl name="WSA RX1 MUX" value="AIF1_PB" />
+ <ctl name="WSA_RX0 INP0" value="RX0" />
+ <ctl name="WSA_RX1 INP0" value="RX1" />
+ <ctl name="WSA_COMP1 Switch" value="1" />
+ <ctl name="WSA_COMP2 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" />
+ <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" />
+ </path>
+
+ <path name="speaker-mono">
+ <ctl name="WSA_CDC_DMA_RX_0 Channels" value="One" />
+ <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">
+ <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" />
+ </path>
+
+
+ <path name="speaker-hdk">
+ <path name="speaker-mono" />
+ </path>
+
+ <path name="speaker-fluid">
+ <path name="speaker-mono" />
+ </path>
+
+ <path name="speaker-liquid">
+ <path name="speaker" />
+ </path>
+
+ <path name="sidetone-iir">
+ <ctl name="IIR0 Enable Band1" value="1" />
+ <ctl name="IIR0 Enable Band2" value="1" />
+ <ctl name="IIR0 Enable Band3" value="1" />
+ <ctl name="IIR0 Enable Band4" value="1" />
+ <ctl name="IIR0 Enable Band5" value="1" />
+ </path>
+
+ <path name="sidetone-headphones">
+ <path name="sidetone-iir" />
+ <ctl name="IIR0 INP0 Volume" value="54" />
+ <ctl name="IIR0 INP0 MUX" value="DEC2" />
+ <ctl name="RX INT0 MIX2 INP" value="SRC0" />
+ <ctl name="RX INT1 MIX2 INP" value="SRC0" />
+ </path>
+
+ <path name="sidetone-handset">
+ <path name="sidetone-iir" />
+ <ctl name="IIR0 INP0 Volume" value="54" />
+ <ctl name="IIR0 INP0 MUX" value="DEC2" />
+ <ctl name="RX INT2 MIX2 INP" value="SRC0" />
+ <ctl name="WSA_RX0 INT0 SIDETONE MIX" value="SRC0" />
+ </path>
+
+ <path name="afe-sidetone">
+ <ctl name="Voice Sidetone Enable" value="1" />
+ </path>
+
+ <path name="speaker-mic">
+ <path name="dmic5" />
+ </path>
+
+ <path name="speaker-mic-liquid">
+ <path name="dmic5" />
+ </path>
+
+ <path name="speaker-mic-sbc">
+ </path>
+
+ <path name="speaker-protected">
+ <ctl name="WSA_AIF_VI Mixer WSA_SPKR_VI_1" value="1" />
+ <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" />
+ <ctl name="VI_FEED_TX Channels" value="Two" />
+ <ctl name="WSA_RX_0_VI_FB_LCH_MUX" value="WSA_CDC_DMA_TX_0" />
+ <ctl name="WSA_RX_0_VI_FB_RCH_MUX" value="WSA_CDC_DMA_TX_0" />
+ </path>
+
+ <path name="voice-speaker-protected">
+ <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" />
+ <ctl name="WSA_RX_0_VI_FB_LCH_MUX" value="WSA_CDC_DMA_TX_0" />
+ </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>
+
+ <path name="voice-speaker-stereo-protected">
+ <path name="speaker-protected" />
+ </path>
+
+ <path name="vi-feedback">
+ </path>
+
+ <path name="vi-feedback-mono-1">
+ </path>
+
+ <path name="vi-feedback-mono-2">
+ </path>
+
+ <path name="handset">
+ <ctl name="WSA_CDC_DMA_RX_0 Channels" value="One" />
+ <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" />
+ <ctl name="EAR SPKR PA Gain" value="G_6_DB" />
+ </path>
+
+ <path name="handset-mic">
+ <ctl name="TX_CDC_DMA_TX_3 Channels" value="One" />
+ <path name="amic5" />
+ </path>
+
+ <path name="headphones">
+ <ctl name="RX_MACRO RX0 MUX" value="AIF1_PB" />
+ <ctl name="RX_MACRO RX1 MUX" value="AIF1_PB" />
+ <ctl name="RX_CDC_DMA_RX_0 Channels" value="Two" />
+ <ctl name="RX INT0_1 MIX1 INP0" value="RX0" />
+ <ctl name="RX INT1_1 MIX1 INP0" value="RX1" />
+ <ctl name="RX INT0 DEM MUX" value="CLSH_DSM_OUT" />
+ <ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
+ <ctl name="RX_HPH_PWR_MODE" value="LOHIFI" />
+ <ctl name="RX HPH Mode" value="CLS_H_LOHIFI" />
+ <ctl name="RX_COMP1 Switch" value="1" />
+ <ctl name="RX_COMP2 Switch" value="1" />
+ <ctl name="HPHL_COMP Switch" value="1" />
+ <ctl name="HPHR_COMP Switch" value="1" />
+ <ctl name="HPHL_RDAC Switch" value="1" />
+ <ctl name="HPHR_RDAC Switch" value="1" />
+ </path>
+
+ <path name="headphones-44.1">
+ <path name="headphones" />
+ </path>
+
+ <path name="hph-highquality-mode">
+ </path>
+
+ <path name="hph-lowpower-mode">
+ </path>
+
+ <path name="true-native-mode">
+ </path>
+
+ <path name="line">
+ <path name="headphones" />
+ </path>
+
+ <path name="headset-mic">
+ <path name="amic2" />
+ <ctl name="TX_DEC0 Volume" value="84" />
+ </path>
+
+ <path name="headset-mic-liquid">
+ <path name="amic2" />
+ </path>
+ <path name="voice-handset">
+ <path name="handset" />
+ </path>
+
+ <path name="voice-handset-tmus">
+ <path name="handset" />
+ </path>
+
+ <path name="voice-handset-hdk">
+ <path name="handset" />
+ </path>
+
+ <path name="voice-handset-tmus-hdk">
+ <path name="handset" />
+ </path>
+ <path name="voice-speaker">
+ <path name="speaker-mono" />
+ </path>
+
+ <path name="voice-speaker-stereo">
+ <path name="speaker" />
+ </path>
+
+ <path name="voice-speaker-2">
+ <path name="speaker-mono-2" />
+ </path>
+
+ <path name="voice-speaker-hdk">
+ <path name="speaker-mono" />
+ </path>
+
+ <path name="voice-speaker-fluid">
+ <path name="speaker-fluid" />
+ </path>
+
+ <path name="voice-speaker-vbat">
+ <path name="speaker-vbat-mono" />
+ </path>
+
+ <path name="voice-speaker-2-vbat">
+ <path name="speaker-vbat-mono-2" />
+ </path>
+
+ <path name="voice-speaker-mic">
+ <path name="speaker-mic" />
+ </path>
+
+ <path name="voice-headphones">
+ <path name="headphones" />
+ </path>
+
+ <path name="voice-headset">
+ <path name="headphones" />
+ </path>
+
+ <path name="voice-line">
+ <path name="voice-headphones" />
+ </path>
+
+ <path name="voice-headset-mic">
+ <path name="headset-mic" />
+ </path>
+
+ <path name="speaker-and-headphones">
+ <path name="headphones" />
+ <path name="speaker" />
+ </path>
+
+ <path name="speaker-and-line">
+ <path name="speaker-and-headphones" />
+ </path>
+
+ <path name="speaker-and-headphones-liquid">
+ <path name="headphones" />
+ <path name="speaker" />
+ </path>
+
+ <path name="speaker-and-line-liquid">
+ <path name="speaker-and-headphones-liquid" />
+ </path>
+
+ <path name="usb-headphones">
+ </path>
+
+ <path name="usb-headset">
+ </path>
+
+ <path name="afe-proxy">
+ </path>
+
+ <path name="display-port">
+ </path>
+
+ <path name="speaker-and-usb-headphones">
+ <path name="speaker" />
+ <path name="usb-headphones" />
+ </path>
+
+ <path name="speaker-and-display-port">
+ <path name="speaker" />
+ <path name="display-port" />
+ </path>
+
+ <path name="voice-rec-mic">
+ <path name="handset-mic" />
+ </path>
+
+ <path name="camcorder-mic">
+ <path name="handset-mic" />
+ </path>
+
+ <path name="bt-sco-headset">
+ </path>
+
+ <path name="bt-sco-mic">
+ </path>
+
+ <path name="bt-sco-headset-wb">
+ </path>
+
+ <path name="bt-sco-mic-wb">
+ </path>
+
+ <path name="bt-sco-headset-swb">
+ </path>
+
+ <path name="bt-sco-mic-swb">
+ </path>
+
+ <path name="usb-headset-mic">
+ </path>
+
+ <path name="capture-fm">
+ </path>
+
+ <!-- Dual MIC devices -->
+ <path name="handset-dmic-endfire">
+ <ctl name="TX_CDC_DMA_TX_3 Channels" value="Two" />
+ <path name="amic1" />
+ <path name="amic3" />
+ </path>
+
+ <path name="speaker-dmic-endfire">
+ <ctl name="TX_CDC_DMA_TX_3 Channels" value="Two" />
+ <path name="amic1" />
+ <path name="amic3" />
+ </path>
+
+ <path name="dmic-endfire">
+ <path name="handset-dmic-endfire" />
+ <ctl name="IIR0 INP0 MUX" value="DEC2" />
+ </path>
+
+ <path name="dmic-endfire-liquid">
+ <path name="handset-dmic-endfire" />
+ <ctl name="IIR0 INP0 MUX" value="DEC7" />
+ </path>
+
+ <path name="handset-stereo-dmic-ef">
+ <path name="handset-dmic-endfire" />
+ </path>
+
+ <path name="speaker-stereo-dmic-ef">
+ <path name="speaker-dmic-endfire" />
+ </path>
+
+ <path name="voice-dmic-ef-tmus">
+ <path name="dmic-endfire" />
+ </path>
+
+ <path name="voice-dmic-ef">
+ <path name="dmic-endfire" />
+ </path>
+
+ <path name="voice-speaker-dmic-ef">
+ <path name="speaker-dmic-endfire" />
+ </path>
+
+ <path name="voice-rec-dmic-ef">
+ <path name="dmic-endfire" />
+ </path>
+
+ <path name="voice-rec-dmic-ef-fluence">
+ <path name="dmic-endfire" />
+ </path>
+
+ <path name="handset-stereo-dmic-ef-liquid">
+ <path name="handset-dmic-endfire" />
+ </path>
+
+ <path name="speaker-stereo-dmic-ef-liquid">
+ <path name="speaker-dmic-endfire" />
+ </path>
+
+ <path name="voice-dmic-ef-liquid-liquid">
+ <path name="dmic-endfire-liquid" />
+ </path>
+
+ <path name="voice-speaker-dmic-ef-liquid">
+ <path name="dmic-endfire-liquid" />
+ </path>
+
+ <path name="voice-rec-dmic-ef-liquid">
+ <path name="dmic-endfire-liquid" />
+ </path>
+
+ <path name="voice-rec-dmic-ef-fluence-liquid">
+ <path name="dmic-endfire-liquid" />
+ </path>
+ <path name="speaker-dmic-broadside">
+ <ctl name="TX_CDC_DMA_TX_3 Channels" value="Two" />
+ <path name="amic1" />
+ <path name="amic3" />
+ </path>
+
+ <path name="dmic-broadside">
+ <path name="speaker-dmic-broadside" />
+ <ctl name="IIR0 INP0 MUX" value="DEC2" />
+ </path>
+
+ <path name="voice-speaker-dmic-broadside">
+ <path name="dmic-broadside" />
+ </path>
+
+ <!-- Tri MIC devices -->
+ <path name="three-mic">
+ <ctl name="TX_CDC_DMA_TX_3 Channels" value="Three" />
+ <path name="amic1" />
+ <path name="amic3" />
+ <path name="amic4" />
+ </path>
+
+ <path name="speaker-tmic">
+ <path name="three-mic" />
+ </path>
+
+ <path name="voice-speaker-tmic">
+ <path name="speaker-tmic" />
+ </path>
+
+ <!-- Quad MIC devices -->
+ <path name="speaker-qmic">
+ <ctl name="TX_CDC_DMA_TX_3 Channels" value="Four" />
+ <path name="amic1" />
+ <path name="amic3" />
+ <path name="amic4" />
+ <path name="amic5" />
+ </path>
+
+ <path name="speaker-qmic-liquid">
+ </path>
+
+ <path name="voice-speaker-qmic">
+ <path name="speaker-qmic" />
+ </path>
+
+ <path name="quad-mic">
+ <path name="speaker-qmic" />
+ </path>
+
+ <path name="voice-speaker-qmic-liquid">
+ <path name="speaker-qmic-liquid" />
+ </path>
+
+ <path name="quad-mic-liquid">
+ <path name="speaker-qmic-liquid" />
+ </path>
+
+ <!-- TTY devices -->
+
+ <path name="tty-headphones">
+ <ctl name="RX_MACRO RX0 MUX" value="AIF1_PB" />
+ <ctl name="RX INT0_1 MIX1 INP0" value="RX0" />
+ <ctl name="RX INT0 DEM MUX" value="CLSH_DSM_OUT" />
+ <ctl name="RX_COMP1 Switch" value="1" />
+ <ctl name="HPHL_COMP Switch" value="1" />
+ <ctl name="HPHL_RDAC Switch" value="1" />
+ </path>
+
+ <path name="voice-tty-full-headphones">
+ <ctl name="TTY Mode" value="FULL" />
+ <path name="tty-headphones" />
+ </path>
+
+ <path name="voice-tty-vco-headphones">
+ <ctl name="TTY Mode" value="VCO" />
+ <path name="tty-headphones" />
+ </path>
+
+ <path name="voice-tty-hco-handset">
+ <ctl name="TTY Mode" value="HCO" />
+ <path name="handset" />
+ </path>
+
+
+ <path name="voice-tty-hco-handset-hdk">
+ <ctl name="TTY Mode" value="HCO" />
+ <path name="handset" />
+ </path>
+
+ <path name="voice-tty-full-headset-mic">
+ <path name="amic2" />
+ <ctl name="ADC2 Volume" value="0" />
+ <ctl name="TX_DEC0 Volume" value="84" />
+ </path>
+
+ <path name="voice-tty-hco-headset-mic">
+ <path name="voice-tty-full-headset-mic" />
+ </path>
+
+ <path name="voice-tty-vco-handset-mic">
+ <path name="dmic3" />
+ </path>
+
+ <path name="unprocessed-handset-mic">
+ <path name="handset-mic" />
+ </path>
+
+ <path name="unprocessed-mic">
+ <path name="unprocessed-handset-mic" />
+ </path>
+
+ <path name="unprocessed-stereo-mic">
+ <path name="voice-rec-dmic-ef" />
+ </path>
+
+ <path name="unprocessed-three-mic">
+ <path name="three-mic" />
+ </path>
+
+ <path name="unprocessed-quad-mic">
+ <path name="quad-mic" />
+ </path>
+
+ <path name="unprocessed-headset-mic">
+ <path name="headset-mic" />
+ </path>
+
+ <!-- USB TTY start -->
+
+ <!-- full: both end tty -->
+ <path name="voice-tty-full-usb">
+ <ctl name="TTY Mode" value="FULL" />
+ <path name="usb-headphones" />
+ </path>
+
+ <path name="voice-tty-full-usb-mic">
+ <path name="usb-headset-mic" />
+ </path>
+
+ <!-- vco, in: handset mic use existing, out: tty -->
+ <path name="voice-tty-vco-usb">
+ <ctl name="TTY Mode" value="VCO" />
+ <path name="usb-headphones" />
+ </path>
+
+ <!-- hco, in: tty, out: speaker, use existing handset -->
+ <path name="voice-tty-hco-usb-mic">
+ <path name="voice-tty-full-usb-mic" />
+ </path>
+
+ <!-- USB TTY end -->
+
+ <!-- Added for ADSP testfwk -->
+ <path name="ADSP testfwk">
+ <ctl name="WSA_CDC_DMA_RX_0_DL_HL Switch" value="1" />
+ </path>
+
+ <path name="bt-a2dp">
+ <ctl name="SLIM7_RX ADM Channels" value="Two" />
+ </path>
+
+ <path name="speaker-and-bt-a2dp">
+ <path name="speaker" />
+ <path name="bt-a2dp" />
+ </path>
+
+ <path name="deep-buffer-playback bt-a2dp">
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia1" value="1" />
+ </path>
+
+ <path name="low-latency-playback bt-a2dp">
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia5" value="1" />
+ </path>
+
+ <path name="compress-offload-playback bt-a2dp">
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia4" value="1" />
+ </path>
+
+ <path name="compress-offload-playback2 bt-a2dp">
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia7" value="1" />
+ </path>
+
+ <path name="compress-offload-playback3 bt-a2dp">
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia10" value="1" />
+ </path>
+
+ <path name="compress-offload-playback4 bt-a2dp">
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia11" value="1" />
+ </path>
+
+ <path name="compress-offload-playback5 bt-a2dp">
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia12" value="1" />
+ </path>
+
+ <path name="compress-offload-playback6 bt-a2dp">
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia13" value="1" />
+ </path>
+
+ <path name="compress-offload-playback7 bt-a2dp">
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia14" value="1" />
+ </path>
+
+ <path name="compress-offload-playback8 bt-a2dp">
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia15" value="1" />
+ </path>
+
+ <path name="compress-offload-playback9 bt-a2dp">
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia16" value="1" />
+ </path>
+
+ <path name="audio-ull-playback bt-a2dp">
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia8" value="1" />
+ </path>
+
+ <path name="deep-buffer-playback speaker-and-bt-a2dp">
+ <path name="deep-buffer-playback bt-a2dp" />
+ <path name="deep-buffer-playback" />
+ </path>
+
+ <path name="compress-offload-playback speaker-and-bt-a2dp">
+ <path name="compress-offload-playback bt-a2dp" />
+ <path name="compress-offload-playback" />
+ </path>
+
+ <path name="low-latency-playback speaker-and-bt-a2dp">
+ <path name="low-latency-playback bt-a2dp" />
+ <path name="low-latency-playback" />
+ </path>
+
+ <path name="compress-offload-playback2 speaker-and-bt-a2dp">
+ <path name="compress-offload-playback2 bt-a2dp" />
+ <path name="compress-offload-playback2" />
+ </path>
+
+ <path name="compress-offload-playback3 speaker-and-bt-a2dp">
+ <path name="compress-offload-playback3 bt-a2dp" />
+ <path name="compress-offload-playback3" />
+ </path>
+
+ <path name="compress-offload-playback4 speaker-and-bt-a2dp">
+ <path name="compress-offload-playback4 bt-a2dp" />
+ <path name="compress-offload-playback4" />
+ </path>
+
+ <path name="compress-offload-playback5 speaker-and-bt-a2dp">
+ <path name="compress-offload-playback5 bt-a2dp" />
+ <path name="compress-offload-playback5" />
+ </path>
+
+ <path name="compress-offload-playback6 speaker-and-bt-a2dp">
+ <path name="compress-offload-playback6 bt-a2dp" />
+ <path name="compress-offload-playback6" />
+ </path>
+
+ <path name="compress-offload-playback7 speaker-and-bt-a2dp">
+ <path name="compress-offload-playback7 bt-a2dp" />
+ <path name="compress-offload-playback7" />
+ </path>
+
+ <path name="compress-offload-playback8 speaker-and-bt-a2dp">
+ <path name="compress-offload-playback8 bt-a2dp" />
+ <path name="compress-offload-playback8" />
+ </path>
+
+ <path name="compress-offload-playback9 speaker-and-bt-a2dp">
+ <path name="compress-offload-playback9 bt-a2dp" />
+ <path name="compress-offload-playback9" />
+ </path>
+
+ <path name="audio-ull-playback speaker-and-bt-a2dp">
+ <path name="audio-ull-playback bt-a2dp" />
+ <path name="audio-ull-playback" />
+ </path>
+
+ <path name="mmap-playback">
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia16" value="1" />
+ </path>
+
+ <path name="mmap-playback headphones">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia16" value="1" />
+ </path>
+
+ <path name="mmap-playback speaker-and-headphones">
+ <path name="mmap-playback" />
+ <path name="mmap-playback headphones" />
+ </path>
+
+ <path name="mmap-playback bt-sco">
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia16" value="1" />
+ </path>
+
+ <path name="mmap-playback bt-sco-wb">
+ <ctl name="BT SampleRate" value="KHZ_16" />
+ <path name="mmap-playback bt-sco" />
+ </path>
+
+ <path name="mmap-playback bt-sco-swb">
+ <path name="mmap-playback bt-sco" />
+ </path>
+
+ <path name="mmap-playback afe-proxy">
+ <ctl name="AFE_PCM_RX Audio Mixer MultiMedia16" value="1" />
+ </path>
+
+ <path name="mmap-playback usb-headphones">
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia16" value="1" />
+ </path>
+
+ <path name="mmap-playback usb-headset">
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia16" value="1" />
+ </path>
+
+ <path name="mmap-playback display-port">
+ <ctl name="DISPLAY_PORT Mixer MultiMedia16" value="1" />
+ </path>
+
+ <path name="mmap-playback hdmi">
+ <ctl name="HDMI Mixer MultiMedia16" value="1" />
+ </path>
+
+ <path name="mmap-playback speaker-and-hdmi">
+ <path name="mmap-playback hdmi" />
+ <path name="mmap-playback" />
+ </path>
+
+ <path name="mmap-playback speaker-and-display-port">
+ <path name="mmap-playback display-port" />
+ <path name="mmap-playback" />
+ </path>
+
+ <path name="mmap-playback speaker-and-usb-headphones">
+ <path name="mmap-playback usb-headphones" />
+ <path name="mmap-playback" />
+ </path>
+
+ <path name="mmap-record">
+ <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>
+
+ <path name="mmap-record bt-sco-wb">
+ <ctl name="BT SampleRate" value="KHZ_16" />
+ <path name="mmap-record bt-sco" />
+ </path>
+
+ <path name="mmap-record bt-sco-swb">
+ <path name="mmap-record bt-sco" />
+ </path>
+
+ <path name="mmap-record capture-fm">
+ <ctl name="MultiMedia16 Mixer SLIM_8_TX" value="1" />
+ </path>
+
+ <path name="mmap-record usb-headset-mic">
+ <ctl name="MultiMedia16 Mixer USB_AUDIO_TX" value="1" />
+ </path>
+
+ <path name="mmap-record headset-mic">
+ <ctl name="MultiMedia16 Mixer TX_CDC_DMA_TX_4" value="1" />
+ </path>
+
+ <path name="hifi-playback display-port">
+ <ctl name="DISPLAY_PORT Mixer MultiMedia2" value="1" />
+ </path>
+
+ <path name="hifi-playback afe-proxy">
+ <ctl name="AFE_PCM_RX Audio Mixer MultiMedia2" value="1" />
+ </path>
+
+ <path name="hifi-playback usb-headset">
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia2" value="1" />
+ </path>
+
+ <path name="hifi-playback usb-headphones">
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia2" value="1" />
+ </path>
+
+ <path name="hifi-record">
+ <ctl name="MultiMedia2 Mixer TX_CDC_DMA_TX_3" value="1" />
+ </path>
+
+ <path name="hifi-record usb-headset-mic">
+ <ctl name="MultiMedia2 Mixer USB_AUDIO_TX" value="1" />
+ </path>
+
+ <path name="incall_music_uplink">
+ <ctl name="Incall_Music Audio Mixer MultiMedia9" value="1" />
+ </path>
+
+ <path name="incall_music_uplink speaker">
+ <path name="incall_music_uplink" />
+ </path>
+
+ <path name="incall_music_uplink handset">
+ <path name="incall_music_uplink" />
+ </path>
+
+ <path name="incall_music_uplink handset-hac">
+ <path name="incall_music_uplink" />
+ </path>
+
+ <path name="incall_music_uplink display-port">
+ <path name="incall_music_uplink" />
+ </path>
+
+ <path name="incall_music_uplink bt-sco">
+ <path name="incall_music_uplink" />
+ </path>
+
+ <path name="incall_music_uplink bt-sco-wb">
+ <path name="incall_music_uplink" />
+ </path>
+
+ <path name="incall_music_uplink bt-sco-swb">
+ <path name="incall_music_uplink" />
+ </path>
+
+ <path name="incall_music_uplink speaker-and-display-port">
+ <path name="incall_music_uplink" />
+ </path>
+
+ <path name="incall_music_uplink afe-proxy">
+ <path name="incall_music_uplink" />
+ </path>
+
+ <path name="incall_music_uplink usb-headphones">
+ <path name="incall_music_uplink" />
+ </path>
+
+ <path name="incall_music_uplink usb-headset">
+ <path name="incall_music_uplink" />
+ </path>
+
+ <path name="incall_music_uplink speaker-and-usb-headphones">
+ <path name="incall_music_uplink" />
+ </path>
+
+ <path name="incall_music_uplink headphones">
+ <path name="incall_music_uplink" />
+ </path>
+
+ <path name="incall_music_uplink headset">
+ <path name="incall_music_uplink" />
+ </path>
+
+ <path name="incall_music_uplink speaker-and-headphones">
+ <path name="incall_music_uplink" />
+ </path>
+
+ <path name="incall_music_uplink speaker-and-bt-sco">
+ <path name="incall_music_uplink" />
+ </path>
+
+ <path name="incall_music_uplink voice-tty-hco-handset">
+ <path name="incall_music_uplink" />
+ </path>
+
+ <path name="incall_music_uplink speaker-and-bt-a2dp">
+ <path name="incall_music_uplink" />
+ </path>
+
+ <path name="incall_music_uplink bt-a2dp">
+ <path name="incall_music_uplink" />
+ </path>
+ <path name="incall_music_uplink afe-proxy">
+ <path name="incall_music_uplink" />
+ </path>
+</mixer>
diff --git a/configs/lito/mixer_paths_qrd.xml b/configs/lito/mixer_paths_qrd.xml
index d16fd7e..e2a6bcd 100644
--- a/configs/lito/mixer_paths_qrd.xml
+++ b/configs/lito/mixer_paths_qrd.xml
@@ -320,6 +320,7 @@
<ctl name="MultiMedia1 Mixer TX_CDC_DMA_TX_3" value="0" />
<ctl name="ADC2_MIXER Switch" value="0" />
<ctl name="ADC2 MUX" value="ZERO" />
+ <ctl name="DEC0_BCS Switch" value="0" />
<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" />
@@ -363,10 +364,10 @@
<ctl name="HPHR Volume" value="20" />
<ctl name="EAR SPKR PA Gain" value="G_DEFAULT" />
- <ctl name="TX_DEC0 Volume" value="84" />
- <ctl name="TX_DEC1 Volume" value="84" />
- <ctl name="TX_DEC2 Volume" value="84" />
- <ctl name="TX_DEC3 Volume" value="84" />
+ <ctl name="TX_DEC0 Volume" value="90" />
+ <ctl name="TX_DEC1 Volume" value="90" />
+ <ctl name="TX_DEC2 Volume" value="90" />
+ <ctl name="TX_DEC3 Volume" value="90" />
<ctl name="TX_DEC4 Volume" value="84" />
<ctl name="TX_DEC5 Volume" value="84" />
<ctl name="TX_DEC6 Volume" value="84" />
@@ -2812,66 +2813,67 @@
<!-- These are actual sound device specific mixer settings -->
<path name="amic1">
- <ctl name="TX DEC0 MUX" value="SWR_MIC" />
- <ctl name="TX SMIC MUX0" value="ADC0" />
+ <ctl name="TX DEC2 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX2" value="ADC0" />
<ctl name="TX_CDC_DMA_TX_3 Channels" value="One" />
- <ctl name="TX_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
<ctl name="ADC1_MIXER Switch" value="1" />
</path>
<path name="amic2">
- <ctl name="TX DEC5 MUX" value="SWR_MIC" />
- <ctl name="TX SMIC MUX5" value="ADC1" />
+ <ctl name="TX DEC0 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX0" value="ADC1" />
<ctl name="TX_CDC_DMA_TX_4 Channels" value="One" />
- <ctl name="TX_AIF2_CAP Mixer DEC5" value="1" />
+ <ctl name="TX_AIF2_CAP Mixer DEC0" value="1" />
+ <ctl name="DEC0_BCS Switch" value="1" />
<ctl name="ADC2_MIXER Switch" value="1" />
<ctl name="ADC2 MUX" value="INP2" />
</path>
<path name="amic3">
- <ctl name="TX DEC0 MUX" value="SWR_MIC" />
- <ctl name="TX SMIC MUX0" value="ADC2" />
+ <ctl name="TX DEC2 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX2" value="ADC2" />
<ctl name="TX_CDC_DMA_TX_3 Channels" value="One" />
- <ctl name="TX_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
<ctl name="ADC2_MIXER Switch" value="1" />
<ctl name="ADC2 MUX" value="INP3" />
</path>
<path name="dmic1">
<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="DMIC0" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC0" />
</path>
<path name="dmic2">
<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="DMIC1" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC1" />
</path>
<path name="dmic3">
<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="DMIC2" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC2" />
</path>
<path name="dmic4">
<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="DMIC3" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" 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" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC4" />
</path>
<path name="dmic6">
<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="DMIC5" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC5" />
</path>
<path name="speaker">
@@ -2915,7 +2917,7 @@
<path name="sidetone-headphones">
<path name="sidetone-iir" />
<ctl name="IIR0 INP0 Volume" value="40" />
- <ctl name="IIR0 INP0 MUX" value="DEC0" />
+ <ctl name="IIR0 INP0 MUX" value="DEC2" />
<ctl name="RX INT0 MIX2 INP" value="SRC0" />
<ctl name="RX INT1 MIX2 INP" value="SRC0" />
</path>
@@ -2923,7 +2925,7 @@
<path name="sidetone-handset">
<path name="sidetone-iir" />
<ctl name="IIR0 INP0 Volume" value="54" />
- <ctl name="IIR0 INP0 MUX" value="DEC0" />
+ <ctl name="IIR0 INP0 MUX" value="DEC2" />
<ctl name="RX INT0 MIX2 INP" value="SRC0" />
</path>
@@ -3024,6 +3026,7 @@
</path>
<path name="headset-mic">
+ <ctl name="TX_DEC0 Volume" value="84" />
<path name="amic2" />
</path>
@@ -3152,23 +3155,23 @@
<!-- Dual MIC devices -->
<path name="handset-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="DMIC1" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC1" />
<ctl name="TX_AIF1_CAP Mixer DEC1" value="1" />
<ctl name="TX DMIC MUX1" value="DMIC3" />
</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 DEC2" value="1" />
+ <ctl name="TX DMIC MUX2" value="DMIC2" />
<ctl name="TX_AIF1_CAP Mixer DEC1" value="1" />
<ctl name="TX DMIC MUX1" value="DMIC1" />
</path>
<path name="dmic-endfire">
<path name="handset-dmic-endfire" />
- <ctl name="IIR0 INP0 MUX" value="DEC0" />
+ <ctl name="IIR0 INP0 MUX" value="DEC2" />
</path>
<path name="handset-stereo-dmic-ef">
@@ -3205,7 +3208,7 @@
<path name="dmic-broadside">
<path name="speaker-dmic-broadside" />
- <ctl name="IIR0 INP0 MUX" value="DEC0" />
+ <ctl name="IIR0 INP0 MUX" value="DEC2" />
</path>
<path name="voice-speaker-dmic-broadside">
@@ -3274,8 +3277,8 @@
<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 DEC3" value="1" />
+ <ctl name="TX DMIC MUX3" 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" />
@@ -3288,8 +3291,8 @@
<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 DEC4" value="1" />
+ <ctl name="TX DMIC MUX4" 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" />
diff --git a/configs/lito/sound_trigger_mixer_paths_cdp.xml b/configs/lito/sound_trigger_mixer_paths_cdp.xml
new file mode 100644
index 0000000..16263f4
--- /dev/null
+++ b/configs/lito/sound_trigger_mixer_paths_cdp.xml
@@ -0,0 +1,329 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--- Copyright (c) 2019, The Linux Foundation. All rights reserved. -->
+<!--- -->
+<!--- Redistribution and use in source and binary forms, with or without -->
+<!--- modification, are permitted provided that the following conditions are -->
+<!--- met: -->
+<!--- * Redistributions of source code must retain the above copyright -->
+<!--- notice, this list of conditions and the following disclaimer. -->
+<!--- * Redistributions in binary form must reproduce the above -->
+<!--- copyright notice, this list of conditions and the following -->
+<!--- disclaimer in the documentation and/or other materials provided -->
+<!--- with the distribution. -->
+<!--- * Neither the name of The Linux Foundation nor the names of its -->
+<!--- contributors may be used to endorse or promote products derived -->
+<!--- from this software without specific prior written permission. -->
+<!--- -->
+<!--- THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED -->
+<!--- WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -->
+<!--- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT -->
+<!--- ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS -->
+<!--- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -->
+<!--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -->
+<!--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -->
+<!--- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -->
+<!--- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -->
+<!--- OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -->
+<!--- IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -->
+
+<mixer>
+ <!-- These are the initial mixer settings -->
+ <ctl name="LSM1 Mixer VA_CDC_DMA_TX_0" value="0" />
+ <ctl name="LSM2 Mixer VA_CDC_DMA_TX_0" value="0" />
+ <ctl name="LSM3 Mixer VA_CDC_DMA_TX_0" value="0" />
+ <ctl name="LSM4 Mixer VA_CDC_DMA_TX_0" value="0" />
+ <ctl name="LSM5 Mixer VA_CDC_DMA_TX_0" value="0" />
+ <ctl name="LSM6 Mixer VA_CDC_DMA_TX_0" value="0" />
+ <ctl name="LSM7 Mixer VA_CDC_DMA_TX_0" value="0" />
+ <ctl name="LSM8 Mixer VA_CDC_DMA_TX_0" value="0" />
+ <ctl name="LSM1 Port" value="None" />
+ <ctl name="LSM2 Port" value="None" />
+ <ctl name="LSM3 Port" value="None" />
+ <ctl name="LSM4 Port" value="None" />
+ <ctl name="LSM5 Port" value="None" />
+ <ctl name="LSM6 Port" value="None" />
+ <ctl name="LSM7 Port" value="None" />
+ <ctl name="LSM8 Port" value="None" />
+ <ctl name="VA_CDC_DMA_TX_0 Channels" value="One" />
+ <ctl name="VA_AIF1_CAP Mixer DEC0" value="0" />
+ <ctl name="VA_AIF1_CAP Mixer DEC1" value="0" />
+ <ctl name="VA_AIF1_CAP Mixer DEC2" value="0" />
+ <ctl name="VA_AIF1_CAP Mixer DEC3" value="0" />
+ <ctl name="VA_AIF1_CAP Mixer DEC4" value="0" />
+ <ctl name="VA_AIF1_CAP Mixer DEC5" value="0" />
+ <ctl name="VA_AIF1_CAP Mixer DEC6" value="0" />
+ <ctl name="VA_AIF1_CAP Mixer DEC7" value="0" />
+ <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" />
+ <ctl name="VA DMIC MUX0" value="ZERO" />
+ <ctl name="VA DMIC MUX1" value="ZERO" />
+ <ctl name="VA DMIC MUX2" value="ZERO" />
+ <ctl name="VA DMIC MUX3" value="ZERO" />
+ <ctl name="VA DMIC MUX4" value="ZERO" />
+ <ctl name="VA DMIC MUX5" value="ZERO" />
+ <ctl name="VA DMIC MUX6" value="ZERO" />
+ <ctl name="VA DMIC MUX7" value="ZERO" />
+ <ctl name="VA SMIC MUX0" value="ZERO" />
+ <ctl name="VA SMIC MUX1" value="ZERO" />
+ <ctl name="VA SMIC MUX2" value="ZERO" />
+ <ctl name="VA SMIC MUX3" value="ZERO" />
+ <ctl name="VA SMIC MUX4" value="ZERO" />
+ <ctl name="VA SMIC MUX5" value="ZERO" />
+ <ctl name="VA SMIC MUX6" value="ZERO" />
+ <ctl name="VA SMIC MUX7" value="ZERO" />
+ <ctl name="ADC1_MIXER Switch" value="0" />
+ <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="ADC4_MIXER Switch" value="0" />
+ <ctl name="ADC4 MUX" value="ZERO" />
+ <ctl name="ADC1 Volume" value="0" />
+ <ctl name="ADC2 Volume" value="0" />
+ <ctl name="ADC3 Volume" value="0" />
+ <ctl name="ADC4 Volume" value="0" />
+ <ctl name="AUDIO_REF_EC_UL1 MUX" value="None"/>
+ <ctl name="EC Reference Channels" value="Zero"/>
+ <ctl name="EC Reference Bit Format" value="0"/>
+ <ctl name="EC Reference SampleRate" value="0"/>
+
+ <path name="listen-voice-wakeup-1">
+ <ctl name="LSM1 Mixer VA_CDC_DMA_TX_0" value="1" />
+ </path>
+
+ <path name="listen-voice-wakeup-2">
+ <ctl name="LSM2 Mixer VA_CDC_DMA_TX_0" value="1" />
+ </path>
+
+ <path name="listen-voice-wakeup-3">
+ <ctl name="LSM3 Mixer VA_CDC_DMA_TX_0" value="1" />
+ </path>
+
+ <path name="listen-voice-wakeup-4">
+ <ctl name="LSM4 Mixer VA_CDC_DMA_TX_0" value="1" />
+ </path>
+
+ <path name="listen-voice-wakeup-5">
+ <ctl name="LSM5 Mixer VA_CDC_DMA_TX_0" value="1" />
+ </path>
+
+ <path name="listen-voice-wakeup-6">
+ <ctl name="LSM6 Mixer VA_CDC_DMA_TX_0" value="1" />
+ </path>
+
+ <path name="listen-voice-wakeup-7">
+ <ctl name="LSM7 Mixer VA_CDC_DMA_TX_0" value="1" />
+ </path>
+
+ <path name="listen-voice-wakeup-8">
+ <ctl name="LSM8 Mixer VA_CDC_DMA_TX_0" value="1" />
+ </path>
+
+ <path name="listen-voice-wakeup-1 preproc">
+ <path name="listen-voice-wakeup-1" />
+ </path>
+
+ <path name="listen-voice-wakeup-2 preproc">
+ <path name="listen-voice-wakeup-2" />
+ </path>
+
+ <path name="listen-voice-wakeup-3 preproc">
+ <path name="listen-voice-wakeup-3" />
+ </path>
+
+ <path name="listen-voice-wakeup-4 preproc">
+ <path name="listen-voice-wakeup-4" />
+ </path>
+
+ <path name="listen-voice-wakeup-5 preproc">
+ <path name="listen-voice-wakeup-5" />
+ </path>
+
+ <path name="listen-voice-wakeup-6 preproc">
+ <path name="listen-voice-wakeup-6" />
+ </path>
+
+ <path name="listen-voice-wakeup-7 preproc">
+ <path name="listen-voice-wakeup-7" />
+ </path>
+
+ <path name="listen-voice-wakeup-8 preproc">
+ <path name="listen-voice-wakeup-8" />
+ </path>
+
+ <path name="listen-voice-wakeup-1 port">
+ <ctl name="LSM1 Port" value="VA_CDC_DMA_TX_0" />
+ </path>
+
+ <path name="listen-voice-wakeup-2 port">
+ <ctl name="LSM2 Port" value="VA_CDC_DMA_TX_0" />
+ </path>
+
+ <path name="listen-voice-wakeup-3 port">
+ <ctl name="LSM3 Port" value="VA_CDC_DMA_TX_0" />
+ </path>
+
+ <path name="listen-voice-wakeup-4 port">
+ <ctl name="LSM4 Port" value="VA_CDC_DMA_TX_0" />
+ </path>
+
+ <path name="listen-voice-wakeup-5 port">
+ <ctl name="LSM5 Port" value="VA_CDC_DMA_TX_0" />
+ </path>
+
+ <path name="listen-voice-wakeup-6 port">
+ <ctl name="LSM6 Port" value="VA_CDC_DMA_TX_0" />
+ </path>
+
+ <path name="listen-voice-wakeup-7 port">
+ <ctl name="LSM7 Port" value="VA_CDC_DMA_TX_0" />
+ </path>
+
+ <path name="listen-voice-wakeup-8 port">
+ <ctl name="LSM8 Port" value="VA_CDC_DMA_TX_0" />
+ </path>
+
+ <path name="listen-voice-wakeup-1 preproc port">
+ <ctl name="LSM1 Port" value="ADM_LSM_TX" />
+ </path>
+
+ <path name="listen-voice-wakeup-2 preproc port">
+ <ctl name="LSM2 Port" value="ADM_LSM_TX" />
+ </path>
+
+ <path name="listen-voice-wakeup-3 preproc port">
+ <ctl name="LSM3 Port" value="ADM_LSM_TX" />
+ </path>
+
+ <path name="listen-voice-wakeup-4 preproc port">
+ <ctl name="LSM4 Port" value="ADM_LSM_TX" />
+ </path>
+
+ <path name="listen-voice-wakeup-5 preproc port">
+ <ctl name="LSM5 Port" value="ADM_LSM_TX" />
+ </path>
+
+ <path name="listen-voice-wakeup-6 preproc port">
+ <ctl name="LSM6 Port" value="ADM_LSM_TX" />
+ </path>
+
+ <path name="listen-voice-wakeup-7 preproc port">
+ <ctl name="LSM7 Port" value="ADM_LSM_TX" />
+ </path>
+
+ <path name="listen-voice-wakeup-8 preproc port">
+ <ctl name="LSM8 Port" value="ADM_LSM_TX" />
+ </path>
+
+ <path name="listen-ape-handset-mic">
+ <ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="VA DEC0 MUX" value="SWR_MIC" />
+ <ctl name="VA SMIC MUX0" value="ADC0" />
+ <ctl name="ADC1 Volume" value="62" />
+ <ctl name="ADC1_MIXER Switch" value="1" />
+ </path>
+
+ <path name="listen-ape-handset-mic-preproc">
+ <path name="listen-ape-handset-mic" />
+ </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="SWR_MIC" />
+ <ctl name="VA SMIC MUX0" value="ADC0" />
+ <ctl name="ADC1 Volume" value="62" />
+ <ctl name="ADC1_MIXER Switch" value="1" />
+ <ctl name="VA DEC1 MUX" value="SWR_MIC" />
+ <ctl name="VA SMIC MUX1" value="ADC1" />
+ <ctl name="ADC2 Volume" value="62" />
+ <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_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="SWR_MIC" />
+ <ctl name="VA SMIC MUX0" value="ADC0" />
+ <ctl name="ADC1 Volume" value="62" />
+ <ctl name="ADC1_MIXER Switch" value="1" />
+ <ctl name="VA DEC1 MUX" value="SWR_MIC" />
+ <ctl name="VA SMIC MUX1" value="ADC1" />
+ <ctl name="ADC2 Volume" value="62" />
+ <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="ADC3 Volume" value="62" />
+ <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="SWR_MIC" />
+ <ctl name="VA SMIC MUX0" value="ADC0" />
+ <ctl name="ADC1 Volume" value="62" />
+ <ctl name="ADC1_MIXER Switch" value="1" />
+ <ctl name="VA DEC1 MUX" value="SWR_MIC" />
+ <ctl name="VA SMIC MUX1" value="ADC1" />
+ <ctl name="ADC2 Volume" value="62" />
+ <ctl name="ADC2_MIXER Switch" value="1" />
+ <ctl name="ADC2 MUX" value="INP3" />
+ <ctl name="VA DEC3 MUX" value="SWR_MIC" />
+ <ctl name="VA SMIC MUX3" value="ADC2" />
+ <ctl name="ADC3 Volume" value="62" />
+ <ctl name="ADC3_MIXER Switch" value="1" />
+ <ctl name="ADC3 MUX" value="INP4" />
+ <ctl name="VA DEC2 MUX" value="SWR_MIC" />
+ <ctl name="VA SMIC MUX2" value="ADC3" />
+ <ctl name="ADC4 Volume" value="62" />
+ <ctl name="ADC4_MIXER Switch" value="1" />
+ <ctl name="ADC4 MUX" value="INP5" />
+ </path>
+
+ <path name="listen-ape-headset-mic">
+ <ctl name="VA_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="VA DEC0 MUX" value="SWR_MIC" />
+ <ctl name="VA SMIC MUX0" value="ADC1" />
+ <ctl name="ADC2 Volume" value="62" />
+ <ctl name="ADC2_MIXER Switch" value="1" />
+ <ctl name="ADC2 MUX" value="INP2" />
+ </path>
+
+ <path name="echo-reference">
+ <ctl name="AUDIO_REF_EC_UL1 MUX" value="WSA_CDC_DMA_RX_0"/>
+ <ctl name="EC Reference Channels" value="Two"/>
+ <ctl name="EC Reference Bit Format" value="S16_LE"/>
+ <ctl name="EC Reference SampleRate" value="48000"/>
+ </path>
+
+ <path name="echo-reference headset">
+ <ctl name="AUDIO_REF_EC_UL1 MUX" value="WSA_CDC_DMA_RX_0"/>
+ <ctl name="EC Reference Channels" value="One"/>
+ <ctl name="EC Reference Bit Format" value="S16_LE"/>
+ <ctl name="EC Reference SampleRate" value="48000"/>
+ </path>
+
+ <path name="echo-reference a2dp">
+ <ctl name="AUDIO_REF_EC_UL1 MUX" value="SLIM_7_RX"/>
+ <ctl name="EC Reference Channels" value="Two"/>
+ <ctl name="EC Reference Bit Format" value="S16_LE"/>
+ <ctl name="EC Reference SampleRate" value="48000"/>
+ </path>
+
+</mixer>
diff --git a/hal/audio_extn/audio_extn.c b/hal/audio_extn/audio_extn.c
index c2e1349..8512a4e 100644
--- a/hal/audio_extn/audio_extn.c
+++ b/hal/audio_extn/audio_extn.c
@@ -216,7 +216,9 @@
#define IS_BIT_SET(NUM, bitno) (NUM & (1 << bitno))
-#define EXT_DISPLAY_PLUG_STATUS_NOTIFY_ENABLE 0x30
+#define EXT_DISPLAY_PLUG_STATUS_NOTIFY_ENABLE 0x30
+#define EXT_DISPLAY_PLUG_STATUS_NOTIFY_CONNECT 0x01
+#define EXT_DISPLAY_PLUG_STATUS_NOTIFY_DISCONNECT 0x00
static ssize_t update_sysfs_node(const char *path, const char *data, size_t len)
{
@@ -276,12 +278,14 @@
return -1;
}
-static int update_ext_disp_sysfs_node(const struct audio_device *adev, int node_value)
+static int update_ext_disp_sysfs_node(const struct audio_device *adev,
+ int node_value, int controller, int stream)
{
char ext_disp_ack_path[80] = {0};
char ext_disp_ack_value[3] = {0};
int index, ret = -1;
- int ext_disp_type = platform_get_ext_disp_type(adev->platform);
+ int ext_disp_type = platform_get_ext_disp_type_v2(adev->platform, controller,
+ stream);
if (ext_disp_type < 0) {
ALOGE("%s, Unable to get the external display type, err:%d",
@@ -305,26 +309,47 @@
return ret;
}
-static int update_audio_ack_state(const struct audio_device *adev, int node_value)
+static int update_audio_ack_state(const struct audio_device *adev,
+ int node_value,
+ int controller,
+ int stream)
{
- const char *mixer_ctl_name = "External Display Audio Ack";
- struct mixer_ctl *ctl;
int ret = 0;
+ int ctl_index = 0;
+ struct mixer_ctl *ctl = NULL;
+ const char *ctl_prefix = "External Display";
+ const char *ctl_suffix = "Audio Ack";
+ char mixer_ctl_name[MIXER_PATH_MAX_LENGTH] = {0};
+ ctl_index = platform_get_display_port_ctl_index(controller, stream);
+ if (-EINVAL == ctl_index) {
+ ALOGE("%s: Unknown controller/stream %d/%d",
+ __func__, controller, stream);
+ return -EINVAL;
+ }
+
+ if (0 == ctl_index)
+ snprintf(mixer_ctl_name, sizeof(mixer_ctl_name),
+ "%s %s", ctl_prefix, ctl_suffix);
+ else
+ snprintf(mixer_ctl_name, sizeof(mixer_ctl_name),
+ "%s%d %s", ctl_prefix, ctl_index, ctl_suffix);
+
+ ALOGV("%s: mixer ctl name: %s", __func__, mixer_ctl_name);
ctl = mixer_get_ctl_by_name(adev->mixer, mixer_ctl_name);
/* If no mixer command support, fall back to sysfs node approach */
if (!ctl) {
ALOGI("%s: could not get ctl for mixer cmd(%s), use sysfs node instead\n",
__func__, mixer_ctl_name);
- ret = update_ext_disp_sysfs_node(adev, node_value);
+ ret = update_ext_disp_sysfs_node(adev, node_value, controller, stream);
} else {
char *ack_str = NULL;
if (node_value == EXT_DISPLAY_PLUG_STATUS_NOTIFY_ENABLE)
ack_str = "Ack_Enable";
- else if (node_value == 1)
+ else if (node_value == EXT_DISPLAY_PLUG_STATUS_NOTIFY_CONNECT)
ack_str = "Connect";
- else if (node_value == 0)
+ else if (node_value == EXT_DISPLAY_PLUG_STATUS_NOTIFY_DISCONNECT)
ack_str = "Disconnect";
else {
ALOGE("%s: Invalid input parameter - 0x%x\n",
@@ -343,24 +368,32 @@
static void audio_extn_ext_disp_set_parameters(const struct audio_device *adev,
struct str_parms *parms)
{
+ int controller = 0;
+ int stream = 0;
char value[32] = {0};
static bool is_hdmi_sysfs_node_init = false;
if (str_parms_get_str(parms, "connect", value, sizeof(value)) >= 0
&& (atoi(value) & AUDIO_DEVICE_OUT_AUX_DIGITAL)) {
//params = "connect=1024" for external display connection.
+ platform_get_controller_stream_from_params(parms, &controller, &stream);
if (is_hdmi_sysfs_node_init == false) {
//check if this is different for dp and hdmi
is_hdmi_sysfs_node_init = true;
- update_audio_ack_state(adev, EXT_DISPLAY_PLUG_STATUS_NOTIFY_ENABLE);
+ update_audio_ack_state(adev,
+ EXT_DISPLAY_PLUG_STATUS_NOTIFY_ENABLE,
+ controller, stream);
}
- update_audio_ack_state(adev, 1);
+ update_audio_ack_state(adev, EXT_DISPLAY_PLUG_STATUS_NOTIFY_CONNECT,
+ controller, stream);
} else if(str_parms_get_str(parms, "disconnect", value, sizeof(value)) >= 0
&& (atoi(value) & AUDIO_DEVICE_OUT_AUX_DIGITAL)){
//params = "disconnect=1024" for external display disconnection.
- update_audio_ack_state(adev, 0);
+ platform_get_controller_stream_from_params(parms, &controller, &stream);
+ update_audio_ack_state(adev, EXT_DISPLAY_PLUG_STATUS_NOTIFY_DISCONNECT,
+ controller, stream);
ALOGV("invalidate cached edid");
- platform_invalidate_hdmi_config(adev->platform);
+ platform_invalidate_hdmi_config_v2(adev->platform, controller, stream);
} else {
// handle ext disp devices only
return;
diff --git a/hal/audio_extn/audio_extn.h b/hal/audio_extn/audio_extn.h
index ed1da44..91204a7 100644
--- a/hal/audio_extn/audio_extn.h
+++ b/hal/audio_extn/audio_extn.h
@@ -594,6 +594,12 @@
EXT_DISPLAY_TYPE_HDMI,
EXT_DISPLAY_TYPE_DP
};
+
+// START: MST ==================================================
+#define MAX_CONTROLLERS 1
+#define MAX_STREAMS_PER_CONTROLLER 2
+// END: MST ==================================================
+
// START: HDMI_PASSTHROUGH ==================================================
/* Used to limit sample rate for TrueHD & EC3 */
#define HDMI_PASSTHROUGH_MAX_SAMPLE_RATE 192000
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 21f68c1..bc2f159 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -1836,12 +1836,16 @@
static int read_hdmi_sink_caps(struct stream_out *out)
{
int ret = 0, i = 0, j = 0;
- int channels = platform_edid_get_max_channels(out->dev->platform);
+ int channels = platform_edid_get_max_channels_v2(out->dev->platform,
+ out->extconn.cs.controller,
+ out->extconn.cs.stream);
reset_hdmi_sink_caps(out);
/* Cache ext disp type */
- if (platform_get_ext_disp_type(adev->platform) <= 0) {
+ if (platform_get_ext_disp_type_v2(adev->platform,
+ out->extconn.cs.controller,
+ out->extconn.cs.stream <= 0)) {
ALOGE("%s: Failed to query disp type, ret:%d", __func__, ret);
return -EINVAL;
}
@@ -1867,7 +1871,9 @@
// check channel format caps
i = 0;
- if (platform_is_edid_supported_format(out->dev->platform, AUDIO_FORMAT_AC3)) {
+ if (platform_is_edid_supported_format_v2(out->dev->platform, AUDIO_FORMAT_AC3,
+ out->extconn.cs.controller,
+ out->extconn.cs.stream)) {
ALOGV(":%s HDMI supports AC3/EAC3 formats", __func__);
out->supported_formats[i++] = AUDIO_FORMAT_AC3;
//Adding EAC3/EAC3_JOC formats if AC3 is supported by the sink.
@@ -1876,22 +1882,30 @@
out->supported_formats[i++] = AUDIO_FORMAT_E_AC3_JOC;
}
- if (platform_is_edid_supported_format(out->dev->platform, AUDIO_FORMAT_DOLBY_TRUEHD)) {
+ if (platform_is_edid_supported_format_v2(out->dev->platform, AUDIO_FORMAT_DOLBY_TRUEHD,
+ out->extconn.cs.controller,
+ out->extconn.cs.stream)) {
ALOGV(":%s HDMI supports TRUE HD format", __func__);
out->supported_formats[i++] = AUDIO_FORMAT_DOLBY_TRUEHD;
}
- if (platform_is_edid_supported_format(out->dev->platform, AUDIO_FORMAT_DTS)) {
+ if (platform_is_edid_supported_format_v2(out->dev->platform, AUDIO_FORMAT_DTS,
+ out->extconn.cs.controller,
+ out->extconn.cs.stream)) {
ALOGV(":%s HDMI supports DTS format", __func__);
out->supported_formats[i++] = AUDIO_FORMAT_DTS;
}
- if (platform_is_edid_supported_format(out->dev->platform, AUDIO_FORMAT_DTS_HD)) {
+ if (platform_is_edid_supported_format_v2(out->dev->platform, AUDIO_FORMAT_DTS_HD,
+ out->extconn.cs.controller,
+ out->extconn.cs.stream)) {
ALOGV(":%s HDMI supports DTS HD format", __func__);
out->supported_formats[i++] = AUDIO_FORMAT_DTS_HD;
}
- if (platform_is_edid_supported_format(out->dev->platform, AUDIO_FORMAT_IEC61937)) {
+ if (platform_is_edid_supported_format_v2(out->dev->platform, AUDIO_FORMAT_IEC61937,
+ out->extconn.cs.controller,
+ out->extconn.cs.stream)) {
ALOGV(":%s HDMI supports IEC61937 format", __func__);
out->supported_formats[i++] = AUDIO_FORMAT_IEC61937;
}
@@ -1900,7 +1914,9 @@
// check sample rate caps
i = 0;
for (j = 0; j < MAX_SUPPORTED_SAMPLE_RATES; j++) {
- if (platform_is_edid_supported_sample_rate(out->dev->platform, out_hdmi_sample_rates[j])) {
+ if (platform_is_edid_supported_sample_rate_v2(out->dev->platform, out_hdmi_sample_rates[j],
+ out->extconn.cs.controller,
+ out->extconn.cs.stream)) {
ALOGV(":%s HDMI supports sample rate:%d", __func__, out_hdmi_sample_rates[j]);
out->supported_sample_rates[i++] = out_hdmi_sample_rates[j];
}
@@ -4431,6 +4447,8 @@
struct str_parms *parms;
char value[32];
int ret = 0, val = 0, err;
+ int ext_controller = -1;
+ int ext_stream = -1;
bool bypass_a2dp = false;
bool reconfig = false;
unsigned long service_interval = 0;
@@ -4440,6 +4458,17 @@
parms = str_parms_create_str(kvpairs);
if (!parms)
goto error;
+
+ err = platform_get_controller_stream_from_params(parms, &ext_controller,
+ &ext_stream);
+ if (err >= 0) {
+ out->extconn.cs.controller = ext_controller;
+ out->extconn.cs.stream = ext_stream;
+ ALOGD("%s: usecase(%s) new controller/stream (%d/%d)", __func__,
+ use_case_table[out->usecase], out->extconn.cs.controller,
+ out->extconn.cs.stream);
+ }
+
err = str_parms_get_str(parms, AUDIO_PARAMETER_STREAM_ROUTING, value, sizeof(value));
if (err >= 0) {
val = atoi(value);
@@ -4456,7 +4485,10 @@
if ((out->devices == AUDIO_DEVICE_OUT_AUX_DIGITAL) &&
(val == AUDIO_DEVICE_NONE) &&
!audio_extn_passthru_is_passthrough_stream(out) &&
- (platform_get_edid_info(adev->platform) != 0) /* HDMI disconnected */) {
+ (platform_get_edid_info_v2(adev->platform,
+ out->extconn.cs.controller,
+ out->extconn.cs.stream) != 0)) {
+ out->extconn.cs.controller = out->extconn.cs.stream = -1;
val = AUDIO_DEVICE_OUT_SPEAKER;
}
/*
@@ -4683,6 +4715,7 @@
pthread_mutex_unlock(&out->lock);
}
}
+
//end suspend, resume handling block
str_parms_destroy(parms);
error:
@@ -8116,6 +8149,7 @@
bool a2dp_reconfig = false;
struct listnode *node;
struct audio_usecase *usecase = NULL;
+ int controller = -1, stream = -1;
ALOGD("%s: enter: %s", __func__, kvpairs);
parms = str_parms_create_str(kvpairs);
@@ -8243,11 +8277,13 @@
if (audio_is_output_device(val) &&
(val & AUDIO_DEVICE_OUT_AUX_DIGITAL)) {
ALOGV("cache new ext disp type and edid");
- ret = platform_get_ext_disp_type(adev->platform);
+ platform_get_controller_stream_from_params(parms, &controller, &stream);
+ platform_set_ext_display_device_v2(adev->platform, controller, stream);
+ ret = platform_get_ext_disp_type_v2(adev->platform, controller, stream);
if (ret < 0) {
ALOGE("%s: Failed to query disp type, ret:%d", __func__, ret);
} else {
- platform_cache_edid(adev->platform);
+ 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 686d5a0..b1e61ad 100644
--- a/hal/audio_hw.h
+++ b/hal/audio_hw.h
@@ -435,6 +435,14 @@
char address[AUDIO_DEVICE_MAX_ADDRESS_LEN];
int car_audio_stream;
+
+ union {
+ char *addr;
+ struct {
+ int controller;
+ int stream;
+ } cs;
+ } extconn;
};
struct stream_in {
diff --git a/hal/msm8916/platform.c b/hal/msm8916/platform.c
index 64e9383..3094183 100644
--- a/hal/msm8916/platform.c
+++ b/hal/msm8916/platform.c
@@ -8610,3 +8610,93 @@
*mic_count = actual_mic_count;
return 0;
}
+
+int platform_get_edid_info_v2(void *platform,
+ int controller __unused,
+ int stream __unused)
+{
+ return platform_get_edid_info(platform);
+}
+
+int platform_edid_get_max_channels_v2(void *platform,
+ int controller __unused,
+ int stream __unused)
+{
+ return platform_edid_get_max_channels(platform);
+}
+
+bool platform_is_edid_supported_format_v2(void *platform, int format,
+ int controller __unused,
+ int stream __unused)
+{
+ return platform_is_edid_supported_format(platform, format);
+}
+
+bool platform_is_edid_supported_sample_rate_v2(void *platform, int format,
+ int controller __unused,
+ int stream __unused)
+{
+ return platform_is_edid_supported_sample_rate(platform, format);
+}
+
+void platform_cache_edid_v2(void * platform,
+ int controller __unused,
+ int stream __unused)
+{
+ return platform_cache_edid(platform);
+}
+
+void platform_invalidate_hdmi_config_v2(void * platform,
+ int controller __unused,
+ int stream __unused)
+{
+ return platform_invalidate_hdmi_config(platform);
+}
+
+int platform_set_ext_display_device(void *platform, int controller, int stream)
+{
+ return -1;
+}
+
+int platform_get_controller_stream_from_params(struct str_parms *parms,
+ int *controller, int *stream);
+{
+ return -1;
+}
+
+int platform_get_ext_disp_type_v2(void *platform,
+ int controller __unused,
+ int stream __unused)
+{
+ return platform_get_ext_disp_type(platform);
+}
+
+int platform_set_edid_channels_configuration_v2(void *platform, int channels,
+ int backend_idx,
+ snd_device_t snd_device,
+ int controller __unused,
+ int stream __unused)
+{
+ return platform_set_edid_channels_configuration(platform, channels,
+ backend_idx, snd_device);
+}
+
+int platform_set_channel_allocation_v2(void *platform,
+ int controller __unused,
+ int stream __unused)
+{
+ return platform_set_channel_allocation(platform);
+}
+
+int platform_set_hdmi_channels_v2(void *platform, int channel_count,
+ int controller __unused,
+ int stream __unused)
+{
+ return platform_set_hdmi_channels(platform, channel_count);
+}
+
+int platform_get_display_port_ctl_index(int controller __unused,
+ int stream __unused)
+{
+ return -EINVAL;
+}
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 07d3837..f6a3b1b 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -260,6 +260,8 @@
char *bitwidth_mixer_ctl;
char *samplerate_mixer_ctl;
char *channels_mixer_ctl;
+ int controller;
+ int stream;
} codec_backend_cfg_t;
static native_audio_prop na_props = {0, 0, NATIVE_AUDIO_MODE_INVALID};
@@ -329,9 +331,11 @@
void *hw_info;
acdb_send_gain_dep_cal_t acdb_send_gain_dep_cal;
struct csd_data *csd;
- void *edid_info;
- bool edid_valid;
- int ext_disp_type;
+ struct ext_disp_state {
+ void *edid_info;
+ bool valid;
+ int type;
+ } ext_disp[MAX_CONTROLLERS][MAX_STREAMS_PER_CONTROLLER];
char ec_ref_mixer_path[MIXER_PATH_MAX_LENGTH];
codec_backend_cfg_t current_backend_cfg[MAX_CODEC_BACKENDS];
char codec_version[CODEC_VERSION_MAX_LENGTH];
@@ -523,7 +527,9 @@
[SND_DEVICE_OUT_HDMI] = "hdmi",
[SND_DEVICE_OUT_SPEAKER_AND_HDMI] = "speaker-and-hdmi",
[SND_DEVICE_OUT_DISPLAY_PORT] = "display-port",
+ [SND_DEVICE_OUT_DISPLAY_PORT1] = "display-port1",
[SND_DEVICE_OUT_SPEAKER_AND_DISPLAY_PORT] = "speaker-and-display-port",
+ [SND_DEVICE_OUT_SPEAKER_AND_DISPLAY_PORT1] = "speaker-and-display-port1",
[SND_DEVICE_OUT_BT_SCO] = "bt-sco-headset",
[SND_DEVICE_OUT_BT_SCO_WB] = "bt-sco-headset-wb",
[SND_DEVICE_OUT_BT_SCO_SWB] = "bt-sco-headset-swb",
@@ -802,7 +808,9 @@
[SND_DEVICE_OUT_HDMI] = 18,
[SND_DEVICE_OUT_SPEAKER_AND_HDMI] = 14,
[SND_DEVICE_OUT_DISPLAY_PORT] = 18,
+ [SND_DEVICE_OUT_DISPLAY_PORT1] = 18,
[SND_DEVICE_OUT_SPEAKER_AND_DISPLAY_PORT] = 14,
+ [SND_DEVICE_OUT_SPEAKER_AND_DISPLAY_PORT1] = 14,
[SND_DEVICE_OUT_BT_SCO] = 22,
[SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_SCO] = 14,
[SND_DEVICE_OUT_BT_SCO_WB] = 39,
@@ -1026,6 +1034,7 @@
{TO_NAME_INDEX(SND_DEVICE_OUT_HDMI)},
{TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_AND_HDMI)},
{TO_NAME_INDEX(SND_DEVICE_OUT_DISPLAY_PORT)},
+ {TO_NAME_INDEX(SND_DEVICE_OUT_DISPLAY_PORT1)},
{TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_AND_DISPLAY_PORT)},
{TO_NAME_INDEX(SND_DEVICE_OUT_BT_SCO)},
{TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_SCO)},
@@ -1728,6 +1737,23 @@
static const char *platform_get_mixer_control(struct mixer_ctl *);
+static void platform_reset_edid_info(void *platform) {
+ ALOGV("%s:", __func__);
+ struct platform_data *my_data = (struct platform_data *)platform;
+ int i = 0, j = 0;
+ for (i = 0; i < MAX_CONTROLLERS; ++i) {
+ for (j = 0; j < MAX_STREAMS_PER_CONTROLLER; ++j) {
+ struct ext_disp_state *state = &my_data->ext_disp[i][j];
+ state->type = EXT_DISPLAY_TYPE_NONE;
+ if (state->edid_info) {
+ free(state->edid_info);
+ state->edid_info = NULL;
+ }
+ state->valid = false;
+ }
+ }
+}
+
bool platform_send_gain_dep_cal(void *platform, int level) {
bool ret_val = false;
struct platform_data *my_data = (struct platform_data *)platform;
@@ -1842,6 +1868,9 @@
else if (adev->snd_dev_ref_cnt[SND_DEVICE_OUT_DISPLAY_PORT] > 0)
strlcat(ec_ref_mixer_path, " display-port",
MIXER_PATH_MAX_LENGTH);
+ else if (adev->snd_dev_ref_cnt[SND_DEVICE_OUT_DISPLAY_PORT1] > 0)
+ strlcat(ec_ref_mixer_path, " display-port1",
+ MIXER_PATH_MAX_LENGTH);
else if (out_device & AUDIO_DEVICE_OUT_EARPIECE)
strlcat(ec_ref_mixer_path, " handset",
MIXER_PATH_MAX_LENGTH);
@@ -2088,7 +2117,9 @@
backend_tag_table[SND_DEVICE_OUT_HDMI] = strdup("hdmi");
backend_tag_table[SND_DEVICE_OUT_SPEAKER_AND_HDMI] = strdup("speaker-and-hdmi");
backend_tag_table[SND_DEVICE_OUT_DISPLAY_PORT] = strdup("display-port");
+ backend_tag_table[SND_DEVICE_OUT_DISPLAY_PORT1] = strdup("display-port1");
backend_tag_table[SND_DEVICE_OUT_SPEAKER_AND_DISPLAY_PORT] = strdup("speaker-and-display-port");
+ backend_tag_table[SND_DEVICE_OUT_SPEAKER_AND_DISPLAY_PORT1] = strdup("speaker-and-display-port1");
backend_tag_table[SND_DEVICE_OUT_VOICE_TX] = strdup("afe-proxy");
backend_tag_table[SND_DEVICE_IN_VOICE_RX] = strdup("afe-proxy");
backend_tag_table[SND_DEVICE_OUT_AFE_PROXY] = strdup("afe-proxy");
@@ -2175,7 +2206,9 @@
hw_interface_table[SND_DEVICE_OUT_HDMI] = strdup("HDMI");
hw_interface_table[SND_DEVICE_OUT_SPEAKER_AND_HDMI] = strdup("SLIMBUS_0_RX-and-HDMI");
hw_interface_table[SND_DEVICE_OUT_DISPLAY_PORT] = strdup("DISPLAY_PORT");
+ hw_interface_table[SND_DEVICE_OUT_DISPLAY_PORT1] = strdup("DISPLAY_PORT1");
hw_interface_table[SND_DEVICE_OUT_SPEAKER_AND_DISPLAY_PORT] = strdup("SLIMBUS_0_RX-and-DISPLAY_PORT");
+ hw_interface_table[SND_DEVICE_OUT_SPEAKER_AND_DISPLAY_PORT1] = strdup("SLIMBUS_0_RX-and-DISPLAY_PORT1");
hw_interface_table[SND_DEVICE_OUT_BT_SCO] = strdup("SLIMBUS_7_RX");
hw_interface_table[SND_DEVICE_OUT_BT_SCO_WB] = strdup("SLIMBUS_7_RX");
hw_interface_table[SND_DEVICE_OUT_BT_SCO_SWB] = strdup("SLIMBUS_7_RX");
@@ -3045,8 +3078,6 @@
my_data->ambisonic_profile = false;
my_data->slowtalk = false;
my_data->hd_voice = false;
- my_data->edid_info = NULL;
- my_data->ext_disp_type = EXT_DISPLAY_TYPE_NONE;
my_data->is_wsa_speaker = false;
my_data->hw_dep_fd = -1;
my_data->mono_speaker = SPKR_1;
@@ -3056,6 +3087,7 @@
my_data->spkr_ch_map = NULL;
my_data->use_sprk_default_sample_rate = true;
my_data->fluence_in_voice_comm = false;
+ platform_reset_edid_info(my_data);
//set max volume step for voice call
property_get("ro.config.vc_call_vol_steps", value, TOSTRING(MAX_VOL_INDEX));
@@ -3633,6 +3665,12 @@
strdup("Display Port RX SampleRate");
my_data->current_backend_cfg[DISP_PORT_RX_BACKEND].channels_mixer_ctl =
strdup("Display Port RX Channels");
+ my_data->current_backend_cfg[DISP_PORT1_RX_BACKEND].bitwidth_mixer_ctl =
+ strdup("Display Port1 RX Bit Format");
+ my_data->current_backend_cfg[DISP_PORT1_RX_BACKEND].samplerate_mixer_ctl =
+ strdup("Display Port1 RX SampleRate");
+ my_data->current_backend_cfg[DISP_PORT1_RX_BACKEND].channels_mixer_ctl =
+ strdup("Display Port1 RX Channels");
my_data->current_backend_cfg[USB_AUDIO_RX_BACKEND].bitwidth_mixer_ctl =
strdup("USB_AUDIO_RX Format");
@@ -3708,7 +3746,7 @@
/* Initialize keep alive for HDMI/loopback silence */
audio_extn_keep_alive_init(adev);
- my_data->edid_info = NULL;
+ platform_reset_edid_info(my_data);
free(snd_card_name);
return my_data;
}
@@ -3908,11 +3946,7 @@
struct listnode *node;
audio_extn_keep_alive_deinit();
-
- if (my_data->edid_info) {
- free(my_data->edid_info);
- my_data->edid_info = NULL;
- }
+ platform_reset_edid_info(my_data);
if (be_dai_name_table) {
free((void *)be_dai_name_table);
@@ -3996,11 +4030,7 @@
/* deinit audio device arbitration */
audio_extn_dev_arbi_deinit();
-
- if (my_data->edid_info) {
- free(my_data->edid_info);
- my_data->edid_info = NULL;
- }
+ platform_reset_edid_info(my_data);
if (my_data->adev->mixer) {
audio_extn_utils_close_snd_mixer(my_data->adev->mixer);
@@ -4128,7 +4158,8 @@
*/
if (usecase->type == VOICE_CALL) {
struct audio_device *adev = usecase->stream.out->dev;
- if ((snd_device == SND_DEVICE_OUT_DISPLAY_PORT) &&
+ if (((snd_device == SND_DEVICE_OUT_DISPLAY_PORT) ||
+ (snd_device == SND_DEVICE_OUT_DISPLAY_PORT1)) &&
adev->dp_allowed_for_voice &&
(usecase->in_snd_device == SND_DEVICE_IN_VOICE_USB_HEADSET_MIC)) {
strlcat(mixer_path, "-and-usb-headset-mic", MIXER_PATH_MAX_LENGTH);
@@ -4901,6 +4932,8 @@
port = HDMI_RX_BACKEND;
else if (strcmp(backend_tag_table[snd_device], "display-port") == 0)
port = DISP_PORT_RX_BACKEND;
+ else if (strcmp(backend_tag_table[snd_device], "display-port1") == 0)
+ port = DISP_PORT1_RX_BACKEND;
else if ((strcmp(backend_tag_table[snd_device], "usb-headphones") == 0) ||
(strcmp(backend_tag_table[snd_device], "usb-headset") == 0))
port = USB_AUDIO_RX_BACKEND;
@@ -5508,6 +5541,17 @@
new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER;
new_snd_devices[1] = SND_DEVICE_OUT_DISPLAY_PORT;
ret = 0;
+ } else if (snd_device == SND_DEVICE_OUT_SPEAKER_AND_DISPLAY_PORT1 &&
+ !platform_check_backends_match(SND_DEVICE_OUT_SPEAKER, SND_DEVICE_OUT_DISPLAY_PORT1)) {
+ *num_devices = 2;
+ if (my_data->is_vbat_speaker)
+ new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER_VBAT;
+ else if (my_data->is_wsa_speaker)
+ new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER_WSA;
+ else
+ new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER;
+ new_snd_devices[1] = SND_DEVICE_OUT_DISPLAY_PORT1;
+ ret = 0;
} else if (snd_device == SND_DEVICE_OUT_SPEAKER_AND_USB_HEADSET &&
!platform_check_backends_match(SND_DEVICE_OUT_SPEAKER, SND_DEVICE_OUT_USB_HEADSET)) {
*num_devices = 2;
@@ -5618,21 +5662,118 @@
return ret;
}
-int platform_get_ext_disp_type(void *platform)
-{
- int disp_type;
- struct platform_data *my_data = (struct platform_data *)platform;
+/*
+ * returns index for mixer controls
+ *
+ * example: max controllers = 2, max streams = 4
+ * controller = 0, stream = 0 => Index 0
+ * ...
+ * controller = 0, stream = 3 => Index 3
+ * controller = 1, stream = 0 => Index 4
+ * ...
+ * controller = 1, stream = 3 => Index 7
+ */
+int platform_get_display_port_ctl_index(int controller, int stream) {
- if (my_data->ext_disp_type != EXT_DISPLAY_TYPE_NONE) {
+ if (controller < 0 || controller >= MAX_CONTROLLERS ||
+ stream < 0 || stream >= MAX_STREAMS_PER_CONTROLLER) {
+ ALOGE("%s: Invalid controller/stream - %d/%d",
+ __func__, controller, stream);
+ return -EINVAL;
+ }
+
+ return ((controller % MAX_CONTROLLERS) * MAX_STREAMS_PER_CONTROLLER) +
+ (stream % MAX_STREAMS_PER_CONTROLLER);
+}
+
+int platform_set_ext_display_device_v2(void *platform, int controller, int stream)
+{
+ struct platform_data *my_data = (struct platform_data *)platform;
+ struct audio_device *adev = my_data->adev;
+ struct mixer_ctl *ctl = NULL;
+ int ctl_index = 0;
+ const char *ctl_name_prefix = "External Display";
+ const char *ctl_name_suffix = "Audio Device";
+ char mixer_ctl_name[MIXER_PATH_MAX_LENGTH] = {0};
+ int device_values[2] = {-1, -1};
+
+ if (!audio_extn_is_display_port_enabled()) {
+ ALOGE("%s: display port is not supported", __func__);
+ return -EINVAL;
+ }
+
+ ctl_index = platform_get_display_port_ctl_index(controller, stream);
+ if (-EINVAL == ctl_index) {
+ ALOGE("%s: Unknown controller/stream %d/%d",
+ __func__, controller, stream);
+ return -EINVAL;
+ }
+
+ if (0 == ctl_index)
+ snprintf(mixer_ctl_name, sizeof(mixer_ctl_name),
+ "%s %s", ctl_name_prefix, ctl_name_suffix);
+ else
+ snprintf(mixer_ctl_name, sizeof(mixer_ctl_name),
+ "%s%d %s", ctl_name_prefix, ctl_index, ctl_name_suffix);
+
+ device_values[0] = controller;
+ device_values[1] = stream;
+
+ ALOGV("%s: mixer ctl name: %s", __func__, mixer_ctl_name);
+
+ ctl = mixer_get_ctl_by_name(adev->mixer, mixer_ctl_name);
+ if (!ctl) {
+ ALOGE("%s: Could not get ctl for mixer cmd - %s",
+ __func__, mixer_ctl_name);
+ return -EINVAL;
+ }
+
+ ALOGV("%s: controller/stream: %d/%d", __func__, device_values[0],
+ device_values[1]);
+
+ return mixer_ctl_set_array(ctl, device_values, ARRAY_SIZE(device_values));
+}
+
+int platform_get_ext_disp_type(void *platform) {
+ return platform_get_ext_disp_type_v2(platform, 0, 0);
+}
+
+int platform_get_ext_disp_type_v2(void *platform, int controller, int stream)
+{
+ int disp_type = EXT_DISPLAY_TYPE_NONE;
+ int ctl_index = 0;
+ struct platform_data *my_data = (struct platform_data *)platform;
+ struct ext_disp_state *disp = NULL;
+
+ ctl_index = platform_get_display_port_ctl_index(controller, stream);
+ if (-EINVAL == ctl_index) {
+ ALOGE("%s: Unknown controller/stream %d/%d",
+ __func__, controller, stream);
+ return -EINVAL;
+ }
+
+ disp = &my_data->ext_disp[controller][stream];
+ if (disp->type != EXT_DISPLAY_TYPE_NONE) {
ALOGD("%s: Returning cached ext disp type:%s",
- __func__, (my_data->ext_disp_type == EXT_DISPLAY_TYPE_DP) ? "DisplayPort" : "HDMI");
- return my_data->ext_disp_type;
+ __func__, (disp->type == EXT_DISPLAY_TYPE_DP) ? "DisplayPort" : "HDMI");
+ return disp->type;
}
if (audio_extn_is_display_port_enabled()) {
struct audio_device *adev = my_data->adev;
- struct mixer_ctl *ctl;
- char *mixer_ctl_name = "External Display Type";
+ struct mixer_ctl *ctl = NULL;
+ const char *ctl_name_prefix = "External Display";
+ const char *ctl_name_suffix = "Type";
+ char mixer_ctl_name[MIXER_PATH_MAX_LENGTH] = {0};
+
+ if (0 == ctl_index)
+ snprintf(mixer_ctl_name, sizeof(mixer_ctl_name),
+ "%s %s", ctl_name_prefix, ctl_name_suffix);
+ else
+ snprintf(mixer_ctl_name, sizeof(mixer_ctl_name),
+ "%s%d %s", ctl_name_prefix, ctl_index, ctl_name_suffix);
+
+ ALOGV("%s: mixer ctl name: %s", __func__, mixer_ctl_name);
ctl = mixer_get_ctl_by_name(adev->mixer, mixer_ctl_name);
if (!ctl) {
@@ -5649,8 +5790,12 @@
} else {
disp_type = EXT_DISPLAY_TYPE_HDMI;
}
- my_data->ext_disp_type = disp_type;
- ALOGD("%s: ext disp type:%s", __func__, (disp_type == EXT_DISPLAY_TYPE_DP) ? "DisplayPort" : "HDMI");
+
+ disp->type = disp_type;
+
+ ALOGD("%s: ext disp type: %s", __func__,
+ (disp_type == EXT_DISPLAY_TYPE_DP) ? "DisplayPort" : "HDMI");
+
return disp_type;
}
@@ -5668,6 +5813,8 @@
audio_channel_mask_t channel_mask = (in == NULL) ?
AUDIO_CHANNEL_IN_MONO : in->channel_mask;
int channel_count = popcount(channel_mask);
+ int controller = -1;
+ int stream = -1;
ALOGV("%s: enter: output devices(%#x)", __func__, devices);
if (devices == AUDIO_DEVICE_NONE ||
@@ -5676,6 +5823,18 @@
goto exit;
}
+ if (devices & AUDIO_DEVICE_OUT_AUX_DIGITAL) {
+ controller = out->extconn.cs.controller;
+ stream = out->extconn.cs.stream;
+
+ if (controller < 0 || controller >= MAX_CONTROLLERS ||
+ stream < 0 || stream >= MAX_STREAMS_PER_CONTROLLER) {
+ ALOGE("%s: Invalid controller/stream - %d/%d",
+ __func__, controller, stream);
+ goto exit;
+ }
+ }
+
if (popcount(devices) == 2) {
bool is_active_voice_call = false;
@@ -5739,15 +5898,17 @@
snd_device = SND_DEVICE_OUT_SPEAKER_SAFE_AND_LINE;
} else if (devices == (AUDIO_DEVICE_OUT_AUX_DIGITAL |
AUDIO_DEVICE_OUT_SPEAKER)) {
- switch(my_data->ext_disp_type) {
+ switch(my_data->ext_disp[controller][stream].type) {
case EXT_DISPLAY_TYPE_HDMI:
snd_device = SND_DEVICE_OUT_SPEAKER_AND_HDMI;
break;
case EXT_DISPLAY_TYPE_DP:
- snd_device = SND_DEVICE_OUT_SPEAKER_AND_DISPLAY_PORT;
+ snd_device = SND_DEVICE_OUT_SPEAKER_AND_DISPLAY_PORT +
+ ((controller * MAX_STREAMS_PER_CONTROLLER) + stream);
break;
default:
- ALOGE("%s: Invalid disp_type %d", __func__, my_data->ext_disp_type);
+ ALOGE("%s: Invalid disp_type %d", __func__,
+ my_data->ext_disp[controller][stream].type);
goto exit;
}
} else if (devices == (AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET |
@@ -5931,13 +6092,14 @@
snd_device = SND_DEVICE_OUT_USB_HEADSET;
} else if ((devices & AUDIO_DEVICE_OUT_AUX_DIGITAL) &&
adev->dp_allowed_for_voice) {
- switch(my_data->ext_disp_type) {
+ switch(my_data->ext_disp[controller][stream].type) {
case EXT_DISPLAY_TYPE_DP:
- snd_device = SND_DEVICE_OUT_DISPLAY_PORT;
+ snd_device = SND_DEVICE_OUT_DISPLAY_PORT +
+ ((controller * MAX_STREAMS_PER_CONTROLLER) + stream);
break;
default:
ALOGE("%s: Invalid disp_type %d", __func__,
- my_data->ext_disp_type);
+ my_data->ext_disp[controller][stream].type);
goto exit;
}
} else if (devices & AUDIO_DEVICE_OUT_FM_TX) {
@@ -6027,15 +6189,17 @@
} else if (devices & AUDIO_DEVICE_OUT_ALL_A2DP) {
snd_device = SND_DEVICE_OUT_BT_A2DP;
} else if (devices & AUDIO_DEVICE_OUT_AUX_DIGITAL) {
- switch(my_data->ext_disp_type) {
+ switch(my_data->ext_disp[controller][stream].type) {
case EXT_DISPLAY_TYPE_HDMI:
snd_device = SND_DEVICE_OUT_HDMI;
break;
case EXT_DISPLAY_TYPE_DP:
- snd_device = SND_DEVICE_OUT_DISPLAY_PORT;
+ snd_device = SND_DEVICE_OUT_DISPLAY_PORT +
+ ((controller * MAX_STREAMS_PER_CONTROLLER) + stream);
break;
default:
- ALOGE("%s: Invalid disp_type %d", __func__, my_data->ext_disp_type);
+ ALOGE("%s: Invalid disp_type %d", __func__,
+ my_data->ext_disp[controller][stream].type);
goto exit;
}
} else if (devices & AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET ||
@@ -6881,13 +7045,22 @@
return snd_device;
}
-int platform_set_hdmi_channels(void *platform, int channel_count)
+int platform_set_hdmi_channels(void *platform, int channel_count) {
+ return platform_set_hdmi_channels_v2(platform, channel_count, 0, 0);
+}
+
+int platform_set_hdmi_channels_v2(void *platform, int channel_count,
+ int controller, int stream)
{
struct platform_data *my_data = (struct platform_data *)platform;
struct audio_device *adev = my_data->adev;
- struct mixer_ctl *ctl;
const char *channel_cnt_str = NULL;
- char *mixer_ctl_name;
+ int ctl_index = 0;
+ struct mixer_ctl *ctl = NULL;
+ const char *ctl_name_prefix = "Display Port";
+ const char *ctl_name_suffix = "RX Channels";
+ char mixer_ctl_name[MIXER_PATH_MAX_LENGTH] = {0};
+
switch (channel_count) {
case 8:
channel_cnt_str = "Eight"; break;
@@ -6905,38 +7078,64 @@
channel_cnt_str = "Two"; break;
}
- switch(my_data->ext_disp_type) {
+ ctl_index = platform_get_display_port_ctl_index(controller, stream);
+ if (-EINVAL == ctl_index) {
+ ALOGE("%s: Unknown controller/stream %d/%d",
+ __func__, controller, stream);
+ return -EINVAL;
+ }
+
+ switch(my_data->ext_disp[controller][stream].type) {
case EXT_DISPLAY_TYPE_HDMI:
- mixer_ctl_name = "HDMI_RX Channels";
+ snprintf(mixer_ctl_name, sizeof(mixer_ctl_name), "HDMI_RX Channels");
break;
case EXT_DISPLAY_TYPE_DP:
- mixer_ctl_name = "Display Port RX Channels";
- break;
+ if (!audio_extn_is_display_port_enabled()) {
+ ALOGE("%s: display port is not supported", __func__);
+ return -EINVAL;
+ }
+
+ if (0 == ctl_index)
+ snprintf(mixer_ctl_name, sizeof(mixer_ctl_name),
+ "%s %s", ctl_name_prefix, ctl_name_suffix);
+ else
+ snprintf(mixer_ctl_name, sizeof(mixer_ctl_name),
+ "%s%d %s", ctl_name_prefix, ctl_index, ctl_name_suffix);
default:
- ALOGE("%s: Invalid disp_type %d", __func__, my_data->ext_disp_type);
+ ALOGE("%s: Invalid disp_type %d", __func__,
+ my_data->ext_disp[controller][stream].type);
return -EINVAL;
}
+ ALOGV("%s: mixer ctl name: %s", __func__, mixer_ctl_name);
+
ctl = mixer_get_ctl_by_name(adev->mixer, mixer_ctl_name);
if (!ctl) {
ALOGE("%s: Could not get ctl for mixer cmd - %s",
__func__, mixer_ctl_name);
return -EINVAL;
}
- ALOGV("Ext disp channel count: %s", channel_cnt_str);
+
+ ALOGV("%s: ext disp channel count: %s", __func__, channel_cnt_str);
mixer_ctl_set_enum_by_string(ctl, channel_cnt_str);
return 0;
}
-int platform_edid_get_max_channels(void *platform)
+int platform_edid_get_max_channels(void *platform) {
+ return platform_edid_get_max_channels_v2(platform, 0, 0);
+}
+
+int platform_edid_get_max_channels_v2(void *platform, int controller, int stream)
{
int channel_count;
int max_channels = 2;
int i = 0, ret = 0;
struct platform_data *my_data = (struct platform_data *)platform;
edid_audio_info *info = NULL;
- ret = platform_get_edid_info(platform);
- info = (edid_audio_info *)my_data->edid_info;
+
+ ret = platform_get_edid_info_v2(platform, controller, stream);
+ if(ret == 0)
+ info = (edid_audio_info *)my_data->ext_disp[controller][stream].edid_info;
if(ret == 0 && info != NULL) {
for (i = 0; i < info->audio_blocks && i < MAX_EDID_BLOCKS; i++) {
@@ -7813,20 +8012,31 @@
value, sizeof(value));
if (ret >= 0) {
- if (my_data->ext_disp_type == EXT_DISPLAY_TYPE_DP &&
- adev->dp_allowed_for_voice)
- strlcpy(value, "true", sizeof(value));
- else
- strlcpy(value, "false", sizeof(value));
-
+ bool enabled = false;
+ int i = 0, j = 0;
+ if (adev->dp_allowed_for_voice) {
+ for (i = 0; i < MAX_CONTROLLERS; ++i) {
+ for (j = 0; j < MAX_STREAMS_PER_CONTROLLER; ++j) {
+ if (my_data->ext_disp[i][j].type == EXT_DISPLAY_TYPE_DP) {
+ enabled = true;
+ break;
+ }
+ }
+ }
+ }
+ strlcpy(value, enabled ? "true" : "false", sizeof(value));
str_parms_add_str(reply, AUDIO_PARAMETER_KEY_DP_FOR_VOICE_USECASE, value);
}
ret = str_parms_get_str(query, AUDIO_PARAMETER_KEY_DP_CHANNEL_MASK,
value, sizeof(value));
if (ret >= 0) {
- ret = platform_get_edid_info(platform);
- edid_audio_info *info = (edid_audio_info *)my_data->edid_info;
+ int controller = 0, stream = 0;
+ edid_audio_info *info = NULL;
+ platform_get_controller_stream_from_params(query, &controller, &stream);
+ ret = platform_get_edid_info_v2(platform, controller, stream);
+ if (ret == 0)
+ info = (edid_audio_info *)my_data->ext_disp[controller][stream].edid_info;
if (ret == 0 && info != NULL) {
str_parms_add_int(reply, AUDIO_PARAMETER_KEY_DP_CHANNEL_MASK, info->channel_mask);
}
@@ -8139,6 +8349,7 @@
* configures afe with bit width and Sample Rate
*/
static int platform_set_codec_backend_cfg(struct audio_device* adev,
+ struct audio_usecase *usecase,
snd_device_t snd_device, struct audio_backend_cfg backend_cfg)
{
int ret = -EINVAL;
@@ -8150,6 +8361,13 @@
audio_format_t format = backend_cfg.format;
bool passthrough_enabled = backend_cfg.passthrough_enabled;
struct audio_device_config_param *adev_device_cfg_ptr = adev->device_cfg_params;
+ int controller = -1;
+ int stream = -1;
+
+ if (usecase) {
+ controller = usecase->stream.out->extconn.cs.controller;
+ stream = usecase->stream.out->extconn.cs.stream;
+ }
/* Override the config params if client has already set them */
adev_device_cfg_ptr += backend_idx;
@@ -8330,8 +8548,11 @@
my_data->current_backend_cfg[backend_idx].channels = channels;
if ((backend_idx == HDMI_RX_BACKEND) ||
- (backend_idx == DISP_PORT_RX_BACKEND))
- platform_set_edid_channels_configuration(adev->platform, channels, backend_idx, snd_device);
+ (backend_idx == DISP_PORT_RX_BACKEND) ||
+ (backend_idx == DISP_PORT1_RX_BACKEND))
+ platform_set_edid_channels_configuration_v2(adev->platform, channels,
+ backend_idx, snd_device,
+ controller, stream);
ALOGD("%s:becf: afe: %s set to %s ", __func__,
my_data->current_backend_cfg[backend_idx].channels_mixer_ctl,
@@ -8341,6 +8562,7 @@
bool set_ext_disp_format = false, set_mi2s_tx_data_format = false;
char *ext_disp_format = NULL;
+ bool set_ext_disp_device_idx = false;
if (backend_idx == HDMI_RX_BACKEND) {
ext_disp_format = "HDMI RX Format";
@@ -8348,6 +8570,11 @@
} else if (backend_idx == DISP_PORT_RX_BACKEND) {
ext_disp_format = "Display Port RX Format";
set_ext_disp_format = true;
+ set_ext_disp_device_idx = true;
+ } else if (backend_idx == DISP_PORT1_RX_BACKEND) {
+ ext_disp_format = "Display Port1 RX Format";
+ set_ext_disp_format = true;
+ set_ext_disp_device_idx = true;
} else if (backend_idx == SPDIF_TX_BACKEND) {
ext_disp_format = "PRI SPDIF TX Format";
set_mi2s_tx_data_format = true;
@@ -8383,6 +8610,41 @@
}
my_data->current_backend_cfg[backend_idx].format = format;
}
+ if (set_ext_disp_device_idx && usecase) {
+ struct mixer_ctl *ctl;
+ int ctl_index = 0;
+ const char *ctl_name_prefix = "Display Port";
+ const char *ctl_name_suffix = "RX DEVICE IDX";
+ char mixer_ctl_name[MIXER_PATH_MAX_LENGTH] = {0};
+ int dev[] = {controller, stream};
+
+ ctl_index = platform_get_display_port_ctl_index(controller, stream);
+ if (-EINVAL == ctl_index) {
+ ALOGE("%s: Unknown controller/stream %d/%d",
+ __func__, controller, stream);
+ return -EINVAL;
+ }
+
+ if (0 == ctl_index)
+ snprintf(mixer_ctl_name, sizeof(mixer_ctl_name),
+ "%s %s", ctl_name_prefix, ctl_name_suffix);
+ else
+ snprintf(mixer_ctl_name, sizeof(mixer_ctl_name),
+ "%s%d %s", ctl_name_prefix, ctl_index, ctl_name_suffix);
+
+ ALOGV("%s: mixer ctl name: %s", __func__, mixer_ctl_name);
+
+ ctl = mixer_get_ctl_by_name(adev->mixer, mixer_ctl_name);
+ if (!ctl) {
+ ALOGE("%s:becf: afe: Could not get ctl for mixer command - %s",
+ __func__, ext_disp_format);
+ return -EINVAL;
+ }
+
+ mixer_ctl_set_array(ctl, dev, ARRAY_SIZE(dev));
+ my_data->current_backend_cfg[backend_idx].controller = controller;
+ my_data->current_backend_cfg[backend_idx].stream = stream;
+ }
if (set_ext_disp_format) {
struct mixer_ctl *ctl = mixer_get_ctl_by_name(adev->mixer, ext_disp_format);
if (!ctl) {
@@ -8442,9 +8704,26 @@
unsigned int sample_rate;
int channels, max_supported_channels = 0;
struct platform_data *my_data = (struct platform_data *)adev->platform;
- edid_audio_info *edid_info = (edid_audio_info *)my_data->edid_info;
+ edid_audio_info *edid_info = NULL;
bool passthrough_enabled = false;
+ int controller = -1;
+ int stream = -1;
+ if (!usecase) {
+ ALOGE("%s: becf: HDMI: usecase is NULL", __func__);
+ return;
+ }
+
+ controller = usecase->stream.out->extconn.cs.controller;
+ stream = usecase->stream.out->extconn.cs.stream;
+
+ if (controller < 0 || controller >= MAX_CONTROLLERS ||
+ stream < 0 || stream >= MAX_STREAMS_PER_CONTROLLER) {
+ controller = 0;
+ stream = 0;
+ }
+
+ edid_info = (edid_audio_info *)my_data->ext_disp[controller][stream].edid_info;
bit_width = hdmi_backend_cfg->bit_width;
sample_rate = hdmi_backend_cfg->sample_rate;
channels = hdmi_backend_cfg->channels;
@@ -8464,7 +8743,8 @@
// default backend
if (!passthrough_enabled) {
- max_supported_channels = platform_edid_get_max_channels(my_data);
+ max_supported_channels = platform_edid_get_max_channels_v2(my_data,
+ controller, stream);
//Check EDID info for supported samplerate
if (!audio_extn_edid_is_supported_sr(edid_info,sample_rate)) {
@@ -8537,7 +8817,11 @@
struct platform_data *my_data = (struct platform_data *)adev->platform;
int na_mode = platform_get_native_support();
bool channels_updated = false;
+ bool display_port_updated = false;
struct audio_device_config_param *adev_device_cfg_ptr = adev->device_cfg_params;
+ int controller = -1;
+ int stream = -1;
+
/*BT devices backend is not configured from HAL hence skip*/
if (snd_device == SND_DEVICE_OUT_BT_A2DP ||
@@ -8550,6 +8834,9 @@
return backend_change;
}
+ controller = usecase->stream.out->extconn.cs.controller;
+ stream = usecase->stream.out->extconn.cs.stream;
+
backend_idx = platform_get_backend_index(snd_device);
bit_width = backend_cfg->bit_width;
@@ -8764,7 +9051,8 @@
channels_updated = true;
}
- if (backend_idx == HDMI_RX_BACKEND || backend_idx == DISP_PORT_RX_BACKEND) {
+ if (backend_idx == HDMI_RX_BACKEND || backend_idx == DISP_PORT_RX_BACKEND ||
+ backend_idx == DISP_PORT1_RX_BACKEND) {
struct audio_backend_cfg hdmi_backend_cfg;
hdmi_backend_cfg.bit_width = bit_width;
hdmi_backend_cfg.sample_rate = sample_rate;
@@ -8790,7 +9078,15 @@
if (channels != my_data->current_backend_cfg[backend_idx].channels)
channels_updated = true;
- platform_set_edid_channels_configuration(adev->platform, channels, backend_idx, snd_device);
+ platform_set_edid_channels_configuration_v2(adev->platform, channels,
+ backend_idx, snd_device,
+ controller, stream);
+
+ if ((controller != my_data->current_backend_cfg[backend_idx].controller) ||
+ (stream != my_data->current_backend_cfg[backend_idx].stream)) {
+ ALOGD("%s:becf: afe: display port changed", __func__);
+ display_port_updated = true;
+ }
}
ALOGI("%s:becf: afe: Codec selected backend: %d updated bit width: %d and sample rate: %d",
@@ -8800,7 +9096,8 @@
// is not same as current backend comfiguration
if ((bit_width != my_data->current_backend_cfg[backend_idx].bit_width) ||
(sample_rate != my_data->current_backend_cfg[backend_idx].sample_rate) ||
- passthrough_enabled || channels_updated || service_interval_update ) {
+ passthrough_enabled || channels_updated || service_interval_update ||
+ display_port_updated) {
backend_cfg->bit_width = bit_width;
backend_cfg->sample_rate = sample_rate;
backend_cfg->channels = channels;
@@ -8859,6 +9156,8 @@
backend_cfg.sample_rate = usecase->stream.out->sample_rate;
backend_cfg.format = usecase->stream.out->format;
backend_cfg.channels = audio_channel_count_from_out_mask(usecase->stream.out->channel_mask);
+ backend_cfg.controller = 0;
+ backend_cfg.stream = 0;
}
if (audio_extn_is_dsp_bit_width_enforce_mode_supported(usecase->stream.out->flags) &&
(adev->dsp_bit_width_enforce_mode > backend_cfg.bit_width))
@@ -8896,7 +9195,7 @@
ALOGI("%s: new_snd_devices[%d] is %d", __func__, i, new_snd_devices[i]);
if ((platform_check_codec_backend_cfg(adev, usecase, new_snd_devices[i],
&backend_cfg))) {
- ret = platform_set_codec_backend_cfg(adev, new_snd_devices[i],
+ ret = platform_set_codec_backend_cfg(adev, usecase, new_snd_devices[i],
backend_cfg);
if (!ret) {
ret = true;
@@ -9056,7 +9355,7 @@
platform_get_snd_device_name(snd_device));
if (platform_check_capture_codec_backend_cfg(adev, backend_idx,
&backend_cfg, snd_device)) {
- ret = platform_set_codec_backend_cfg(adev, snd_device,
+ ret = platform_set_codec_backend_cfg(adev, usecase, snd_device,
backend_cfg);
if(!ret)
return true;
@@ -9499,42 +9798,68 @@
int platform_get_edid_info(void *platform)
{
+ return platform_get_edid_info_v2(platform, 0, 0);
+}
+
+int platform_get_edid_info_v2(void *platform, int controller, int stream)
+{
struct platform_data *my_data = (struct platform_data *)platform;
struct audio_device *adev = my_data->adev;
char block[MAX_SAD_BLOCKS * SAD_BLOCK_SIZE];
int ret, count;
- char *mix_ctl_name;
- struct mixer_ctl *ctl;
char edid_data[MAX_SAD_BLOCKS * SAD_BLOCK_SIZE + 1] = {0};
- edid_audio_info *info;
+ struct ext_disp_state *state = NULL;
+ int ctl_index = 0;
+ struct mixer_ctl *ctl = NULL;
+ const char *ctl_name_prefix = "Display Port";
+ const char *ctl_name_suffix = "EDID";
+ char mixer_ctl_name[MIXER_PATH_MAX_LENGTH] = {0};
- if (my_data->edid_valid) {
+ ctl_index = platform_get_display_port_ctl_index(controller, stream);
+ if (-EINVAL == ctl_index) {
+ ALOGE("%s: Unknown controller/stream %d/%d",
+ __func__, controller, stream);
+ return -EINVAL;
+ }
+
+ state = &my_data->ext_disp[controller][stream];
+ if (state->valid) {
/* use cached edid */
return 0;
}
- switch(my_data->ext_disp_type) {
+ switch(state->type) {
case EXT_DISPLAY_TYPE_HDMI:
- mix_ctl_name = "HDMI EDID";
+ snprintf(mixer_ctl_name, sizeof(mixer_ctl_name), "HDMI EDID");
break;
case EXT_DISPLAY_TYPE_DP:
- mix_ctl_name = "Display Port EDID";
+ if (!audio_extn_is_display_port_enabled()) {
+ ALOGE("%s: display port is not supported", __func__);
+ return -EINVAL;
+ }
+
+ if (0 == ctl_index)
+ snprintf(mixer_ctl_name, sizeof(mixer_ctl_name),
+ "%s %s", ctl_name_prefix, ctl_name_suffix);
+ else
+ snprintf(mixer_ctl_name, sizeof(mixer_ctl_name),
+ "%s%d %s", ctl_name_prefix, ctl_index, ctl_name_suffix);
break;
default:
- ALOGE("%s: Invalid disp_type %d", __func__, my_data->ext_disp_type);
+ ALOGE("%s: Invalid disp_type %d", __func__, state->type);
return -EINVAL;
}
- if (my_data->edid_info == NULL) {
- my_data->edid_info =
+ if (state->edid_info == NULL)
+ state->edid_info =
(struct edid_audio_info *)calloc(1, sizeof(struct edid_audio_info));
- }
- info = my_data->edid_info;
- ctl = mixer_get_ctl_by_name(adev->mixer, mix_ctl_name);
+ ALOGV("%s: mixer ctl name: %s", __func__, mixer_ctl_name);
+
+ ctl = mixer_get_ctl_by_name(adev->mixer, mixer_ctl_name);
if (!ctl) {
ALOGE("%s: Could not get ctl for mixer cmd - %s",
- __func__, mix_ctl_name);
+ __func__, mixer_ctl_name);
goto fail;
}
@@ -9554,50 +9879,80 @@
edid_data[0] = count;
memcpy(&edid_data[1], block, count);
- if (!audio_extn_edid_get_sink_caps(info, edid_data)) {
+ ALOGV("%s: received edid data: count %d", __func__, edid_data[0]);
+
+ if (!audio_extn_edid_get_sink_caps(state->edid_info, edid_data)) {
ALOGE("%s: Failed to get extn disp sink capabilities", __func__);
goto fail;
}
- my_data->edid_valid = true;
+ state->valid = true;
return 0;
fail:
- if (my_data->edid_info) {
- free(my_data->edid_info);
- my_data->edid_info = NULL;
- my_data->edid_valid = false;
+ if (state->edid_info) {
+ free(state->edid_info);
+ state->edid_info = NULL;
+ state->valid = false;
}
ALOGE("%s: return -EINVAL", __func__);
return -EINVAL;
}
-
int platform_set_channel_allocation(void *platform, int channel_alloc)
{
- struct mixer_ctl *ctl;
- char *mixer_ctl_name;
+ return platform_set_channel_allocation_v2(platform, channel_alloc, 0, 0);
+}
+
+int platform_set_channel_allocation_v2(void *platform, int channel_alloc,
+ int controller, int stream)
+{
int ret;
struct platform_data *my_data = (struct platform_data *)platform;
struct audio_device *adev = my_data->adev;
+ int ctl_index = 0;
+ struct mixer_ctl *ctl = NULL;
+ const char *ctl_name_prefix = "Display Port";
+ const char *ctl_name_suffix = "RX CA";
+ char mixer_ctl_name[MIXER_PATH_MAX_LENGTH] = {0};
- switch(my_data->ext_disp_type) {
+ ctl_index = platform_get_display_port_ctl_index(controller, stream);
+ if (-EINVAL == ctl_index) {
+ ALOGE("%s: Unknown controller/stream %d/%d",
+ __func__, controller, stream);
+ return -EINVAL;
+ }
+
+ switch(my_data->ext_disp[controller][stream].type) {
case EXT_DISPLAY_TYPE_HDMI:
- mixer_ctl_name = "HDMI RX CA";
- break;
+ snprintf(mixer_ctl_name, sizeof(mixer_ctl_name), "HDMI RX CA");
+ break;
case EXT_DISPLAY_TYPE_DP:
- mixer_ctl_name = "Display Port RX CA";
+ if (!audio_extn_is_display_port_enabled()) {
+ ALOGE("%s: display port is not supported", __func__);
+ return -EINVAL;
+ }
+
+ if (0 == ctl_index)
+ snprintf(mixer_ctl_name, sizeof(mixer_ctl_name),
+ "%s %s", ctl_name_prefix, ctl_name_suffix);
+ else
+ snprintf(mixer_ctl_name, sizeof(mixer_ctl_name),
+ "%s%d %s", ctl_name_prefix, ctl_index, ctl_name_suffix);
break;
default:
- ALOGE("%s: Invalid disp_type %d", __func__, my_data->ext_disp_type);
+ ALOGE("%s: Invalid disp_type %d", __func__,
+ my_data->ext_disp[controller][stream].type);
return -EINVAL;
}
+ ALOGV("%s: mixer ctl name: %s", __func__, mixer_ctl_name);
ctl = mixer_get_ctl_by_name(adev->mixer, mixer_ctl_name);
if (!ctl) {
ALOGE("%s: Could not get ctl for mixer cmd - %s",
__func__, mixer_ctl_name);
return -EINVAL;
}
- ALOGD(":%s channel allocation = 0x%x", __func__, channel_alloc);
+
+ ALOGV("%s: channel allocation: 0x%x", __func__, channel_alloc);
ret = mixer_ctl_set_value(ctl, 0, channel_alloc);
if (ret < 0) {
@@ -9783,6 +10138,7 @@
*sample_rate = stream_sr;
if ((snd_device == SND_DEVICE_OUT_HDMI) || (snd_device == SND_DEVICE_OUT_DISPLAY_PORT) ||
+ (snd_device == SND_DEVICE_OUT_DISPLAY_PORT1) ||
(snd_device == SND_DEVICE_OUT_USB_HEADSET))
*sample_rate = platform_get_supported_copp_sampling_rate(stream_sr);
@@ -9825,18 +10181,12 @@
list_add_tail(&app_type_entry_list, &ap->node);
}
-void platform_reset_edid_info(void *platform) {
-
- ALOGV("%s:", __func__);
- struct platform_data *my_data = (struct platform_data *)platform;
- if (my_data->edid_info) {
- ALOGV("%s :free edid", __func__);
- free(my_data->edid_info);
- my_data->edid_info = NULL;
- }
+bool platform_is_edid_supported_format(void *platform, int format) {
+ return platform_is_edid_supported_format_v2(platform, format, 0, 0);
}
-bool platform_is_edid_supported_format(void *platform, int format)
+bool platform_is_edid_supported_format_v2(void *platform,
+ int format, int controller, int stream)
{
struct platform_data *my_data = (struct platform_data *)platform;
edid_audio_info *info = NULL;
@@ -9851,8 +10201,9 @@
return false;
}
- ret = platform_get_edid_info(platform);
- info = (edid_audio_info *)my_data->edid_info;
+ ret = platform_get_edid_info_v2(platform, controller, stream);
+ if (ret == 0)
+ info = (edid_audio_info *)my_data->ext_disp[controller][stream].edid_info;
if (ret == 0 && info != NULL) {
for (i = 0; i < info->audio_blocks && i < MAX_EDID_BLOCKS; i++) {
/*
@@ -9874,12 +10225,20 @@
bool platform_is_edid_supported_sample_rate(void *platform, int sample_rate)
{
+ return platform_is_edid_supported_sample_rate_v2(platform, sample_rate, 0, 0);
+}
+
+bool platform_is_edid_supported_sample_rate_v2(void *platform,
+ int sample_rate,
+ int controller, int stream)
+{
struct platform_data *my_data = (struct platform_data *)platform;
edid_audio_info *info = NULL;
int ret = 0;
- ret = platform_get_edid_info(platform);
- info = (edid_audio_info *)my_data->edid_info;
+ ret = platform_get_edid_info_v2(platform, controller, stream);
+ if (ret == 0)
+ info = (edid_audio_info *)my_data->ext_disp[controller][stream].edid_info;
if (ret == 0 && info != NULL) {
return audio_extn_edid_is_supported_sr(info, sample_rate);
}
@@ -9887,14 +10246,15 @@
return false;
}
-int platform_edid_get_highest_supported_sr(void *platform)
+int platform_edid_get_highest_supported_sr_v2(void *platform, int controller, int stream)
{
struct platform_data *my_data = (struct platform_data *)platform;
edid_audio_info *info = NULL;
int ret = 0;
- ret = platform_get_edid_info(platform);
- info = (edid_audio_info *)my_data->edid_info;
+ ret = platform_get_edid_info_v2(platform, controller, stream);
+ if (ret == 0)
+ info = (edid_audio_info *)my_data->ext_disp[controller][stream].edid_info;
if (ret == 0 && info != NULL) {
return audio_extn_edid_get_highest_supported_sr(info);
}
@@ -9902,12 +10262,25 @@
return 0;
}
+int platform_edid_get_highest_supported_sr(void *platform)
+{
+ return platform_edid_get_highest_supported_sr_v2(platform, 0, 0);
+}
+
bool platform_spkr_use_default_sample_rate(void *platform) {
struct platform_data *my_data = (struct platform_data *)platform;
return my_data->use_sprk_default_sample_rate;
}
-int platform_set_edid_channels_configuration(void *platform, int channels, int backend_idx, snd_device_t snd_device) {
+int platform_set_edid_channels_configuration(void *platform, int channels,
+ int backend_idx, snd_device_t snd_device) {
+ return platform_set_edid_channels_configuration_v2(platform, channels,
+ backend_idx, snd_device, 0, 0);
+}
+
+int platform_set_edid_channels_configuration_v2(void *platform, int channels,
+ int backend_idx, snd_device_t snd_device,
+ int controller, int stream) {
struct platform_data *my_data = (struct platform_data *)platform;
struct audio_device *adev = my_data->adev;
@@ -9919,17 +10292,28 @@
int be_idx = -1;
if ((backend_idx != HDMI_RX_BACKEND) &&
- (backend_idx != DISP_PORT_RX_BACKEND)) {
+ (backend_idx != DISP_PORT_RX_BACKEND) &&
+ (backend_idx != DISP_PORT1_RX_BACKEND)) {
ALOGE("%s: Invalid backend idx %d", __func__, backend_idx);
return -EINVAL;
}
+ if (controller < 0 || controller >= MAX_CONTROLLERS ||
+ stream < 0 || stream >= MAX_STREAMS_PER_CONTROLLER) {
+ ALOGE("%s: Invalid controller/stream - %d/%d",
+ __func__, controller, stream);
+ return -EINVAL;
+ }
+
+ // backend port id
be_idx = platform_get_snd_device_backend_index(snd_device);
- ret = platform_get_edid_info(platform);
- info = (edid_audio_info *)my_data->edid_info;
+
+ ret = platform_get_edid_info_v2(platform, controller, stream);
+ info = (edid_audio_info *)my_data->ext_disp[controller][stream].edid_info;
adev_device_cfg_ptr += backend_idx;
if(ret == 0 && info != NULL) {
if (channels > 2) {
+
ALOGV("%s:able to get HDMI/DP sink capabilities multi channel playback",
__func__);
for (i = 0; i < info->audio_blocks && i < MAX_EDID_BLOCKS; i++) {
@@ -9947,7 +10331,7 @@
*/
if (adev_device_cfg_ptr->use_client_dev_cfg) {
platform_set_channel_map(platform, adev_device_cfg_ptr->dev_cfg_params.channels,
- (char *)adev_device_cfg_ptr->dev_cfg_params.channel_map, -1, be_idx);
+ (char *)adev_device_cfg_ptr->dev_cfg_params.channel_map, -1, be_idx);
} else {
platform_set_channel_map(platform, channel_count, info->channel_map, -1, be_idx);
}
@@ -9955,10 +10339,12 @@
if (adev_device_cfg_ptr->use_client_dev_cfg) {
ALOGV("%s:: Setting client selected CA %d", __func__,
adev_device_cfg_ptr->dev_cfg_params.channel_allocation);
- platform_set_channel_allocation(platform,
- adev_device_cfg_ptr->dev_cfg_params.channel_allocation);
+ platform_set_channel_allocation_v2(platform,
+ adev_device_cfg_ptr->dev_cfg_params.channel_allocation,
+ controller, stream);
} else {
- platform_set_channel_allocation(platform, info->channel_allocation);
+ platform_set_channel_allocation_v2(platform, info->channel_allocation,
+ controller, stream);
}
} else {
if (adev_device_cfg_ptr->use_client_dev_cfg) {
@@ -9969,16 +10355,21 @@
default_channelMap[1] = PCM_CHANNEL_FR;
}
platform_set_channel_map(platform, 2, default_channelMap, -1, be_idx);
- platform_set_channel_allocation(platform,0);
+ platform_set_channel_allocation_v2(platform, 0, controller, stream);
}
}
return 0;
}
+void platform_cache_edid_v2(void * platform, int controller, int stream)
+{
+ platform_get_edid_info_v2(platform, controller, stream);
+}
+
void platform_cache_edid(void * platform)
{
- platform_get_edid_info(platform);
+ platform_get_edid_info_v2(platform, 0, 0);
}
void platform_invalidate_backend_config(void * platform,snd_device_t snd_device)
@@ -9995,14 +10386,16 @@
backend_cfg.passthrough_enabled = false;
backend_idx = platform_get_backend_index(snd_device);
- platform_set_codec_backend_cfg(adev, snd_device, backend_cfg);
+ platform_set_codec_backend_cfg(adev, NULL, snd_device, backend_cfg);
my_data->current_backend_cfg[backend_idx].sample_rate = CODEC_BACKEND_DEFAULT_SAMPLE_RATE;
my_data->current_backend_cfg[backend_idx].channels = CODEC_BACKEND_DEFAULT_CHANNELS;
my_data->current_backend_cfg[backend_idx].bit_width = CODEC_BACKEND_DEFAULT_BIT_WIDTH;
my_data->current_backend_cfg[backend_idx].format = AUDIO_FORMAT_PCM_16_BIT;
+ my_data->current_backend_cfg[backend_idx].controller = 0;
+ my_data->current_backend_cfg[backend_idx].stream = 0;
}
-void platform_invalidate_hdmi_config(void * platform)
+void platform_invalidate_hdmi_config_v2(void * platform, int controller, int stream)
{
//reset ext display EDID info
struct platform_data *my_data = (struct platform_data *)platform;
@@ -10011,31 +10404,45 @@
int backend_idx;
snd_device_t snd_device;
+ if (controller < 0 || controller >= MAX_CONTROLLERS ||
+ stream < 0 || stream >= MAX_STREAMS_PER_CONTROLLER) {
+ ALOGE("%s: Invalid controller/stream - %d/%d",
+ __func__, controller, stream);
+ return;
+ }
+
backend_cfg.sample_rate = CODEC_BACKEND_DEFAULT_SAMPLE_RATE;
backend_cfg.channels = DEFAULT_HDMI_OUT_CHANNELS;
backend_cfg.bit_width = CODEC_BACKEND_DEFAULT_BIT_WIDTH;
backend_cfg.format = 0;
backend_cfg.passthrough_enabled = false;
- my_data->edid_valid = false;
- if (my_data->edid_info) {
- memset(my_data->edid_info, 0, sizeof(struct edid_audio_info));
+ struct ext_disp_state *state = &my_data->ext_disp[controller][stream];
+ state->valid = false;
+ if (state->edid_info) {
+ memset(state->edid_info, 0, sizeof(struct edid_audio_info));
}
- if (my_data->ext_disp_type == EXT_DISPLAY_TYPE_HDMI) {
+ if (my_data->ext_disp[controller][stream].type == EXT_DISPLAY_TYPE_HDMI) {
//reset HDMI_RX_BACKEND to default values
backend_idx = HDMI_RX_BACKEND;
snd_device = SND_DEVICE_OUT_HDMI;
} else {
//reset Display port BACKEND to default values
- backend_idx = DISP_PORT_RX_BACKEND;
- snd_device = SND_DEVICE_OUT_DISPLAY_PORT;
+ backend_idx = DISP_PORT_RX_BACKEND +
+ ((controller * MAX_STREAMS_PER_CONTROLLER) + stream);
+ snd_device = SND_DEVICE_OUT_DISPLAY_PORT +
+ ((controller * MAX_STREAMS_PER_CONTROLLER) + stream);
}
- platform_set_codec_backend_cfg(adev, snd_device, backend_cfg);
+ platform_set_codec_backend_cfg(adev, NULL, snd_device, backend_cfg);
my_data->current_backend_cfg[backend_idx].sample_rate = CODEC_BACKEND_DEFAULT_SAMPLE_RATE;
my_data->current_backend_cfg[backend_idx].channels = DEFAULT_HDMI_OUT_CHANNELS;
my_data->current_backend_cfg[backend_idx].bit_width = CODEC_BACKEND_DEFAULT_BIT_WIDTH;
- my_data->ext_disp_type = EXT_DISPLAY_TYPE_NONE;
+ my_data->ext_disp[controller][stream].type = EXT_DISPLAY_TYPE_NONE;
+}
+
+void platform_invalidate_hdmi_config(void * platform) {
+ platform_invalidate_hdmi_config_v2(platform, 0, 0);
}
int platform_set_mixer_control(struct stream_out *out, const char * mixer_ctl_name,
@@ -10890,3 +11297,16 @@
{
return -ENOSYS;
}
+
+int platform_get_controller_stream_from_params(struct str_parms *parms,
+ int *controller, int *stream) {
+ str_parms_get_int(parms, "controller", controller);
+ str_parms_get_int(parms, "stream", stream);
+ if (*controller < 0 || *controller >= MAX_CONTROLLERS ||
+ *stream < 0 || *stream >= MAX_STREAMS_PER_CONTROLLER) {
+ controller = 0;
+ stream = 0;
+ return -1;
+ }
+ return 0;
+}
diff --git a/hal/msm8974/platform.h b/hal/msm8974/platform.h
index a340427..2a570ce 100644
--- a/hal/msm8974/platform.h
+++ b/hal/msm8974/platform.h
@@ -111,7 +111,9 @@
SND_DEVICE_OUT_HDMI,
SND_DEVICE_OUT_SPEAKER_AND_HDMI,
SND_DEVICE_OUT_DISPLAY_PORT,
+ SND_DEVICE_OUT_DISPLAY_PORT1,
SND_DEVICE_OUT_SPEAKER_AND_DISPLAY_PORT,
+ SND_DEVICE_OUT_SPEAKER_AND_DISPLAY_PORT1,
SND_DEVICE_OUT_BT_SCO,
SND_DEVICE_OUT_BT_SCO_WB,
SND_DEVICE_OUT_BT_SCO_SWB,
@@ -347,6 +349,7 @@
SLIMBUS_6_RX = HEADPHONE_BACKEND,
HDMI_RX_BACKEND,
DISP_PORT_RX_BACKEND,
+ DISP_PORT1_RX_BACKEND,
USB_AUDIO_RX_BACKEND,
MAX_RX_CODEC_BACKENDS = USB_AUDIO_RX_BACKEND,
/* TX BE follows RX BE */
diff --git a/hal/platform_api.h b/hal/platform_api.h
index 30a10c5..bb8c558 100644
--- a/hal/platform_api.h
+++ b/hal/platform_api.h
@@ -48,6 +48,8 @@
unsigned int bit_width;
bool passthrough_enabled;
audio_format_t format;
+ int controller;
+ int stream;
};
struct amp_db_and_gain_table {
@@ -389,4 +391,25 @@
struct audio_custom_mtmx_in_params_info *info);
int platform_add_custom_mtmx_in_params(void *platform,
struct audio_custom_mtmx_in_params_info *info);
+
+int platform_get_edid_info_v2(void *platform, int controller, int stream);
+int platform_edid_get_max_channels_v2(void *platform, int controller, int stream);
+bool platform_is_edid_supported_format_v2(void *platform, int format,
+ int contoller, int stream);
+bool platform_is_edid_supported_sample_rate_v2(void *platform, int sample_rate,
+ int contoller, int stream);
+void platform_cache_edid_v2(void * platform, int controller, int stream);
+void platform_invalidate_hdmi_config_v2(void * platform, int controller, int stream);
+int platform_get_controller_stream_from_params(struct str_parms *parms,
+ int *controller, int *stream);
+int platform_set_ext_display_device_v2(void *platform, int controller, int stream);
+int platform_get_ext_disp_type_v2(void *platform, int controller, int stream);
+int platform_set_edid_channels_configuration_v2(void *platform, int channels,
+ int backend_idx, snd_device_t snd_device,
+ int controller, int stream);
+int platform_set_channel_allocation_v2(void *platform, int channel_alloc,
+ int controller, int stream);
+int platform_set_hdmi_channels_v2(void *platform, int channel_count,
+ int controller, int stream);
+int platform_get_display_port_ctl_index(int controller, int stream);
#endif // AUDIO_PLATFORM_API_H