Merge "audio: enable compress passthrough"
diff --git a/configs/msm8937/audio_platform_info_extcodec.xml b/configs/msm8937/audio_platform_info_extcodec.xml
index fabe84a..6f6ce53 100644
--- a/configs/msm8937/audio_platform_info_extcodec.xml
+++ b/configs/msm8937/audio_platform_info_extcodec.xml
@@ -54,5 +54,16 @@
<param key="spkr_2_tz_name" value="wsatz.12"/>
<param key="native_audio_mode" value="src"/>
</config_params>
+
+ <backend_names>
+ <device name="SND_DEVICE_OUT_HEADPHONES" backend="headphones" interface="SLIMBUS_6_RX"/>
+ <device name="SND_DEVICE_OUT_LINE" backend="headphones" interface="SLIMBUS_6_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES" backend="speaker-and-headphones" interface="SLIMBUS_0_RX-and-SLIMBUS_6_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_AND_LINE" backend="speaker-and-headphones" interface="SLIMBUS_0_RX-and-SLIMBUS_6_RX"/>
+ <device name="SND_DEVICE_OUT_VOICE_HEADPHONES" backend="headphones" interface="SLIMBUS_6_RX"/>
+ <device name="SND_DEVICE_OUT_VOICE_LINE" backend="headphones" interface="SLIMBUS_6_RX"/>
+ <device name="SND_DEVICE_OUT_VOICE_TTY_FULL_HEADPHONES" backend="headphones" interface="SLIMBUS_6_RX"/>
+ <device name="SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES" backend="headphones" interface="SLIMBUS_6_RX"/>
+ </backend_names>
</audio_platform_info>
diff --git a/configs/msm8937/mixer_paths_wcd9326.xml b/configs/msm8937/mixer_paths_wcd9326.xml
index be3683a..963dfea 100644
--- a/configs/msm8937/mixer_paths_wcd9326.xml
+++ b/configs/msm8937/mixer_paths_wcd9326.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!-- Copyright (c) 2015, The Linux Foundation. All rights reserved. -->
+<!-- Copyright (c) 2015-16, 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 -->
@@ -84,6 +84,7 @@
<ctl name="SLIMBUS_3_RX Port Mixer MI2S_TX" value="0" />
<ctl name="HDMI_RX Port Mixer MI2S_TX" value="0" />
<ctl name="SLIMBUS_0_RX Port Mixer SLIM_0_TX" value="0" />
+ <ctl name="SLIMBUS_6_RX Port Mixer SLIM_0_TX" value="0" />
<ctl name="INTERNAL_BT_SCO_RX Audio Mixer MultiMedia1" value="0" />
<ctl name="INTERNAL_BT_SCO_RX Audio Mixer MultiMedia3" value="0" />
<ctl name="INTERNAL_BT_SCO_RX Audio Mixer MultiMedia4" value="0" />
@@ -127,18 +128,40 @@
<ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia15" value="0" />
<ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia16" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia1" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia1" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia2" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia2" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia3" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia3" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia4" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia4" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia4" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia5" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia5" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia7" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia7" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia7" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia10" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia10" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia10" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia11" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia11" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia11" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia12" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia12" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia12" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia13" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia13" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia13" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia14" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia14" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia14" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia15" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia15" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia15" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia16" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia16" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia16" value="0" />
<ctl name="MultiMedia6 Mixer SLIM_0_TX" value="0" />
<ctl name="IIR0 INP0 MUX" value="ZERO" />
<ctl name="IIR0 INP1 MUX" value="ZERO" />
@@ -267,11 +290,15 @@
<ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="RX INT2 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="SLIM_0_RX Channels" value="One" />
+ <ctl name="SLIM_5_RX Channels" value="One" />
+ <ctl name="SLIM_6_RX Channels" value="One" />
<ctl name="SLIM_0_TX Channels" value="One" />
<ctl name="SLIM_1_TX Channels" value="One" />
<ctl name="SLIM RX0 MUX" value="AIF_MIX1_PB" />
+ <ctl name="SLIM RX2 MUX" value="ZERO" />
<ctl name="SLIM RX3 MUX" value="ZERO" />
<ctl name="SLIM RX4 MUX" value="ZERO" />
+ <ctl name="SLIM RX5 MUX" value="ZERO" />
<ctl name="EAR PA Gain" value="G_6_DB" />
<ctl name="SpkrLeft COMP Switch" value="0" />
<ctl name="SpkrRight COMP Switch" value="0" />
@@ -293,6 +320,8 @@
<ctl name="AIF1_CAP Mixer SLIM TX0" value="0"/>
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia4" value="0" />
<ctl name="HDMI Mixer MultiMedia4" value="0" />
+ <ctl name="SLIMBUS_0_RX Port Mixer INTERNAL_BT_SCO_TX" value="0" />
+ <ctl name="SLIMBUS_6_RX Port Mixer INTERNAL_BT_SCO_TX" value="0" />
<!-- echo reference -->
<ctl name="AUDIO_REF_EC_UL1 MUX" value="None" />
<!-- usb headset -->
@@ -318,7 +347,8 @@
<ctl name="MultiMedia2 Mixer INTERNAL_FM_TX" value="0" />
<ctl name="INTERNAL_FM_RX Audio Mixer MultiMedia1" value="0" />
<ctl name="INTERNAL_FM_RX Audio Mixer MultiMedia5" value="0" />
- <ctl name="INTERNAL_FM_RX Audio Mixer MultiMedia4" value="0" />
+ <ctl name="SLIMBUS_6_RX Port Mixer INTERNAL_FM_TX" value="0" />
+ <ctl name="SLIMBUS6_DL_HL Switch" value="0" />
<!-- fm end -->
<!-- RT Proxy Cal -->
@@ -328,6 +358,7 @@
<!-- Voice -->
<ctl name="SLIM_0_RX_Voice Mixer CSVoice" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer CSVoice" value="0" />
<ctl name="Voice_Tx Mixer SLIM_0_TX_Voice" value="0" />
<!-- Voice HDMI -->
<ctl name="HDMI_RX_Voice Mixer CSVoice" value="0" />
@@ -342,6 +373,7 @@
<!-- Voice2 -->
<ctl name="SLIM_0_RX_Voice Mixer Voice2" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer Voice2" value="0" />
<ctl name="Voice2_Tx Mixer SLIM_0_TX_Voice2" value="0" />
<!-- Voice2 HDMI -->
<ctl name="HDMI_RX_Voice Mixer Voice2" value="0" />
@@ -355,6 +387,7 @@
<!-- VoLTE -->
<ctl name="SLIM_0_RX_Voice Mixer VoLTE" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer VoLTE" value="0" />
<ctl name="VoLTE_Tx Mixer SLIM_0_TX_VoLTE" value="0" />
<!-- VoLTE HDMI -->
<ctl name="HDMI_RX_Voice Mixer VoLTE" value="0" />
@@ -368,6 +401,7 @@
<!-- Multimode Voice1 -->
<ctl name="SLIM_0_RX_Voice Mixer VoiceMMode1" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer VoiceMMode1" value="0" />
<ctl name="VoiceMMode1_Tx Mixer SLIM_0_TX_MMode1" value="0" />
<!-- Multimode Voice1 HDMI -->
<ctl name="HDMI_RX_Voice Mixer VoiceMMode1" value="0" />
@@ -381,6 +415,7 @@
<!-- Multimode Voice2 -->
<ctl name="SLIM_0_RX_Voice Mixer VoiceMMode2" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer VoiceMMode2" value="0" />
<ctl name="VoiceMMode2_Tx Mixer SLIM_0_TX_MMode2" value="0" />
<!-- Multimode Voice2 HDMI -->
<ctl name="HDMI_RX_Voice Mixer VoiceMMode2" value="0" />
@@ -406,6 +441,7 @@
<!-- compress-voip-call start -->
<ctl name="SLIM_0_RX_Voice Mixer Voip" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer Voip" value="0" />
<ctl name="Voip_Tx Mixer SLIM_0_TX_Voip" value="0" />
<ctl name="INTERNAL_BT_SCO_RX_Voice Mixer Voip" value="0" />
<ctl name="Voip_Tx Mixer INTERNAL_BT_SCO_TX_Voip" value="0" />
@@ -415,6 +451,7 @@
<!-- QCHAT start -->
<ctl name="SLIM_0_RX_Voice Mixer QCHAT" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer QCHAT" value="0" />
<ctl name="QCHAT_Tx Mixer SLIM_0_TX_QCHAT" value="0" />
<ctl name="INTERNAL_BT_SCO_RX_Voice Mixer QCHAT" value="0" />
<ctl name="QCHAT_Tx Mixer INTERNAL_BT_SCO_TX_QCHAT" value="0" />
@@ -422,6 +459,7 @@
<!-- VoWLAN start -->
<ctl name="SLIM_0_RX_Voice Mixer VoWLAN" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer VoWLAN" value="0" />
<ctl name="VoWLAN_Tx Mixer SLIM_0_TX_VoWLAN" value="0" />
<ctl name="HDMI_RX_Voice Mixer VoWLAN" value="0" />
<ctl name="INTERNAL_BT_SCO_RX_Voice Mixer VoWLAN" value="0" />
@@ -499,6 +537,7 @@
<!-- ADSP testfwk -->
<ctl name="SLIMBUS_DL_HL Switch" value="0" />
+ <ctl name="SLIMBUS6_DL_HL Switch" value="0" />
<!-- ADSP testfwk end-->
<!-- These are audio route (FE to BE) specific mixer settings -->
@@ -538,7 +577,7 @@
</path>
<path name="echo-reference headphones">
- <ctl name="AUDIO_REF_EC_UL1 MUX" value="SLIM_RX" />
+ <ctl name="AUDIO_REF_EC_UL1 MUX" value="SLIM_6_RX" />
</path>
<path name="echo-reference headphones-44.1">
@@ -577,11 +616,16 @@
<path name="deep-buffer-playback" />
</path>
+ <path name="deep-buffer-playback headphones">
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia1" value="1" />
+ </path>
+
<path name="deep-buffer-playback transmission-fm">
<ctl name="INTERNAL_FM_RX Audio Mixer MultiMedia1" value="1" />
</path>
- <path name="deep-buffer-playback headphones">
+ <path name="deep-buffer-playback speaker-and-headphones">
+ <path name="deep-buffer-playback headphones" />
<path name="deep-buffer-playback" />
</path>
@@ -634,6 +678,11 @@
</path>
<path name="low-latency-playback headphones">
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia5" value="1" />
+ </path>
+
+ <path name="low-latency-playback speaker-and-headphones">
+ <path name="low-latency-playback headphones" />
<path name="low-latency-playback" />
</path>
@@ -650,7 +699,12 @@
</path>
<path name="audio-ull-playback headphones">
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia3" value="1" />
+ </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 speaker-protected">
@@ -729,13 +783,18 @@
</path>
<path name="compress-offload-playback headphones">
- <path name="compress-offload-playback" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia4" value="1" />
</path>
<path name="compress-offload-playback headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback2">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia7" value="1" />
</path>
@@ -777,13 +836,18 @@
</path>
<path name="compress-offload-playback2 headphones">
- <path name="compress-offload-playback2" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia7" value="1" />
</path>
<path name="compress-offload-playback2 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback3">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia10" value="1" />
</path>
@@ -821,13 +885,18 @@
</path>
<path name="compress-offload-playback3 headphones">
- <path name="compress-offload-playback3" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia10" value="1" />
</path>
<path name="compress-offload-playback3 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback4">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia11" value="1" />
</path>
@@ -865,13 +934,18 @@
</path>
<path name="compress-offload-playback4 headphones">
- <path name="compress-offload-playback4" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia11" value="1" />
</path>
<path name="compress-offload-playback4 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback5">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia12" value="1" />
</path>
@@ -909,13 +983,18 @@
</path>
<path name="compress-offload-playback5 headphones">
- <path name="compress-offload-playback5" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia12" value="1" />
</path>
<path name="compress-offload-playback5 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback6">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia13" value="1" />
</path>
@@ -953,13 +1032,18 @@
</path>
<path name="compress-offload-playback6 headphones">
- <path name="compress-offload-playback6" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia13" value="1" />
</path>
<path name="compress-offload-playback6 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback7">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia14" value="1" />
</path>
@@ -997,13 +1081,18 @@
</path>
<path name="compress-offload-playback7 headphones">
- <path name="compress-offload-playback7" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia14" value="1" />
</path>
<path name="compress-offload-playback7 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback8">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia15" value="1" />
</path>
@@ -1041,13 +1130,18 @@
</path>
<path name="compress-offload-playback8 headphones">
- <path name="compress-offload-playback8" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia15" value="1" />
</path>
<path name="compress-offload-playback8 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback9">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia16" value="1" />
</path>
@@ -1085,13 +1179,18 @@
</path>
<path name="compress-offload-playback9 headphones">
- <path name="compress-offload-playback9" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia16" value="1" />
</path>
<path name="compress-offload-playback9 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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="audio-record">
<ctl name="MultiMedia1 Mixer SLIM_0_TX" value="1" />
</path>
@@ -1179,6 +1278,11 @@
<ctl name="Voice_Tx Mixer AFE_PCM_TX_Voice" value="1" />
</path>
+ <path name="voice-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer CSVoice" value="1" />
+ <ctl name="Voice_Tx Mixer SLIM_0_TX_Voice" value="1" />
+ </path>
+
<path name="voice2-call">
<ctl name="SLIM_0_RX_Voice Mixer Voice2" value="1" />
<ctl name="Voice2_Tx Mixer SLIM_0_TX_Voice2" value="1" />
@@ -1219,12 +1323,23 @@
<path name="voice2-call"/>
</path>
+ <path name="voice2-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer Voice2" value="1" />
+ <ctl name="Voice2_Tx Mixer SLIM_0_TX_Voice2" value="1" />
+ </path>
+
<path name="play-fm">
<ctl name="Internal FM RX Volume" value="1" />
<ctl name="SLIMBUS_0_RX Port Mixer INTERNAL_FM_TX" value="1" />
<ctl name="SLIMBUS_DL_HL Switch" value="1" />
</path>
+ <path name="play-fm headphones">
+ <ctl name="Internal FM RX Volume" value="1" />
+ <ctl name="SLIMBUS_6_RX Port Mixer INTERNAL_FM_TX" value="1" />
+ <ctl name="SLIMBUS6_DL_HL Switch" value="1" />
+ </path>
+
<path name="incall-rec-uplink">
<ctl name="MultiMedia1 Mixer VOC_REC_UL" value="1" />
</path>
@@ -1355,16 +1470,36 @@
<ctl name="SLIMBUS_DL_HL Switch" value="1" />
</path>
+ <path name="hfp-sco headphones">
+ <ctl name="HFP_INT_UL_HL Switch" value="1" />
+ <ctl name="SLIMBUS_6_RX Port Mixer INTERNAL_BT_SCO_TX" value="1" />
+ <ctl name="INTERNAL_BT_SCO_RX Audio Mixer MultiMedia6" value="1" />
+ <ctl name="MultiMedia6 Mixer SLIM_0_TX" value="1" />
+ <ctl name="SLIMBUS6_DL_HL Switch" value="1" />
+ </path>
+
+
<path name="hfp-sco-wb">
<ctl name="Internal BTSCO SampleRate" value="BTSCO_RATE_16KHZ" />
<path name="hfp-sco" />
</path>
+ <path name="hfp-sco-wb headphones">
+ <ctl name="Internal BTSCO SampleRate" value="BTSCO_RATE_16KHZ" />
+ <path name="hfp-sco headphones" />
+ </path>
+
+
<path name="volte-call">
<ctl name="SLIM_0_RX_Voice Mixer VoLTE" value="1" />
<ctl name="VoLTE_Tx Mixer SLIM_0_TX_VoLTE" value="1" />
</path>
+ <path name="volte-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer VoLTE" value="1" />
+ <ctl name="VoLTE_Tx Mixer SLIM_0_TX_VoLTE" value="1" />
+ </path>
+
<path name="volte-call hdmi">
<ctl name="HDMI_RX_Voice Mixer VoLTE" value="1" />
<ctl name="VoLTE_Tx Mixer SLIM_0_TX_VoLTE" value="1" />
@@ -1400,6 +1535,12 @@
<ctl name="Voip_Tx Mixer SLIM_0_TX_Voip" value="1" />
</path>
+ <path name="compress-voip-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer Voip" value="1" />
+ <ctl name="Voip_Tx Mixer SLIM_0_TX_Voip" value="1" />
+ </path>
+
+
<path name="compress-voip-call bt-sco">
<ctl name="INTERNAL_BT_SCO_RX_Voice Mixer Voip" value="1" />
<ctl name="Voip_Tx Mixer INTERNAL_BT_SCO_TX_Voip" value="1" />
@@ -1431,6 +1572,11 @@
<ctl name="VoWLAN_Tx Mixer SLIM_0_TX_VoWLAN" value="1" />
</path>
+ <path name="vowlan-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer VoWLAN" value="1" />
+ <ctl name="VoWLAN_Tx Mixer SLIM_0_TX_VoWLAN" value="1" />
+ </path>
+
<path name="vowlan-call hdmi">
<ctl name="HDMI_RX_Voice Mixer VoWLAN" value="1" />
<ctl name="VoWLAN_Tx Mixer SLIM_0_TX_VoWLAN" value="1" />
@@ -1466,6 +1612,11 @@
<ctl name="VoiceMMode1_Tx Mixer SLIM_0_TX_MMode1" value="1" />
</path>
+ <path name="voicemmode1-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer VoiceMMode1" value="1" />
+ <ctl name="VoiceMMode1_Tx Mixer SLIM_0_TX_MMode1" value="1" />
+ </path>
+
<path name="voicemmode1-call hdmi">
<ctl name="HDMI_RX_Voice Mixer VoiceMMode1" value="1" />
<ctl name="VoiceMMode1_Tx Mixer SLIM_0_TX_MMode1" value="1" />
@@ -1501,6 +1652,11 @@
<ctl name="VoiceMMode2_Tx Mixer SLIM_0_TX_MMode2" value="1" />
</path>
+ <path name="voicemmode2-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer VoiceMMode2" value="1" />
+ <ctl name="VoiceMMode2_Tx Mixer SLIM_0_TX_MMode2" value="1" />
+ </path>
+
<path name="voicemmode2-call hdmi">
<ctl name="HDMI_RX_Voice Mixer VoiceMMode2" value="1" />
<ctl name="VoiceMMode2_Tx Mixer SLIM_0_TX_MMode2" value="1" />
@@ -1808,22 +1964,22 @@
</path>
<path name="headphones">
- <ctl name="SLIM RX0 MUX" value="AIF_MIX1_PB" />
- <ctl name="SLIM RX1 MUX" value="AIF_MIX1_PB" />
- <ctl name="SLIM_0_RX Channels" value="Two" />
- <ctl name="RX INT1_2 MUX" value="RX0" />
- <ctl name="RX INT2_2 MUX" value="RX1" />
+ <ctl name="SLIM RX2 MUX" value="AIF4_PB" />
+ <ctl name="SLIM RX3 MUX" value="AIF4_PB" />
+ <ctl name="SLIM_6_RX Channels" value="Two" />
+ <ctl name="RX INT1_2 MUX" value="RX2" />
+ <ctl name="RX INT2_2 MUX" value="RX3" />
<ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="RX INT2 DEM MUX" value="CLSH_DSM_OUT" />
</path>
<path name="headphones-44.1">
- <ctl name="SLIM RX3 MUX" value="AIF3_PB" />
<ctl name="SLIM RX4 MUX" value="AIF3_PB" />
+ <ctl name="SLIM RX5 MUX" value="AIF3_PB" />
<ctl name="SLIM_5_RX Channels" value="Two" />
<ctl name="SLIM_5_RX SampleRate" value="KHZ_44P1" />
- <ctl name="RX INT1_1 MIX1 INP0" value="RX3" />
- <ctl name="RX INT2_1 MIX1 INP1" value="RX4" />
+ <ctl name="RX INT1_1 MIX1 INP0" value="RX4" />
+ <ctl name="RX INT2_1 MIX1 INP1" value="RX5" />
<ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="RX INT2 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="SPL SRC0 MUX" value="SRC_IN_HPHL" />
@@ -1873,14 +2029,7 @@
<path name="speaker-and-headphones">
<path name="headphones" />
- <ctl name="RX INT7_1 MIX1 INP0" value="RX0" />
- <ctl name="RX INT8_1 MIX1 INP0" value="RX1" />
- <ctl name="SpkrLeft COMP Switch" value="1" />
- <ctl name="SpkrRight COMP Switch" value="1" />
- <ctl name="SpkrLeft BOOST Switch" value="1" />
- <ctl name="SpkrRight BOOST Switch" value="1" />
- <ctl name="SpkrLeft SWR DAC_Port Switch" value="1" />
- <ctl name="SpkrRight SWR DAC_Port Switch" value="1" />
+ <path name="wsa-speaker" />
</path>
@@ -2049,9 +2198,9 @@
<!-- TTY devices -->
<path name="tty-headphones">
- <ctl name="SLIM RX0 MUX" value="AIF_MIX1_PB" />
- <ctl name="SLIM_0_RX Channels" value="One" />
- <ctl name="RX INT1_1 MIX1 INP0" value="RX0" />
+ <ctl name="SLIM RX2 MUX" value="AIF4_PB" />
+ <ctl name="SLIM_6_RX Channels" value="One" />
+ <ctl name="RX INT1_1 MIX1 INP0" value="RX2" />
<ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
</path>
diff --git a/configs/msm8937/mixer_paths_wcd9335.xml b/configs/msm8937/mixer_paths_wcd9335.xml
index 7801034..2493f3f 100644
--- a/configs/msm8937/mixer_paths_wcd9335.xml
+++ b/configs/msm8937/mixer_paths_wcd9335.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!-- Copyright (c) 2015-2016, The Linux Foundation. All rights reserved. -->
+<!-- Copyright (c) 2015-16, 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 -->
@@ -84,6 +84,7 @@
<ctl name="SLIMBUS_3_RX Port Mixer MI2S_TX" value="0" />
<ctl name="HDMI_RX Port Mixer MI2S_TX" value="0" />
<ctl name="SLIMBUS_0_RX Port Mixer SLIM_0_TX" value="0" />
+ <ctl name="SLIMBUS_6_RX Port Mixer SLIM_0_TX" value="0" />
<ctl name="INTERNAL_BT_SCO_RX Audio Mixer MultiMedia1" value="0" />
<ctl name="INTERNAL_BT_SCO_RX Audio Mixer MultiMedia3" value="0" />
<ctl name="INTERNAL_BT_SCO_RX Audio Mixer MultiMedia4" value="0" />
@@ -127,18 +128,40 @@
<ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia15" value="0" />
<ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia16" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia1" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia1" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia2" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia2" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia3" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia3" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia4" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia4" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia4" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia5" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia5" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia7" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia7" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia7" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia10" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia10" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia10" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia11" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia11" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia11" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia12" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia12" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia12" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia13" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia13" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia13" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia14" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia14" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia14" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia15" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia15" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia15" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia16" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia16" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia16" value="0" />
<ctl name="MultiMedia6 Mixer SLIM_0_TX" value="0" />
<ctl name="IIR0 INP0 MUX" value="ZERO" />
<ctl name="IIR0 INP1 MUX" value="ZERO" />
@@ -244,8 +267,6 @@
<ctl name="SPL SRC3 MUX" value="ZERO" />
<ctl name="RX INT1 SPLINE MIX HPHL Switch" value="0" />
<ctl name="RX INT3 SPLINE MIX LO1 Switch" value="0" />
- <ctl name="RX INT1 SPLINE MIX HPHL Native Switch" value="0" />
- <ctl name="RX INT2 SPLINE MIX HPHR Native Switch" value="0" />
<ctl name="RX INT2 SPLINE MIX HPHR Switch" value="0" />
<ctl name="RX INT4 SPLINE MIX LO2 Switch" value="0" />
<ctl name="RX MIX TX0 MUX" value="ZERO" />
@@ -269,11 +290,15 @@
<ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="RX INT2 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="SLIM_0_RX Channels" value="One" />
+ <ctl name="SLIM_5_RX Channels" value="One" />
+ <ctl name="SLIM_6_RX Channels" value="One" />
<ctl name="SLIM_0_TX Channels" value="One" />
<ctl name="SLIM_1_TX Channels" value="One" />
<ctl name="SLIM RX0 MUX" value="AIF_MIX1_PB" />
+ <ctl name="SLIM RX2 MUX" value="ZERO" />
<ctl name="SLIM RX3 MUX" value="ZERO" />
<ctl name="SLIM RX4 MUX" value="ZERO" />
+ <ctl name="SLIM RX5 MUX" value="ZERO" />
<ctl name="EAR PA Gain" value="G_6_DB" />
<ctl name="SpkrLeft COMP Switch" value="0" />
<ctl name="SpkrRight COMP Switch" value="0" />
@@ -294,6 +319,8 @@
<ctl name="AIF1_CAP Mixer SLIM TX1" value="0"/>
<ctl name="AIF1_CAP Mixer SLIM TX0" value="0"/>
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia4" value="0" />
+ <ctl name="SLIMBUS_0_RX Port Mixer INTERNAL_BT_SCO_TX" value="0" />
+ <ctl name="SLIMBUS_6_RX Port Mixer INTERNAL_BT_SCO_TX" value="0" />
<ctl name="HDMI Mixer MultiMedia4" value="0" />
<!-- echo reference -->
<ctl name="AUDIO_REF_EC_UL1 MUX" value="None" />
@@ -321,6 +348,8 @@
<ctl name="INTERNAL_FM_RX Audio Mixer MultiMedia1" value="0" />
<ctl name="INTERNAL_FM_RX Audio Mixer MultiMedia5" value="0" />
<ctl name="INTERNAL_FM_RX Audio Mixer MultiMedia4" value="0" />
+ <ctl name="SLIMBUS_6_RX Port Mixer INTERNAL_FM_TX" value="0" />
+ <ctl name="SLIMBUS6_DL_HL Switch" value="0" />
<!-- fm end -->
<!-- RT Proxy Cal -->
<ctl name="RT_PROXY_1_RX SetCalMode" value="CAL_MODE_NONE" />
@@ -328,6 +357,7 @@
<!-- RT Proxy Cal end -->
<!-- Voice -->
<ctl name="SLIM_0_RX_Voice Mixer CSVoice" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer CSVoice" value="0" />
<ctl name="Voice_Tx Mixer SLIM_0_TX_Voice" value="0" />
<!-- Voice HDMI -->
<ctl name="HDMI_RX_Voice Mixer CSVoice" value="0" />
@@ -342,6 +372,7 @@
<!-- Voice2 -->
<ctl name="SLIM_0_RX_Voice Mixer Voice2" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer Voice2" value="0" />
<ctl name="Voice2_Tx Mixer SLIM_0_TX_Voice2" value="0" />
<!-- Voice2 HDMI -->
<ctl name="HDMI_RX_Voice Mixer Voice2" value="0" />
@@ -355,6 +386,7 @@
<!-- VoLTE -->
<ctl name="SLIM_0_RX_Voice Mixer VoLTE" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer VoLTE" value="0" />
<ctl name="VoLTE_Tx Mixer SLIM_0_TX_VoLTE" value="0" />
<!-- VoLTE HDMI -->
<ctl name="HDMI_RX_Voice Mixer VoLTE" value="0" />
@@ -368,6 +400,7 @@
<!-- Multimode Voice1 -->
<ctl name="SLIM_0_RX_Voice Mixer VoiceMMode1" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer VoiceMMode1" value="0" />
<ctl name="VoiceMMode1_Tx Mixer SLIM_0_TX_MMode1" value="0" />
<!-- Multimode Voice1 HDMI -->
<ctl name="HDMI_RX_Voice Mixer VoiceMMode1" value="0" />
@@ -381,6 +414,7 @@
<!-- Multimode Voice2 -->
<ctl name="SLIM_0_RX_Voice Mixer VoiceMMode2" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer VoiceMMode2" value="0" />
<ctl name="VoiceMMode2_Tx Mixer SLIM_0_TX_MMode2" value="0" />
<!-- Multimode Voice2 HDMI -->
<ctl name="HDMI_RX_Voice Mixer VoiceMMode2" value="0" />
@@ -412,6 +446,7 @@
<!-- compress-voip-call start -->
<ctl name="SLIM_0_RX_Voice Mixer Voip" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer Voip" value="0" />
<ctl name="Voip_Tx Mixer SLIM_0_TX_Voip" value="0" />
<ctl name="INTERNAL_BT_SCO_RX_Voice Mixer Voip" value="0" />
<ctl name="Voip_Tx Mixer INTERNAL_BT_SCO_TX_Voip" value="0" />
@@ -421,6 +456,7 @@
<!-- QCHAT start -->
<ctl name="SLIM_0_RX_Voice Mixer QCHAT" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer QCHAT" value="0" />
<ctl name="QCHAT_Tx Mixer SLIM_0_TX_QCHAT" value="0" />
<ctl name="INTERNAL_BT_SCO_RX_Voice Mixer QCHAT" value="0" />
<ctl name="QCHAT_Tx Mixer INTERNAL_BT_SCO_TX_QCHAT" value="0" />
@@ -428,6 +464,7 @@
<!-- VoWLAN start -->
<ctl name="SLIM_0_RX_Voice Mixer VoWLAN" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer VoWLAN" value="0" />
<ctl name="VoWLAN_Tx Mixer SLIM_0_TX_VoWLAN" value="0" />
<ctl name="HDMI_RX_Voice Mixer VoWLAN" value="0" />
<ctl name="INTERNAL_BT_SCO_RX_Voice Mixer VoWLAN" value="0" />
@@ -519,6 +556,7 @@
<!-- ADSP testfwk -->
<ctl name="SLIMBUS_DL_HL Switch" value="0" />
+ <ctl name="SLIMBUS6_DL_HL Switch" value="0" />
<!-- ADSP testfwk end-->
<!-- These are audio route (FE to BE) specific mixer settings -->
@@ -558,7 +596,7 @@
</path>
<path name="echo-reference headphones">
- <ctl name="AUDIO_REF_EC_UL1 MUX" value="SLIM_RX" />
+ <ctl name="AUDIO_REF_EC_UL1 MUX" value="SLIM_6_RX" />
</path>
<path name="echo-reference headphones-44.1">
@@ -597,11 +635,16 @@
<path name="deep-buffer-playback" />
</path>
+ <path name="deep-buffer-playback headphones">
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia1" value="1" />
+ </path>
+
<path name="deep-buffer-playback transmission-fm">
<ctl name="INTERNAL_FM_RX Audio Mixer MultiMedia1" value="1" />
</path>
- <path name="deep-buffer-playback headphones">
+ <path name="deep-buffer-playback speaker-and-headphones">
+ <path name="deep-buffer-playback headphones" />
<path name="deep-buffer-playback" />
</path>
@@ -654,6 +697,11 @@
</path>
<path name="low-latency-playback headphones">
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia5" value="1" />
+ </path>
+
+ <path name="low-latency-playback speaker-and-headphones">
+ <path name="low-latency-playback headphones" />
<path name="low-latency-playback" />
</path>
@@ -670,7 +718,12 @@
</path>
<path name="audio-ull-playback headphones">
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia3" value="1" />
+ </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 speaker-protected">
@@ -749,13 +802,18 @@
</path>
<path name="compress-offload-playback headphones">
- <path name="compress-offload-playback" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia4" value="1" />
</path>
<path name="compress-offload-playback headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback2">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia7" value="1" />
</path>
@@ -797,13 +855,18 @@
</path>
<path name="compress-offload-playback2 headphones">
- <path name="compress-offload-playback2" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia7" value="1" />
</path>
<path name="compress-offload-playback2 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback3">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia10" value="1" />
</path>
@@ -841,13 +904,18 @@
</path>
<path name="compress-offload-playback3 headphones">
- <path name="compress-offload-playback3" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia10" value="1" />
</path>
<path name="compress-offload-playback3 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback4">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia11" value="1" />
</path>
@@ -885,13 +953,18 @@
</path>
<path name="compress-offload-playback4 headphones">
- <path name="compress-offload-playback4" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia11" value="1" />
</path>
<path name="compress-offload-playback4 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback5">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia12" value="1" />
</path>
@@ -929,13 +1002,18 @@
</path>
<path name="compress-offload-playback5 headphones">
- <path name="compress-offload-playback5" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia12" value="1" />
</path>
<path name="compress-offload-playback5 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback6">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia13" value="1" />
</path>
@@ -973,13 +1051,18 @@
</path>
<path name="compress-offload-playback6 headphones">
- <path name="compress-offload-playback6" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia13" value="1" />
</path>
<path name="compress-offload-playback6 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback7">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia14" value="1" />
</path>
@@ -1017,13 +1100,18 @@
</path>
<path name="compress-offload-playback7 headphones">
- <path name="compress-offload-playback7" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia14" value="1" />
</path>
<path name="compress-offload-playback7 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback8">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia15" value="1" />
</path>
@@ -1061,13 +1149,18 @@
</path>
<path name="compress-offload-playback8 headphones">
- <path name="compress-offload-playback8" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia15" value="1" />
</path>
<path name="compress-offload-playback8 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback9">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia16" value="1" />
</path>
@@ -1105,13 +1198,18 @@
</path>
<path name="compress-offload-playback9 headphones">
- <path name="compress-offload-playback9" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia16" value="1" />
</path>
<path name="compress-offload-playback9 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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="audio-record">
<ctl name="MultiMedia1 Mixer SLIM_0_TX" value="1" />
</path>
@@ -1199,6 +1297,11 @@
<ctl name="Voice_Tx Mixer AFE_PCM_TX_Voice" value="1" />
</path>
+ <path name="voice-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer CSVoice" value="1" />
+ <ctl name="Voice_Tx Mixer SLIM_0_TX_Voice" value="1" />
+ </path>
+
<path name="voice2-call">
<ctl name="SLIM_0_RX_Voice Mixer Voice2" value="1" />
<ctl name="Voice2_Tx Mixer SLIM_0_TX_Voice2" value="1" />
@@ -1239,12 +1342,23 @@
<path name="voice2-call"/>
</path>
+ <path name="voice2-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer Voice2" value="1" />
+ <ctl name="Voice2_Tx Mixer SLIM_0_TX_Voice2" value="1" />
+ </path>
+
<path name="play-fm">
<ctl name="Internal FM RX Volume" value="1" />
<ctl name="SLIMBUS_0_RX Port Mixer INTERNAL_FM_TX" value="1" />
<ctl name="SLIMBUS_DL_HL Switch" value="1" />
</path>
+ <path name="play-fm headphones">
+ <ctl name="Internal FM RX Volume" value="1" />
+ <ctl name="SLIMBUS_6_RX Port Mixer INTERNAL_FM_TX" value="1" />
+ <ctl name="SLIMBUS6_DL_HL Switch" value="1" />
+ </path>
+
<path name="incall-rec-uplink">
<ctl name="MultiMedia1 Mixer VOC_REC_UL" value="1" />
</path>
@@ -1375,16 +1489,36 @@
<ctl name="SLIMBUS_DL_HL Switch" value="1" />
</path>
+ <path name="hfp-sco headphones">
+ <ctl name="HFP_INT_UL_HL Switch" value="1" />
+ <ctl name="SLIMBUS_6_RX Port Mixer INTERNAL_BT_SCO_TX" value="1" />
+ <ctl name="INTERNAL_BT_SCO_RX Audio Mixer MultiMedia6" value="1" />
+ <ctl name="MultiMedia6 Mixer SLIM_0_TX" value="1" />
+ <ctl name="SLIMBUS6_DL_HL Switch" value="1" />
+ </path>
+
+
<path name="hfp-sco-wb">
<ctl name="Internal BTSCO SampleRate" value="BTSCO_RATE_16KHZ" />
<path name="hfp-sco" />
</path>
+ <path name="hfp-sco-wb headphones">
+ <ctl name="Internal BTSCO SampleRate" value="BTSCO_RATE_16KHZ" />
+ <path name="hfp-sco headphones" />
+ </path>
+
+
<path name="volte-call">
<ctl name="SLIM_0_RX_Voice Mixer VoLTE" value="1" />
<ctl name="VoLTE_Tx Mixer SLIM_0_TX_VoLTE" value="1" />
</path>
+ <path name="volte-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer VoLTE" value="1" />
+ <ctl name="VoLTE_Tx Mixer SLIM_0_TX_VoLTE" value="1" />
+ </path>
+
<path name="volte-call hdmi">
<ctl name="HDMI_RX_Voice Mixer VoLTE" value="1" />
<ctl name="VoLTE_Tx Mixer SLIM_0_TX_VoLTE" value="1" />
@@ -1420,6 +1554,12 @@
<ctl name="Voip_Tx Mixer SLIM_0_TX_Voip" value="1" />
</path>
+ <path name="compress-voip-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer Voip" value="1" />
+ <ctl name="Voip_Tx Mixer SLIM_0_TX_Voip" value="1" />
+ </path>
+
+
<path name="compress-voip-call bt-sco">
<ctl name="INTERNAL_BT_SCO_RX_Voice Mixer Voip" value="1" />
<ctl name="Voip_Tx Mixer INTERNAL_BT_SCO_TX_Voip" value="1" />
@@ -1451,6 +1591,11 @@
<ctl name="VoWLAN_Tx Mixer SLIM_0_TX_VoWLAN" value="1" />
</path>
+ <path name="vowlan-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer VoWLAN" value="1" />
+ <ctl name="VoWLAN_Tx Mixer SLIM_0_TX_VoWLAN" value="1" />
+ </path>
+
<path name="vowlan-call hdmi">
<ctl name="HDMI_RX_Voice Mixer VoWLAN" value="1" />
<ctl name="VoWLAN_Tx Mixer SLIM_0_TX_VoWLAN" value="1" />
@@ -1486,6 +1631,11 @@
<ctl name="VoiceMMode1_Tx Mixer SLIM_0_TX_MMode1" value="1" />
</path>
+ <path name="voicemmode1-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer VoiceMMode1" value="1" />
+ <ctl name="VoiceMMode1_Tx Mixer SLIM_0_TX_MMode1" value="1" />
+ </path>
+
<path name="voicemmode1-call hdmi">
<ctl name="HDMI_RX_Voice Mixer VoiceMMode1" value="1" />
<ctl name="VoiceMMode1_Tx Mixer SLIM_0_TX_MMode1" value="1" />
@@ -1521,6 +1671,11 @@
<ctl name="VoiceMMode2_Tx Mixer SLIM_0_TX_MMode2" value="1" />
</path>
+ <path name="voicemmode2-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer VoiceMMode2" value="1" />
+ <ctl name="VoiceMMode2_Tx Mixer SLIM_0_TX_MMode2" value="1" />
+ </path>
+
<path name="voicemmode2-call hdmi">
<ctl name="HDMI_RX_Voice Mixer VoiceMMode2" value="1" />
<ctl name="VoiceMMode2_Tx Mixer SLIM_0_TX_MMode2" value="1" />
@@ -1547,7 +1702,7 @@
</path>
<path name="voicemmode2-call vbat-voice-speaker">
- <path name="echo-reference vbat-speaker" />
+ <path name="echo-reference vbat-speaker-mono" />
<path name="voicemmode2-call"/>
</path>
@@ -1842,22 +1997,22 @@
</path>
<path name="headphones">
- <ctl name="SLIM RX0 MUX" value="AIF_MIX1_PB" />
- <ctl name="SLIM RX1 MUX" value="AIF_MIX1_PB" />
- <ctl name="SLIM_0_RX Channels" value="Two" />
- <ctl name="RX INT1_2 MUX" value="RX0" />
- <ctl name="RX INT2_2 MUX" value="RX1" />
+ <ctl name="SLIM RX2 MUX" value="AIF4_PB" />
+ <ctl name="SLIM RX3 MUX" value="AIF4_PB" />
+ <ctl name="SLIM_6_RX Channels" value="Two" />
+ <ctl name="RX INT1_2 MUX" value="RX2" />
+ <ctl name="RX INT2_2 MUX" value="RX3" />
<ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="RX INT2 DEM MUX" value="CLSH_DSM_OUT" />
</path>
<path name="headphones-44.1">
- <ctl name="SLIM RX3 MUX" value="AIF3_PB" />
<ctl name="SLIM RX4 MUX" value="AIF3_PB" />
+ <ctl name="SLIM RX5 MUX" value="AIF3_PB" />
<ctl name="SLIM_5_RX Channels" value="Two" />
<ctl name="SLIM_5_RX SampleRate" value="KHZ_44P1" />
- <ctl name="RX INT1_1 MIX1 INP0" value="RX3" />
- <ctl name="RX INT2_1 MIX1 INP1" value="RX4" />
+ <ctl name="RX INT1_1 MIX1 INP0" value="RX4" />
+ <ctl name="RX INT2_1 MIX1 INP1" value="RX5" />
<ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="RX INT2 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="SPL SRC0 MUX" value="SRC_IN_HPHL" />
@@ -1866,15 +2021,6 @@
<ctl name="RX INT2 SPLINE MIX HPHR Switch" value="1" />
</path>
- <path name="true_native_mode">
- <ctl name="RX INT1_2 MUX" value="ZERO" />
- <ctl name="RX INT2_2 MUX" value="ZERO" />
- <ctl name= "RX INT1_1 MIX1 INP0" value="RX0" />
- <ctl name= "RX INT2_1 MIX1 INP0" value="RX1" />
- <ctl name= "RX INT1 SPLINE MIX HPHL Native Switch" value="1" />
- <ctl name= "RX INT2 SPLINE MIX HPHR Native Switch" value="1" />
- </path>
-
<path name="headset-mic">
<path name="adc2" />
<ctl name="ADC2 Volume" value="12" />
@@ -1916,14 +2062,7 @@
<path name="speaker-and-headphones">
<path name="headphones" />
- <ctl name="RX INT7_1 MIX1 INP0" value="RX0" />
- <ctl name="RX INT8_1 MIX1 INP0" value="RX1" />
- <ctl name="SpkrLeft COMP Switch" value="1" />
- <ctl name="SpkrRight COMP Switch" value="1" />
- <ctl name="SpkrLeft BOOST Switch" value="1" />
- <ctl name="SpkrRight BOOST Switch" value="1" />
- <ctl name="SpkrLeft SWR DAC_Port Switch" value="1" />
- <ctl name="SpkrRight SWR DAC_Port Switch" value="1" />
+ <path name="wsa-speaker" />
</path>
@@ -1940,42 +2079,33 @@
<ctl name="COMP1 Switch" value="0" />
<ctl name="COMP2 Switch" value="0" />
<ctl name="ANC Function" value="ON" />
- <ctl name="SLIM RX0 MUX" value="AIF_MIX1_PB" />
- <ctl name="SLIM RX1 MUX" value="AIF_MIX1_PB" />
- <ctl name="SLIM_0_RX Channels" value="Two" />
- <ctl name="RX INT1_1 MIX1 INP0" value="RX0" />
- <ctl name="RX INT2_1 MIX1 INP0" value="RX1" />
- <ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
- <ctl name="RX INT2 DEM MUX" value="CLSH_DSM_OUT" />
- <ctl name="HPHL Volume" value="20" />
- <ctl name="HPHR Volume" value="20" />
- <ctl name="RX1 Digital Volume" value="81" />
- <ctl name="RX2 Digital Volume" value="81" />
<ctl name="ANC Slot" value="0" />
- <ctl name="ANC0 FB MUX" value="ANC_IN_HPHL" />
- <ctl name="ANC1 FB MUX" value="ANC_IN_HPHR" />
<ctl name="ADC MUX10" value="AMIC" />
<ctl name="AMIC MUX10" value="ADC3" />
<ctl name="ADC MUX12" value="AMIC" />
<ctl name="AMIC MUX12" value="ADC4" />
- <ctl name="ANC HPHL Enable Switch" value="1" />
- <ctl name="ANC HPHR Enable Switch" value="1" />
+ <ctl name="ANC0 FB MUX" value="ANC_IN_HPHL" />
+ <ctl name="ANC1 FB MUX" value="ANC_IN_HPHR" />
<ctl name="ADC3 Volume" value="8" />
<ctl name="ADC4 Volume" value="8" />
+ <ctl name="SLIM RX2 MUX" value="AIF4_PB" />
+ <ctl name="SLIM RX3 MUX" value="AIF4_PB" />
+ <ctl name="SLIM_6_RX Channels" value="Two" />
+ <ctl name="RX INT1_1 MIX1 INP0" value="RX2" />
+ <ctl name="RX INT2_1 MIX1 INP0" value="RX3" />
+ <ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
+ <ctl name="RX INT2 DEM MUX" value="CLSH_DSM_OUT" />
+ <ctl name="RX1 Digital Volume" value="81" />
+ <ctl name="RX2 Digital Volume" value="81" />
+ <ctl name="ANC HPHL Enable Switch" value="1" />
+ <ctl name="ANC HPHR Enable Switch" value="1" />
+ <ctl name="HPHL Volume" value="20" />
+ <ctl name="HPHR Volume" value="20" />
</path>
<path name="speaker-and-anc-headphones">
<path name="anc-headphones" />
- <ctl name="RX INT7_1 MIX1 INP0" value="RX0" />
- <ctl name="RX INT8_1 MIX1 INP0" value="RX1" />
- <ctl name="SpkrLeft COMP Switch" value="1" />
- <ctl name="SpkrRight COMP Switch" value="1" />
- <ctl name="SpkrLeft BOOST Switch" value="1" />
- <ctl name="SpkrRight BOOST Switch" value="1" />
- <ctl name="SpkrLeft VISENSE Switch" value="1" />
- <ctl name="SpkrRight VISENSE Switch" value="1" />
- <ctl name="SpkrLeft SWR DAC_Port Switch" value="1" />
- <ctl name="SpkrRight SWR DAC_Port Switch" value="1" />
+ <path name="wsa-speaker" />
</path>
<path name="anc-fb-headphones">
@@ -1985,27 +2115,27 @@
<path name="speaker-and-anc-fb-headphones">
<path name="anc-fb-headphones" />
- <ctl name="RX INT7_1 MIX1 INP0" value="RX0" />
- <ctl name="RX INT8_1 MIX1 INP0" value="RX1" />
- <ctl name="SpkrLeft COMP Switch" value="1" />
- <ctl name="SpkrRight COMP Switch" value="1" />
- <ctl name="SpkrLeft BOOST Switch" value="1" />
- <ctl name="SpkrRight BOOST Switch" value="1" />
- <ctl name="SpkrLeft VISENSE Switch" value="1" />
- <ctl name="SpkrRight VISENSE Switch" value="1" />
- <ctl name="SpkrLeft SWR DAC_Port Switch" value="1" />
- <ctl name="SpkrRight SWR DAC_Port Switch" value="1" />
+ <path name="wsa-speaker" />
</path>
<path name="voice-anc-headphones">
<ctl name="COMP1 Switch" value="0" />
<ctl name="COMP2 Switch" value="0" />
<ctl name="ANC Function" value="ON" />
- <ctl name="SLIM RX0 MUX" value="AIF_MIX1_PB" />
- <ctl name="SLIM RX1 MUX" value="AIF_MIX1_PB" />
- <ctl name="SLIM_0_RX Channels" value="Two" />
- <ctl name="RX INT1_1 MIX1 INP0" value="RX0" />
- <ctl name="RX INT2_1 MIX1 INP0" value="RX1" />
+ <ctl name="ANC Slot" value="0" />
+ <ctl name="ADC MUX10" value="AMIC" />
+ <ctl name="AMIC MUX10" value="ADC3" />
+ <ctl name="ADC MUX12" value="AMIC" />
+ <ctl name="AMIC MUX12" value="ADC4" />
+ <ctl name="ANC0 FB MUX" value="ANC_IN_HPHL" />
+ <ctl name="ANC1 FB MUX" value="ANC_IN_HPHR" />
+ <ctl name="ADC3 Volume" value="8" />
+ <ctl name="ADC4 Volume" value="8" />
+ <ctl name="SLIM RX2 MUX" value="AIF4_PB" />
+ <ctl name="SLIM RX3 MUX" value="AIF4_PB" />
+ <ctl name="SLIM_6_RX Channels" value="Two" />
+ <ctl name="RX INT1_1 MIX1 INP0" value="RX2" />
+ <ctl name="RX INT2_1 MIX1 INP0" value="RX3" />
<ctl name="IIR0 Enable Band1" value="1" />
<ctl name="IIR0 Enable Band2" value="1" />
<ctl name="IIR0 Enable Band3" value="1" />
@@ -2014,32 +2144,32 @@
<ctl name="IIR0 INP0 Volume" value="54" />
<ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="RX INT2 DEM MUX" value="CLSH_DSM_OUT" />
- <ctl name="HPHL Volume" value="20" />
- <ctl name="HPHR Volume" value="20" />
<ctl name="RX1 Digital Volume" value="81" />
<ctl name="RX2 Digital Volume" value="81" />
- <ctl name="ANC Slot" value="0" />
- <ctl name="ANC0 FB MUX" value="ANC_IN_HPHL" />
- <ctl name="ANC1 FB MUX" value="ANC_IN_HPHR" />
- <ctl name="ADC MUX10" value="AMIC" />
- <ctl name="AMIC MUX10" value="ADC3" />
- <ctl name="ADC MUX12" value="AMIC" />
- <ctl name="AMIC MUX12" value="ADC4" />
<ctl name="ANC HPHL Enable Switch" value="1" />
<ctl name="ANC HPHR Enable Switch" value="1" />
- <ctl name="ADC3 Volume" value="8" />
- <ctl name="ADC4 Volume" value="8" />
+ <ctl name="HPHL Volume" value="20" />
+ <ctl name="HPHR Volume" value="20" />
</path>
<path name="voice-anc-fb-headphones">
<ctl name="COMP1 Switch" value="0" />
<ctl name="COMP2 Switch" value="0" />
<ctl name="ANC Function" value="ON" />
- <ctl name="SLIM RX0 MUX" value="AIF_MIX1_PB" />
- <ctl name="SLIM RX1 MUX" value="AIF_MIX1_PB" />
- <ctl name="SLIM_0_RX Channels" value="Two" />
- <ctl name="RX INT1_1 MIX1 INP0" value="RX0" />
- <ctl name="RX INT2_1 MIX1 INP0" value="RX1" />
+ <ctl name="ANC Slot" value="1" />
+ <ctl name="ADC MUX10" value="AMIC" />
+ <ctl name="AMIC MUX10" value="ADC3" />
+ <ctl name="ADC MUX12" value="AMIC" />
+ <ctl name="AMIC MUX12" value="ADC4" />
+ <ctl name="ANC0 FB MUX" value="ANC_IN_HPHL" />
+ <ctl name="ANC1 FB MUX" value="ANC_IN_HPHR" />
+ <ctl name="ADC3 Volume" value="8" />
+ <ctl name="ADC4 Volume" value="8" />
+ <ctl name="SLIM RX2 MUX" value="AIF4_PB" />
+ <ctl name="SLIM RX3 MUX" value="AIF4_PB" />
+ <ctl name="SLIM_6_RX Channels" value="Two" />
+ <ctl name="RX INT1_1 MIX1 INP0" value="RX2" />
+ <ctl name="RX INT2_1 MIX1 INP0" value="RX3" />
<ctl name="IIR0 Enable Band1" value="1" />
<ctl name="IIR0 Enable Band2" value="1" />
<ctl name="IIR0 Enable Band3" value="1" />
@@ -2048,21 +2178,12 @@
<ctl name="IIR0 INP0 Volume" value="62" />
<ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="RX INT2 DEM MUX" value="CLSH_DSM_OUT" />
- <ctl name="HPHL Volume" value="14" />
- <ctl name="HPHR Volume" value="14" />
<ctl name="RX1 Digital Volume" value="81" />
<ctl name="RX2 Digital Volume" value="81" />
- <ctl name="ANC Slot" value="1" />
- <ctl name="ANC0 FB MUX" value="ANC_IN_HPHL" />
- <ctl name="ANC1 FB MUX" value="ANC_IN_HPHR" />
- <ctl name="ADC MUX10" value="AMIC" />
- <ctl name="AMIC MUX10" value="ADC3" />
- <ctl name="ADC MUX12" value="AMIC" />
- <ctl name="AMIC MUX12" value="ADC4" />
<ctl name="ANC HPHL Enable Switch" value="1" />
<ctl name="ANC HPHR Enable Switch" value="1" />
- <ctl name="ADC3 Volume" value="8" />
- <ctl name="ADC4 Volume" value="8" />
+ <ctl name="HPHL Volume" value="14" />
+ <ctl name="HPHR Volume" value="14" />
</path>
@@ -2244,9 +2365,9 @@
<!-- TTY devices -->
<path name="tty-headphones">
- <ctl name="SLIM RX0 MUX" value="AIF_MIX1_PB" />
- <ctl name="SLIM_0_RX Channels" value="One" />
- <ctl name="RX INT1_1 MIX1 INP0" value="RX0" />
+ <ctl name="SLIM RX2 MUX" value="AIF4_PB" />
+ <ctl name="SLIM_6_RX Channels" value="One" />
+ <ctl name="RX INT1_1 MIX1 INP0" value="RX2" />
<ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
</path>
diff --git a/configs/msm8953/audio_platform_info_extcodec.xml b/configs/msm8953/audio_platform_info_extcodec.xml
index d45203c..c5dbc47 100644
--- a/configs/msm8953/audio_platform_info_extcodec.xml
+++ b/configs/msm8953/audio_platform_info_extcodec.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!-- Copyright (c) 2015, The Linux Foundation. All rights reserved. -->
+<!-- Copyright (c) 2015-16 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 -->
@@ -51,5 +51,15 @@
<config_params>
<param key="native_audio_mode" value="src"/>
</config_params>
+ <backend_names>
+ <device name="SND_DEVICE_OUT_HEADPHONES" backend="headphones" interface="SLIMBUS_6_RX"/>
+ <device name="SND_DEVICE_OUT_LINE" backend="headphones" interface="SLIMBUS_6_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES" backend="speaker-and-headphones" interface="SLIMBUS_0_RX-and-SLIMBUS_6_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_AND_LINE" backend="speaker-and-headphones" interface="SLIMBUS_0_RX-and-SLIMBUS_6_RX"/>
+ <device name="SND_DEVICE_OUT_VOICE_HEADPHONES" backend="headphones" interface="SLIMBUS_6_RX"/>
+ <device name="SND_DEVICE_OUT_VOICE_LINE" backend="headphones" interface="SLIMBUS_6_RX"/>
+ <device name="SND_DEVICE_OUT_VOICE_TTY_FULL_HEADPHONES" backend="headphones" interface="SLIMBUS_6_RX"/>
+ <device name="SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES" backend="headphones" interface="SLIMBUS_6_RX"/>
+ </backend_names>
</audio_platform_info>
diff --git a/configs/msm8953/mixer_paths_qrd_sku3.xml b/configs/msm8953/mixer_paths_qrd_sku3.xml
index 5ff10d1..0d68a71 100644
--- a/configs/msm8953/mixer_paths_qrd_sku3.xml
+++ b/configs/msm8953/mixer_paths_qrd_sku3.xml
@@ -84,6 +84,7 @@
<ctl name="SLIMBUS_3_RX Port Mixer MI2S_TX" value="0" />
<ctl name="HDMI_RX Port Mixer MI2S_TX" value="0" />
<ctl name="SLIMBUS_0_RX Port Mixer SLIM_0_TX" value="0" />
+ <ctl name="SLIMBUS_6_RX Port Mixer SLIM_0_TX" value="0" />
<ctl name="INTERNAL_BT_SCO_RX Audio Mixer MultiMedia1" value="0" />
<ctl name="INTERNAL_BT_SCO_RX Audio Mixer MultiMedia3" value="0" />
<ctl name="INTERNAL_BT_SCO_RX Audio Mixer MultiMedia4" value="0" />
@@ -127,18 +128,40 @@
<ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia15" value="0" />
<ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia16" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia1" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia1" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia2" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia2" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia3" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia3" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia4" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia4" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia4" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia5" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia5" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia7" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia7" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia7" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia10" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia10" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia10" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia11" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia11" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia11" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia12" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia12" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia12" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia13" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia13" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia13" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia14" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia14" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia14" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia15" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia15" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia15" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia16" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia16" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia16" value="0" />
<ctl name="MultiMedia6 Mixer SLIM_0_TX" value="0" />
<ctl name="IIR0 INP0 MUX" value="ZERO" />
<ctl name="IIR0 INP1 MUX" value="ZERO" />
@@ -267,11 +290,15 @@
<ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="RX INT2 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="SLIM_0_RX Channels" value="One" />
+ <ctl name="SLIM_5_RX Channels" value="One" />
+ <ctl name="SLIM_6_RX Channels" value="One" />
<ctl name="SLIM_0_TX Channels" value="One" />
<ctl name="SLIM_1_TX Channels" value="One" />
- <ctl name="SLIM RX0 MUX" value="AIF_MIX1_PB" />
+ <ctl name="SLIM RX0 MUX" value="ZERO" />
<ctl name="SLIM RX3 MUX" value="ZERO" />
+ <ctl name="SLIM RX2 MUX" value="ZERO" />
<ctl name="SLIM RX4 MUX" value="ZERO" />
+ <ctl name="SLIM RX5 MUX" value="ZERO" />
<ctl name="EAR PA Gain" value="G_6_DB" />
<ctl name="SpkrLeft COMP Switch" value="0" />
<ctl name="SpkrRight COMP Switch" value="0" />
@@ -293,6 +320,8 @@
<ctl name="AIF1_CAP Mixer SLIM TX0" value="0"/>
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia4" value="0" />
<ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia4" value="0" />
+ <ctl name="SLIMBUS_0_RX Port Mixer INTERNAL_BT_SCO_TX" value="0" />
+ <ctl name="SLIMBUS_6_RX Port Mixer INTERNAL_BT_SCO_TX" value="0" />
<!-- echo reference -->
<ctl name="AUDIO_REF_EC_UL1 MUX" value="None" />
<!-- usb headset -->
@@ -319,6 +348,8 @@
<ctl name="INTERNAL_FM_RX Audio Mixer MultiMedia1" value="0" />
<ctl name="INTERNAL_FM_RX Audio Mixer MultiMedia5" value="0" />
<ctl name="INTERNAL_FM_RX Audio Mixer MultiMedia4" value="0" />
+ <ctl name="SLIMBUS_6_RX Port Mixer INTERNAL_FM_TX" value="0" />
+ <ctl name="SLIMBUS6_DL_HL Switch" value="0" />
<!-- fm end -->
<!-- RT Proxy Cal -->
<ctl name="RT_PROXY_1_RX SetCalMode" value="CAL_MODE_NONE" />
@@ -326,6 +357,7 @@
<!-- RT Proxy Cal end -->
<!-- Voice -->
<ctl name="SLIM_0_RX_Voice Mixer CSVoice" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer CSVoice" value="0" />
<ctl name="Voice_Tx Mixer SLIM_0_TX_Voice" value="0" />
<!-- Voice HDMI -->
<ctl name="HDMI_RX_Voice Mixer CSVoice" value="0" />
@@ -340,6 +372,7 @@
<!-- Voice2 -->
<ctl name="SLIM_0_RX_Voice Mixer Voice2" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer Voice2" value="0" />
<ctl name="Voice2_Tx Mixer SLIM_0_TX_Voice2" value="0" />
<!-- Voice2 HDMI -->
<ctl name="HDMI_RX_Voice Mixer Voice2" value="0" />
@@ -353,6 +386,7 @@
<!-- VoLTE -->
<ctl name="SLIM_0_RX_Voice Mixer VoLTE" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer VoLTE" value="0" />
<ctl name="VoLTE_Tx Mixer SLIM_0_TX_VoLTE" value="0" />
<!-- VoLTE HDMI -->
<ctl name="HDMI_RX_Voice Mixer VoLTE" value="0" />
@@ -366,6 +400,7 @@
<!-- Multimode Voice1 -->
<ctl name="SLIM_0_RX_Voice Mixer VoiceMMode1" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer VoiceMMode1" value="0" />
<ctl name="VoiceMMode1_Tx Mixer SLIM_0_TX_MMode1" value="0" />
<!-- Multimode Voice1 HDMI -->
<ctl name="HDMI_RX_Voice Mixer VoiceMMode1" value="0" />
@@ -379,6 +414,7 @@
<!-- Multimode Voice2 -->
<ctl name="SLIM_0_RX_Voice Mixer VoiceMMode2" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer VoiceMMode2" value="0" />
<ctl name="VoiceMMode2_Tx Mixer SLIM_0_TX_MMode2" value="0" />
<!-- Multimode Voice2 HDMI -->
<ctl name="HDMI_RX_Voice Mixer VoiceMMode2" value="0" />
@@ -404,6 +440,7 @@
<!-- compress-voip-call start -->
<ctl name="SLIM_0_RX_Voice Mixer Voip" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer Voip" value="0" />
<ctl name="Voip_Tx Mixer SLIM_0_TX_Voip" value="0" />
<ctl name="INTERNAL_BT_SCO_RX_Voice Mixer Voip" value="0" />
<ctl name="Voip_Tx Mixer INTERNAL_BT_SCO_TX_Voip" value="0" />
@@ -413,6 +450,7 @@
<!-- QCHAT start -->
<ctl name="SLIM_0_RX_Voice Mixer QCHAT" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer QCHAT" value="0" />
<ctl name="QCHAT_Tx Mixer SLIM_0_TX_QCHAT" value="0" />
<ctl name="INTERNAL_BT_SCO_RX_Voice Mixer QCHAT" value="0" />
<ctl name="QCHAT_Tx Mixer INTERNAL_BT_SCO_TX_QCHAT" value="0" />
@@ -420,6 +458,7 @@
<!-- VoWLAN start -->
<ctl name="SLIM_0_RX_Voice Mixer VoWLAN" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer VoWLAN" value="0" />
<ctl name="VoWLAN_Tx Mixer SLIM_0_TX_VoWLAN" value="0" />
<ctl name="HDMI_RX_Voice Mixer VoWLAN" value="0" />
<ctl name="INTERNAL_BT_SCO_RX_Voice Mixer VoWLAN" value="0" />
@@ -497,6 +536,7 @@
<!-- ADSP testfwk -->
<ctl name="SLIMBUS_DL_HL Switch" value="0" />
+ <ctl name="SLIMBUS6_DL_HL Switch" value="0" />
<!-- ADSP testfwk end-->
<!-- These are audio route (FE to BE) specific mixer settings -->
@@ -575,11 +615,16 @@
<path name="deep-buffer-playback" />
</path>
+ <path name="deep-buffer-playback headphones">
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia1" value="1" />
+ </path>
+
<path name="deep-buffer-playback transmission-fm">
<ctl name="INTERNAL_FM_RX Audio Mixer MultiMedia1" value="1" />
</path>
- <path name="deep-buffer-playback headphones">
+ <path name="deep-buffer-playback speaker-and-headphones">
+ <path name="deep-buffer-playback headphones" />
<path name="deep-buffer-playback" />
</path>
@@ -632,6 +677,11 @@
</path>
<path name="low-latency-playback headphones">
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia5" value="1" />
+ </path>
+
+ <path name="low-latency-playback speaker-and-headphones">
+ <path name="low-latency-playback headphones" />
<path name="low-latency-playback" />
</path>
@@ -648,7 +698,12 @@
</path>
<path name="audio-ull-playback headphones">
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia3" value="1" />
+ </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 speaker-protected">
@@ -727,13 +782,18 @@
</path>
<path name="compress-offload-playback headphones">
- <path name="compress-offload-playback" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia4" value="1" />
</path>
<path name="compress-offload-playback headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback2">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia7" value="1" />
</path>
@@ -775,13 +835,18 @@
</path>
<path name="compress-offload-playback2 headphones">
- <path name="compress-offload-playback2" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia7" value="1" />
</path>
<path name="compress-offload-playback2 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback3">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia10" value="1" />
</path>
@@ -819,13 +884,18 @@
</path>
<path name="compress-offload-playback3 headphones">
- <path name="compress-offload-playback3" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia10" value="1" />
</path>
<path name="compress-offload-playback3 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback4">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia11" value="1" />
</path>
@@ -863,13 +933,18 @@
</path>
<path name="compress-offload-playback4 headphones">
- <path name="compress-offload-playback4" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia11" value="1" />
</path>
<path name="compress-offload-playback4 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback5">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia12" value="1" />
</path>
@@ -907,13 +982,18 @@
</path>
<path name="compress-offload-playback5 headphones">
- <path name="compress-offload-playback5" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia12" value="1" />
</path>
<path name="compress-offload-playback5 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback6">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia13" value="1" />
</path>
@@ -951,13 +1031,18 @@
</path>
<path name="compress-offload-playback6 headphones">
- <path name="compress-offload-playback6" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia13" value="1" />
</path>
<path name="compress-offload-playback6 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback7">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia14" value="1" />
</path>
@@ -995,13 +1080,18 @@
</path>
<path name="compress-offload-playback7 headphones">
- <path name="compress-offload-playback7" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia14" value="1" />
</path>
<path name="compress-offload-playback7 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback8">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia15" value="1" />
</path>
@@ -1039,13 +1129,18 @@
</path>
<path name="compress-offload-playback8 headphones">
- <path name="compress-offload-playback8" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia15" value="1" />
</path>
<path name="compress-offload-playback8 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback9">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia16" value="1" />
</path>
@@ -1083,13 +1178,18 @@
</path>
<path name="compress-offload-playback9 headphones">
- <path name="compress-offload-playback9" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia16" value="1" />
</path>
<path name="compress-offload-playback9 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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="audio-record">
<ctl name="MultiMedia1 Mixer SLIM_0_TX" value="1" />
</path>
@@ -1177,6 +1277,11 @@
<ctl name="Voice_Tx Mixer AFE_PCM_TX_Voice" value="1" />
</path>
+ <path name="voice-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer CSVoice" value="1" />
+ <ctl name="Voice_Tx Mixer SLIM_0_TX_Voice" value="1" />
+ </path>
+
<path name="voice2-call">
<ctl name="SLIM_0_RX_Voice Mixer Voice2" value="1" />
<ctl name="Voice2_Tx Mixer SLIM_0_TX_Voice2" value="1" />
@@ -1217,12 +1322,23 @@
<path name="voice2-call"/>
</path>
+ <path name="voice2-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer Voice2" value="1" />
+ <ctl name="Voice2_Tx Mixer SLIM_0_TX_Voice2" value="1" />
+ </path>
+
<path name="play-fm">
<ctl name="Internal FM RX Volume" value="1" />
<ctl name="SLIMBUS_0_RX Port Mixer INTERNAL_FM_TX" value="1" />
<ctl name="SLIMBUS_DL_HL Switch" value="1" />
</path>
+ <path name="play-fm headphones">
+ <ctl name="Internal FM RX Volume" value="1" />
+ <ctl name="SLIMBUS_6_RX Port Mixer INTERNAL_FM_TX" value="1" />
+ <ctl name="SLIMBUS6_DL_HL Switch" value="1" />
+ </path>
+
<path name="incall-rec-uplink">
<ctl name="MultiMedia1 Mixer VOC_REC_UL" value="1" />
</path>
@@ -1353,16 +1469,36 @@
<ctl name="SLIMBUS_DL_HL Switch" value="1" />
</path>
+ <path name="hfp-sco headphones">
+ <ctl name="HFP_INT_UL_HL Switch" value="1" />
+ <ctl name="SLIMBUS_6_RX Port Mixer INTERNAL_BT_SCO_TX" value="1" />
+ <ctl name="INTERNAL_BT_SCO_RX Audio Mixer MultiMedia6" value="1" />
+ <ctl name="MultiMedia6 Mixer SLIM_0_TX" value="1" />
+ <ctl name="SLIMBUS6_DL_HL Switch" value="1" />
+ </path>
+
+
<path name="hfp-sco-wb">
<ctl name="Internal BTSCO SampleRate" value="BTSCO_RATE_16KHZ" />
<path name="hfp-sco" />
</path>
+ <path name="hfp-sco-wb headphones">
+ <ctl name="Internal BTSCO SampleRate" value="BTSCO_RATE_16KHZ" />
+ <path name="hfp-sco headphones" />
+ </path>
+
+
<path name="volte-call">
<ctl name="SLIM_0_RX_Voice Mixer VoLTE" value="1" />
<ctl name="VoLTE_Tx Mixer SLIM_0_TX_VoLTE" value="1" />
</path>
+ <path name="volte-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer VoLTE" value="1" />
+ <ctl name="VoLTE_Tx Mixer SLIM_0_TX_VoLTE" value="1" />
+ </path>
+
<path name="volte-call hdmi">
<ctl name="HDMI_RX_Voice Mixer VoLTE" value="1" />
<ctl name="VoLTE_Tx Mixer SLIM_0_TX_VoLTE" value="1" />
@@ -1398,6 +1534,12 @@
<ctl name="Voip_Tx Mixer SLIM_0_TX_Voip" value="1" />
</path>
+ <path name="compress-voip-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer Voip" value="1" />
+ <ctl name="Voip_Tx Mixer SLIM_0_TX_Voip" value="1" />
+ </path>
+
+
<path name="compress-voip-call bt-sco">
<ctl name="INTERNAL_BT_SCO_RX_Voice Mixer Voip" value="1" />
<ctl name="Voip_Tx Mixer INTERNAL_BT_SCO_TX_Voip" value="1" />
@@ -1429,6 +1571,11 @@
<ctl name="VoWLAN_Tx Mixer SLIM_0_TX_VoWLAN" value="1" />
</path>
+ <path name="vowlan-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer VoWLAN" value="1" />
+ <ctl name="VoWLAN_Tx Mixer SLIM_0_TX_VoWLAN" value="1" />
+ </path>
+
<path name="vowlan-call hdmi">
<ctl name="HDMI_RX_Voice Mixer VoWLAN" value="1" />
<ctl name="VoWLAN_Tx Mixer SLIM_0_TX_VoWLAN" value="1" />
@@ -1464,6 +1611,11 @@
<ctl name="VoiceMMode1_Tx Mixer SLIM_0_TX_MMode1" value="1" />
</path>
+ <path name="voicemmode1-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer VoiceMMode1" value="1" />
+ <ctl name="VoiceMMode1_Tx Mixer SLIM_0_TX_MMode1" value="1" />
+ </path>
+
<path name="voicemmode1-call hdmi">
<ctl name="HDMI_RX_Voice Mixer VoiceMMode1" value="1" />
<ctl name="VoiceMMode1_Tx Mixer SLIM_0_TX_MMode1" value="1" />
@@ -1499,6 +1651,11 @@
<ctl name="VoiceMMode2_Tx Mixer SLIM_0_TX_MMode2" value="1" />
</path>
+ <path name="voicemmode2-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer VoiceMMode2" value="1" />
+ <ctl name="VoiceMMode2_Tx Mixer SLIM_0_TX_MMode2" value="1" />
+ </path>
+
<path name="voicemmode2-call hdmi">
<ctl name="HDMI_RX_Voice Mixer VoiceMMode2" value="1" />
<ctl name="VoiceMMode2_Tx Mixer SLIM_0_TX_MMode2" value="1" />
@@ -1801,22 +1958,22 @@
</path>
<path name="headphones">
- <ctl name="SLIM RX0 MUX" value="AIF_MIX1_PB" />
- <ctl name="SLIM RX1 MUX" value="AIF_MIX1_PB" />
- <ctl name="SLIM_0_RX Channels" value="Two" />
- <ctl name="RX INT1_2 MUX" value="RX0" />
- <ctl name="RX INT2_2 MUX" value="RX1" />
+ <ctl name="SLIM RX2 MUX" value="AIF4_PB" />
+ <ctl name="SLIM RX3 MUX" value="AIF4_PB" />
+ <ctl name="SLIM_6_RX Channels" value="Two" />
+ <ctl name="RX INT1_2 MUX" value="RX2" />
+ <ctl name="RX INT2_2 MUX" value="RX3" />
<ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="RX INT2 DEM MUX" value="CLSH_DSM_OUT" />
</path>
<path name="headphones-44.1">
- <ctl name="SLIM RX3 MUX" value="AIF3_PB" />
<ctl name="SLIM RX4 MUX" value="AIF3_PB" />
+ <ctl name="SLIM RX5 MUX" value="AIF3_PB" />
<ctl name="SLIM_5_RX Channels" value="Two" />
<ctl name="SLIM_5_RX SampleRate" value="KHZ_44P1" />
- <ctl name="RX INT1_1 MIX1 INP0" value="RX3" />
- <ctl name="RX INT2_1 MIX1 INP1" value="RX4" />
+ <ctl name="RX INT1_1 MIX1 INP0" value="RX4" />
+ <ctl name="RX INT2_1 MIX1 INP1" value="RX5" />
<ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="RX INT2 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="SPL SRC0 MUX" value="SRC_IN_HPHL" />
@@ -2036,9 +2193,9 @@
<!-- TTY devices -->
<path name="tty-headphones">
- <ctl name="SLIM RX0 MUX" value="AIF_MIX1_PB" />
- <ctl name="SLIM_0_RX Channels" value="One" />
- <ctl name="RX INT1_1 MIX1 INP0" value="RX0" />
+ <ctl name="SLIM RX2 MUX" value="AIF4_PB" />
+ <ctl name="SLIM_6_RX Channels" value="One" />
+ <ctl name="RX INT1_1 MIX1 INP0" value="RX2" />
<ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
</path>
diff --git a/configs/msm8953/mixer_paths_wcd9326.xml b/configs/msm8953/mixer_paths_wcd9326.xml
index a33c1dc..836610b 100644
--- a/configs/msm8953/mixer_paths_wcd9326.xml
+++ b/configs/msm8953/mixer_paths_wcd9326.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!-- Copyright (c) 2015-2016, The Linux Foundation. All rights reserved. -->
+<!-- Copyright (c) 2015-16, 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 -->
@@ -84,6 +84,7 @@
<ctl name="SLIMBUS_3_RX Port Mixer MI2S_TX" value="0" />
<ctl name="HDMI_RX Port Mixer MI2S_TX" value="0" />
<ctl name="SLIMBUS_0_RX Port Mixer SLIM_0_TX" value="0" />
+ <ctl name="SLIMBUS_6_RX Port Mixer SLIM_0_TX" value="0" />
<ctl name="INTERNAL_BT_SCO_RX Audio Mixer MultiMedia1" value="0" />
<ctl name="INTERNAL_BT_SCO_RX Audio Mixer MultiMedia3" value="0" />
<ctl name="INTERNAL_BT_SCO_RX Audio Mixer MultiMedia4" value="0" />
@@ -127,18 +128,40 @@
<ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia15" value="0" />
<ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia16" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia1" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia1" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia2" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia2" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia3" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia3" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia4" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia4" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia4" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia5" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia5" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia7" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia7" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia7" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia10" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia10" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia10" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia11" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia11" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia11" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia12" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia12" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia12" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia13" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia13" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia13" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia14" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia14" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia14" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia15" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia15" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia15" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia16" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia16" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia16" value="0" />
<ctl name="MultiMedia6 Mixer SLIM_0_TX" value="0" />
<ctl name="IIR0 INP0 MUX" value="ZERO" />
<ctl name="IIR0 INP1 MUX" value="ZERO" />
@@ -269,11 +292,15 @@
<ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="RX INT2 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="SLIM_0_RX Channels" value="One" />
+ <ctl name="SLIM_5_RX Channels" value="One" />
+ <ctl name="SLIM_6_RX Channels" value="One" />
<ctl name="SLIM_0_TX Channels" value="One" />
<ctl name="SLIM_1_TX Channels" value="One" />
- <ctl name="SLIM RX0 MUX" value="AIF_MIX1_PB" />
+ <ctl name="SLIM RX0 MUX" value="ZERO" />
+ <ctl name="SLIM RX2 MUX" value="ZERO" />
<ctl name="SLIM RX3 MUX" value="ZERO" />
<ctl name="SLIM RX4 MUX" value="ZERO" />
+ <ctl name="SLIM RX5 MUX" value="ZERO" />
<ctl name="EAR PA Gain" value="G_6_DB" />
<ctl name="SpkrLeft COMP Switch" value="0" />
<ctl name="SpkrRight COMP Switch" value="0" />
@@ -295,6 +322,8 @@
<ctl name="AIF1_CAP Mixer SLIM TX0" value="0"/>
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia4" value="0" />
<ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia4" value="0" />
+ <ctl name="SLIMBUS_0_RX Port Mixer INTERNAL_BT_SCO_TX" value="0" />
+ <ctl name="SLIMBUS_6_RX Port Mixer INTERNAL_BT_SCO_TX" value="0" />
<!-- echo reference -->
<ctl name="AUDIO_REF_EC_UL1 MUX" value="None" />
<!-- usb headset -->
@@ -321,6 +350,8 @@
<ctl name="INTERNAL_FM_RX Audio Mixer MultiMedia1" value="0" />
<ctl name="INTERNAL_FM_RX Audio Mixer MultiMedia5" value="0" />
<ctl name="INTERNAL_FM_RX Audio Mixer MultiMedia4" value="0" />
+ <ctl name="SLIMBUS_6_RX Port Mixer INTERNAL_FM_TX" value="0" />
+ <ctl name="SLIMBUS6_DL_HL Switch" value="0" />
<!-- fm end -->
<!-- RT Proxy Cal -->
@@ -330,6 +361,7 @@
<!-- Voice -->
<ctl name="SLIM_0_RX_Voice Mixer CSVoice" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer CSVoice" value="0" />
<ctl name="Voice_Tx Mixer SLIM_0_TX_Voice" value="0" />
<!-- Voice HDMI -->
<ctl name="HDMI_RX_Voice Mixer CSVoice" value="0" />
@@ -344,6 +376,7 @@
<!-- Voice2 -->
<ctl name="SLIM_0_RX_Voice Mixer Voice2" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer Voice2" value="0" />
<ctl name="Voice2_Tx Mixer SLIM_0_TX_Voice2" value="0" />
<!-- Voice2 HDMI -->
<ctl name="HDMI_RX_Voice Mixer Voice2" value="0" />
@@ -357,6 +390,7 @@
<!-- VoLTE -->
<ctl name="SLIM_0_RX_Voice Mixer VoLTE" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer VoLTE" value="0" />
<ctl name="VoLTE_Tx Mixer SLIM_0_TX_VoLTE" value="0" />
<!-- VoLTE HDMI -->
<ctl name="HDMI_RX_Voice Mixer VoLTE" value="0" />
@@ -370,6 +404,7 @@
<!-- Multimode Voice1 -->
<ctl name="SLIM_0_RX_Voice Mixer VoiceMMode1" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer VoiceMMode1" value="0" />
<ctl name="VoiceMMode1_Tx Mixer SLIM_0_TX_MMode1" value="0" />
<!-- Multimode Voice1 HDMI -->
<ctl name="HDMI_RX_Voice Mixer VoiceMMode1" value="0" />
@@ -383,6 +418,7 @@
<!-- Multimode Voice2 -->
<ctl name="SLIM_0_RX_Voice Mixer VoiceMMode2" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer VoiceMMode2" value="0" />
<ctl name="VoiceMMode2_Tx Mixer SLIM_0_TX_MMode2" value="0" />
<!-- Multimode Voice2 HDMI -->
<ctl name="HDMI_RX_Voice Mixer VoiceMMode2" value="0" />
@@ -408,6 +444,7 @@
<!-- compress-voip-call start -->
<ctl name="SLIM_0_RX_Voice Mixer Voip" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer Voip" value="0" />
<ctl name="Voip_Tx Mixer SLIM_0_TX_Voip" value="0" />
<ctl name="INTERNAL_BT_SCO_RX_Voice Mixer Voip" value="0" />
<ctl name="Voip_Tx Mixer INTERNAL_BT_SCO_TX_Voip" value="0" />
@@ -417,6 +454,7 @@
<!-- QCHAT start -->
<ctl name="SLIM_0_RX_Voice Mixer QCHAT" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer QCHAT" value="0" />
<ctl name="QCHAT_Tx Mixer SLIM_0_TX_QCHAT" value="0" />
<ctl name="INTERNAL_BT_SCO_RX_Voice Mixer QCHAT" value="0" />
<ctl name="QCHAT_Tx Mixer INTERNAL_BT_SCO_TX_QCHAT" value="0" />
@@ -424,6 +462,7 @@
<!-- VoWLAN start -->
<ctl name="SLIM_0_RX_Voice Mixer VoWLAN" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer VoWLAN" value="0" />
<ctl name="VoWLAN_Tx Mixer SLIM_0_TX_VoWLAN" value="0" />
<ctl name="HDMI_RX_Voice Mixer VoWLAN" value="0" />
<ctl name="INTERNAL_BT_SCO_RX_Voice Mixer VoWLAN" value="0" />
@@ -501,6 +540,7 @@
<!-- ADSP testfwk -->
<ctl name="SLIMBUS_DL_HL Switch" value="0" />
+ <ctl name="SLIMBUS6_DL_HL Switch" value="0" />
<!-- ADSP testfwk end-->
<!-- These are audio route (FE to BE) specific mixer settings -->
@@ -540,7 +580,7 @@
</path>
<path name="echo-reference headphones">
- <ctl name="AUDIO_REF_EC_UL1 MUX" value="SLIM_RX" />
+ <ctl name="AUDIO_REF_EC_UL1 MUX" value="SLIM_6_RX" />
</path>
<path name="echo-reference headphones-44.1">
@@ -579,11 +619,16 @@
<path name="deep-buffer-playback" />
</path>
+ <path name="deep-buffer-playback headphones">
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia1" value="1" />
+ </path>
+
<path name="deep-buffer-playback transmission-fm">
<ctl name="INTERNAL_FM_RX Audio Mixer MultiMedia1" value="1" />
</path>
- <path name="deep-buffer-playback headphones">
+ <path name="deep-buffer-playback speaker-and-headphones">
+ <path name="deep-buffer-playback headphones" />
<path name="deep-buffer-playback" />
</path>
@@ -636,6 +681,11 @@
</path>
<path name="low-latency-playback headphones">
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia5" value="1" />
+ </path>
+
+ <path name="low-latency-playback speaker-and-headphones">
+ <path name="low-latency-playback headphones" />
<path name="low-latency-playback" />
</path>
@@ -652,7 +702,12 @@
</path>
<path name="audio-ull-playback headphones">
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia3" value="1" />
+ </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 speaker-protected">
@@ -731,13 +786,18 @@
</path>
<path name="compress-offload-playback headphones">
- <path name="compress-offload-playback" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia4" value="1" />
</path>
<path name="compress-offload-playback headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback2">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia7" value="1" />
</path>
@@ -779,13 +839,18 @@
</path>
<path name="compress-offload-playback2 headphones">
- <path name="compress-offload-playback2" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia7" value="1" />
</path>
<path name="compress-offload-playback2 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback3">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia10" value="1" />
</path>
@@ -823,13 +888,18 @@
</path>
<path name="compress-offload-playback3 headphones">
- <path name="compress-offload-playback3" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia10" value="1" />
</path>
<path name="compress-offload-playback3 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback4">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia11" value="1" />
</path>
@@ -867,13 +937,18 @@
</path>
<path name="compress-offload-playback4 headphones">
- <path name="compress-offload-playback4" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia11" value="1" />
</path>
<path name="compress-offload-playback4 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback5">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia12" value="1" />
</path>
@@ -911,13 +986,18 @@
</path>
<path name="compress-offload-playback5 headphones">
- <path name="compress-offload-playback5" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia12" value="1" />
</path>
<path name="compress-offload-playback5 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback6">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia13" value="1" />
</path>
@@ -955,13 +1035,18 @@
</path>
<path name="compress-offload-playback6 headphones">
- <path name="compress-offload-playback6" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia13" value="1" />
</path>
<path name="compress-offload-playback6 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback7">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia14" value="1" />
</path>
@@ -999,13 +1084,18 @@
</path>
<path name="compress-offload-playback7 headphones">
- <path name="compress-offload-playback7" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia14" value="1" />
</path>
<path name="compress-offload-playback7 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback8">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia15" value="1" />
</path>
@@ -1043,13 +1133,18 @@
</path>
<path name="compress-offload-playback8 headphones">
- <path name="compress-offload-playback8" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia15" value="1" />
</path>
<path name="compress-offload-playback8 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback9">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia16" value="1" />
</path>
@@ -1087,13 +1182,18 @@
</path>
<path name="compress-offload-playback9 headphones">
- <path name="compress-offload-playback9" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia16" value="1" />
</path>
<path name="compress-offload-playback9 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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="audio-record">
<ctl name="MultiMedia1 Mixer SLIM_0_TX" value="1" />
</path>
@@ -1181,6 +1281,11 @@
<ctl name="Voice_Tx Mixer AFE_PCM_TX_Voice" value="1" />
</path>
+ <path name="voice-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer CSVoice" value="1" />
+ <ctl name="Voice_Tx Mixer SLIM_0_TX_Voice" value="1" />
+ </path>
+
<path name="voice2-call">
<ctl name="SLIM_0_RX_Voice Mixer Voice2" value="1" />
<ctl name="Voice2_Tx Mixer SLIM_0_TX_Voice2" value="1" />
@@ -1221,12 +1326,23 @@
<path name="voice2-call"/>
</path>
+ <path name="voice2-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer Voice2" value="1" />
+ <ctl name="Voice2_Tx Mixer SLIM_0_TX_Voice2" value="1" />
+ </path>
+
<path name="play-fm">
<ctl name="Internal FM RX Volume" value="1" />
<ctl name="SLIMBUS_0_RX Port Mixer INTERNAL_FM_TX" value="1" />
<ctl name="SLIMBUS_DL_HL Switch" value="1" />
</path>
+ <path name="play-fm headphones">
+ <ctl name="Internal FM RX Volume" value="1" />
+ <ctl name="SLIMBUS_6_RX Port Mixer INTERNAL_FM_TX" value="1" />
+ <ctl name="SLIMBUS6_DL_HL Switch" value="1" />
+ </path>
+
<path name="incall-rec-uplink">
<ctl name="MultiMedia1 Mixer VOC_REC_UL" value="1" />
</path>
@@ -1357,16 +1473,36 @@
<ctl name="SLIMBUS_DL_HL Switch" value="1" />
</path>
+ <path name="hfp-sco headphones">
+ <ctl name="HFP_INT_UL_HL Switch" value="1" />
+ <ctl name="SLIMBUS_6_RX Port Mixer INTERNAL_BT_SCO_TX" value="1" />
+ <ctl name="INTERNAL_BT_SCO_RX Audio Mixer MultiMedia6" value="1" />
+ <ctl name="MultiMedia6 Mixer SLIM_0_TX" value="1" />
+ <ctl name="SLIMBUS6_DL_HL Switch" value="1" />
+ </path>
+
+
<path name="hfp-sco-wb">
<ctl name="Internal BTSCO SampleRate" value="BTSCO_RATE_16KHZ" />
<path name="hfp-sco" />
</path>
+ <path name="hfp-sco-wb headphones">
+ <ctl name="Internal BTSCO SampleRate" value="BTSCO_RATE_16KHZ" />
+ <path name="hfp-sco headphones" />
+ </path>
+
+
<path name="volte-call">
<ctl name="SLIM_0_RX_Voice Mixer VoLTE" value="1" />
<ctl name="VoLTE_Tx Mixer SLIM_0_TX_VoLTE" value="1" />
</path>
+ <path name="volte-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer VoLTE" value="1" />
+ <ctl name="VoLTE_Tx Mixer SLIM_0_TX_VoLTE" value="1" />
+ </path>
+
<path name="volte-call hdmi">
<ctl name="HDMI_RX_Voice Mixer VoLTE" value="1" />
<ctl name="VoLTE_Tx Mixer SLIM_0_TX_VoLTE" value="1" />
@@ -1402,6 +1538,12 @@
<ctl name="Voip_Tx Mixer SLIM_0_TX_Voip" value="1" />
</path>
+ <path name="compress-voip-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer Voip" value="1" />
+ <ctl name="Voip_Tx Mixer SLIM_0_TX_Voip" value="1" />
+ </path>
+
+
<path name="compress-voip-call bt-sco">
<ctl name="INTERNAL_BT_SCO_RX_Voice Mixer Voip" value="1" />
<ctl name="Voip_Tx Mixer INTERNAL_BT_SCO_TX_Voip" value="1" />
@@ -1433,6 +1575,11 @@
<ctl name="VoWLAN_Tx Mixer SLIM_0_TX_VoWLAN" value="1" />
</path>
+ <path name="vowlan-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer VoWLAN" value="1" />
+ <ctl name="VoWLAN_Tx Mixer SLIM_0_TX_VoWLAN" value="1" />
+ </path>
+
<path name="vowlan-call hdmi">
<ctl name="HDMI_RX_Voice Mixer VoWLAN" value="1" />
<ctl name="VoWLAN_Tx Mixer SLIM_0_TX_VoWLAN" value="1" />
@@ -1468,6 +1615,11 @@
<ctl name="VoiceMMode1_Tx Mixer SLIM_0_TX_MMode1" value="1" />
</path>
+ <path name="voicemmode1-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer VoiceMMode1" value="1" />
+ <ctl name="VoiceMMode1_Tx Mixer SLIM_0_TX_MMode1" value="1" />
+ </path>
+
<path name="voicemmode1-call hdmi">
<ctl name="HDMI_RX_Voice Mixer VoiceMMode1" value="1" />
<ctl name="VoiceMMode1_Tx Mixer SLIM_0_TX_MMode1" value="1" />
@@ -1503,6 +1655,11 @@
<ctl name="VoiceMMode2_Tx Mixer SLIM_0_TX_MMode2" value="1" />
</path>
+ <path name="voicemmode2-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer VoiceMMode2" value="1" />
+ <ctl name="VoiceMMode2_Tx Mixer SLIM_0_TX_MMode2" value="1" />
+ </path>
+
<path name="voicemmode2-call hdmi">
<ctl name="HDMI_RX_Voice Mixer VoiceMMode2" value="1" />
<ctl name="VoiceMMode2_Tx Mixer SLIM_0_TX_MMode2" value="1" />
@@ -1810,22 +1967,22 @@
</path>
<path name="headphones">
- <ctl name="SLIM RX0 MUX" value="AIF_MIX1_PB" />
- <ctl name="SLIM RX1 MUX" value="AIF_MIX1_PB" />
- <ctl name="SLIM_0_RX Channels" value="Two" />
- <ctl name="RX INT1_2 MUX" value="RX0" />
- <ctl name="RX INT2_2 MUX" value="RX1" />
+ <ctl name="SLIM RX2 MUX" value="AIF4_PB" />
+ <ctl name="SLIM RX3 MUX" value="AIF4_PB" />
+ <ctl name="SLIM_6_RX Channels" value="Two" />
+ <ctl name="RX INT1_2 MUX" value="RX2" />
+ <ctl name="RX INT2_2 MUX" value="RX3" />
<ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="RX INT2 DEM MUX" value="CLSH_DSM_OUT" />
</path>
<path name="headphones-44.1">
- <ctl name="SLIM RX3 MUX" value="AIF3_PB" />
<ctl name="SLIM RX4 MUX" value="AIF3_PB" />
+ <ctl name="SLIM RX5 MUX" value="AIF3_PB" />
<ctl name="SLIM_5_RX Channels" value="Two" />
<ctl name="SLIM_5_RX SampleRate" value="KHZ_44P1" />
- <ctl name="RX INT1_1 MIX1 INP0" value="RX3" />
- <ctl name="RX INT2_1 MIX1 INP1" value="RX4" />
+ <ctl name="RX INT1_1 MIX1 INP0" value="RX4" />
+ <ctl name="RX INT2_1 MIX1 INP1" value="RX5" />
<ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="RX INT2 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="SPL SRC0 MUX" value="SRC_IN_HPHL" />
@@ -1837,8 +1994,8 @@
<path name="true-native-mode">
<ctl name="RX INT1_2 MUX" value="ZERO" />
<ctl name="RX INT2_2 MUX" value="ZERO" />
- <ctl name= "RX INT1_1 MIX1 INP0" value="RX0" />
- <ctl name= "RX INT2_1 MIX1 INP0" value="RX1" />
+ <ctl name= "RX INT1_1 MIX1 INP0" value="RX2" />
+ <ctl name= "RX INT2_1 MIX1 INP0" value="RX3" />
<ctl name= "RX INT1 SPLINE MIX HPHL Native Switch" value="1" />
<ctl name= "RX INT2 SPLINE MIX HPHR Native Switch" value="1" />
</path>
@@ -1884,14 +2041,7 @@
<path name="speaker-and-headphones">
<path name="headphones" />
- <ctl name="RX INT7_1 MIX1 INP0" value="RX0" />
- <ctl name="RX INT8_1 MIX1 INP0" value="RX1" />
- <ctl name="SpkrLeft COMP Switch" value="1" />
- <ctl name="SpkrRight COMP Switch" value="1" />
- <ctl name="SpkrLeft BOOST Switch" value="1" />
- <ctl name="SpkrRight BOOST Switch" value="1" />
- <ctl name="SpkrLeft SWR DAC_Port Switch" value="1" />
- <ctl name="SpkrRight SWR DAC_Port Switch" value="1" />
+ <path name="wsa-speaker" />
</path>
@@ -2060,9 +2210,9 @@
<!-- TTY devices -->
<path name="tty-headphones">
- <ctl name="SLIM RX0 MUX" value="AIF_MIX1_PB" />
- <ctl name="SLIM_0_RX Channels" value="One" />
- <ctl name="RX INT1_1 MIX1 INP0" value="RX0" />
+ <ctl name="SLIM RX2 MUX" value="AIF4_PB" />
+ <ctl name="SLIM_6_RX Channels" value="One" />
+ <ctl name="RX INT1_1 MIX1 INP0" value="RX2" />
<ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
</path>
diff --git a/configs/msm8953/mixer_paths_wcd9335.xml b/configs/msm8953/mixer_paths_wcd9335.xml
index e7182a7..3afe808 100644
--- a/configs/msm8953/mixer_paths_wcd9335.xml
+++ b/configs/msm8953/mixer_paths_wcd9335.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!-- Copyright (c) 2015-2016, The Linux Foundation. All rights reserved. -->
+<!-- Copyright (c) 2015-16, 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 -->
@@ -84,6 +84,7 @@
<ctl name="SLIMBUS_3_RX Port Mixer MI2S_TX" value="0" />
<ctl name="HDMI_RX Port Mixer MI2S_TX" value="0" />
<ctl name="SLIMBUS_0_RX Port Mixer SLIM_0_TX" value="0" />
+ <ctl name="SLIMBUS_6_RX Port Mixer SLIM_0_TX" value="0" />
<ctl name="INTERNAL_BT_SCO_RX Audio Mixer MultiMedia1" value="0" />
<ctl name="INTERNAL_BT_SCO_RX Audio Mixer MultiMedia3" value="0" />
<ctl name="INTERNAL_BT_SCO_RX Audio Mixer MultiMedia4" value="0" />
@@ -127,18 +128,40 @@
<ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia15" value="0" />
<ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia16" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia1" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia1" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia2" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia2" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia3" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia3" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia4" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia4" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia4" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia5" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia5" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia7" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia7" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia7" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia10" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia10" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia10" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia11" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia11" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia11" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia12" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia12" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia12" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia13" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia13" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia13" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia14" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia14" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia14" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia15" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia15" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia15" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia16" value="0" />
+ <ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia16" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia16" value="0" />
<ctl name="MultiMedia6 Mixer SLIM_0_TX" value="0" />
<ctl name="IIR0 INP0 MUX" value="ZERO" />
<ctl name="IIR0 INP1 MUX" value="ZERO" />
@@ -269,11 +292,15 @@
<ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="RX INT2 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="SLIM_0_RX Channels" value="One" />
+ <ctl name="SLIM_5_RX Channels" value="One" />
+ <ctl name="SLIM_6_RX Channels" value="One" />
<ctl name="SLIM_0_TX Channels" value="One" />
<ctl name="SLIM_1_TX Channels" value="One" />
- <ctl name="SLIM RX0 MUX" value="AIF_MIX1_PB" />
+ <ctl name="SLIM RX0 MUX" value="ZERO" />
+ <ctl name="SLIM RX2 MUX" value="ZERO" />
<ctl name="SLIM RX3 MUX" value="ZERO" />
<ctl name="SLIM RX4 MUX" value="ZERO" />
+ <ctl name="SLIM RX5 MUX" value="ZERO" />
<ctl name="EAR PA Gain" value="G_6_DB" />
<ctl name="SpkrLeft COMP Switch" value="0" />
<ctl name="SpkrRight COMP Switch" value="0" />
@@ -295,6 +322,8 @@
<ctl name="AIF1_CAP Mixer SLIM TX0" value="0"/>
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia4" value="0" />
<ctl name="QUIN_MI2S_RX Audio Mixer MultiMedia4" value="0" />
+ <ctl name="SLIMBUS_0_RX Port Mixer INTERNAL_BT_SCO_TX" value="0" />
+ <ctl name="SLIMBUS_6_RX Port Mixer INTERNAL_BT_SCO_TX" value="0" />
<!-- echo reference -->
<ctl name="AUDIO_REF_EC_UL1 MUX" value="None" />
<!-- usb headset -->
@@ -321,6 +350,8 @@
<ctl name="INTERNAL_FM_RX Audio Mixer MultiMedia1" value="0" />
<ctl name="INTERNAL_FM_RX Audio Mixer MultiMedia5" value="0" />
<ctl name="INTERNAL_FM_RX Audio Mixer MultiMedia4" value="0" />
+ <ctl name="SLIMBUS_6_RX Port Mixer INTERNAL_FM_TX" value="0" />
+ <ctl name="SLIMBUS6_DL_HL Switch" value="0" />
<!-- fm end -->
<!-- RT Proxy Cal -->
<ctl name="RT_PROXY_1_RX SetCalMode" value="CAL_MODE_NONE" />
@@ -328,6 +359,7 @@
<!-- RT Proxy Cal end -->
<!-- Voice -->
<ctl name="SLIM_0_RX_Voice Mixer CSVoice" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer CSVoice" value="0" />
<ctl name="Voice_Tx Mixer SLIM_0_TX_Voice" value="0" />
<!-- Voice HDMI -->
<ctl name="HDMI_RX_Voice Mixer CSVoice" value="0" />
@@ -342,6 +374,7 @@
<!-- Voice2 -->
<ctl name="SLIM_0_RX_Voice Mixer Voice2" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer Voice2" value="0" />
<ctl name="Voice2_Tx Mixer SLIM_0_TX_Voice2" value="0" />
<!-- Voice2 HDMI -->
<ctl name="HDMI_RX_Voice Mixer Voice2" value="0" />
@@ -355,6 +388,7 @@
<!-- VoLTE -->
<ctl name="SLIM_0_RX_Voice Mixer VoLTE" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer VoLTE" value="0" />
<ctl name="VoLTE_Tx Mixer SLIM_0_TX_VoLTE" value="0" />
<!-- VoLTE HDMI -->
<ctl name="HDMI_RX_Voice Mixer VoLTE" value="0" />
@@ -368,6 +402,7 @@
<!-- Multimode Voice1 -->
<ctl name="SLIM_0_RX_Voice Mixer VoiceMMode1" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer VoiceMMode1" value="0" />
<ctl name="VoiceMMode1_Tx Mixer SLIM_0_TX_MMode1" value="0" />
<!-- Multimode Voice1 HDMI -->
<ctl name="HDMI_RX_Voice Mixer VoiceMMode1" value="0" />
@@ -381,6 +416,7 @@
<!-- Multimode Voice2 -->
<ctl name="SLIM_0_RX_Voice Mixer VoiceMMode2" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer VoiceMMode2" value="0" />
<ctl name="VoiceMMode2_Tx Mixer SLIM_0_TX_MMode2" value="0" />
<!-- Multimode Voice2 HDMI -->
<ctl name="HDMI_RX_Voice Mixer VoiceMMode2" value="0" />
@@ -412,6 +448,7 @@
<!-- compress-voip-call start -->
<ctl name="SLIM_0_RX_Voice Mixer Voip" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer Voip" value="0" />
<ctl name="Voip_Tx Mixer SLIM_0_TX_Voip" value="0" />
<ctl name="INTERNAL_BT_SCO_RX_Voice Mixer Voip" value="0" />
<ctl name="Voip_Tx Mixer INTERNAL_BT_SCO_TX_Voip" value="0" />
@@ -421,6 +458,7 @@
<!-- QCHAT start -->
<ctl name="SLIM_0_RX_Voice Mixer QCHAT" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer QCHAT" value="0" />
<ctl name="QCHAT_Tx Mixer SLIM_0_TX_QCHAT" value="0" />
<ctl name="INTERNAL_BT_SCO_RX_Voice Mixer QCHAT" value="0" />
<ctl name="QCHAT_Tx Mixer INTERNAL_BT_SCO_TX_QCHAT" value="0" />
@@ -428,6 +466,7 @@
<!-- VoWLAN start -->
<ctl name="SLIM_0_RX_Voice Mixer VoWLAN" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer VoWLAN" value="0" />
<ctl name="VoWLAN_Tx Mixer SLIM_0_TX_VoWLAN" value="0" />
<ctl name="HDMI_RX_Voice Mixer VoWLAN" value="0" />
<ctl name="INTERNAL_BT_SCO_RX_Voice Mixer VoWLAN" value="0" />
@@ -519,6 +558,7 @@
<!-- ADSP testfwk -->
<ctl name="SLIMBUS_DL_HL Switch" value="0" />
+ <ctl name="SLIMBUS6_DL_HL Switch" value="0" />
<!-- ADSP testfwk end-->
<!-- These are audio route (FE to BE) specific mixer settings -->
@@ -558,7 +598,7 @@
</path>
<path name="echo-reference headphones">
- <ctl name="AUDIO_REF_EC_UL1 MUX" value="SLIM_RX" />
+ <ctl name="AUDIO_REF_EC_UL1 MUX" value="SLIM_6_RX" />
</path>
<path name="echo-reference headphones-44.1">
@@ -597,11 +637,16 @@
<path name="deep-buffer-playback" />
</path>
+ <path name="deep-buffer-playback headphones">
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia1" value="1" />
+ </path>
+
<path name="deep-buffer-playback transmission-fm">
<ctl name="INTERNAL_FM_RX Audio Mixer MultiMedia1" value="1" />
</path>
- <path name="deep-buffer-playback headphones">
+ <path name="deep-buffer-playback speaker-and-headphones">
+ <path name="deep-buffer-playback headphones" />
<path name="deep-buffer-playback" />
</path>
@@ -654,6 +699,11 @@
</path>
<path name="low-latency-playback headphones">
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia5" value="1" />
+ </path>
+
+ <path name="low-latency-playback speaker-and-headphones">
+ <path name="low-latency-playback headphones" />
<path name="low-latency-playback" />
</path>
@@ -670,7 +720,12 @@
</path>
<path name="audio-ull-playback headphones">
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia3" value="1" />
+ </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 speaker-protected">
@@ -749,13 +804,18 @@
</path>
<path name="compress-offload-playback headphones">
- <path name="compress-offload-playback" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia4" value="1" />
</path>
<path name="compress-offload-playback headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback2">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia7" value="1" />
</path>
@@ -797,13 +857,18 @@
</path>
<path name="compress-offload-playback2 headphones">
- <path name="compress-offload-playback2" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia7" value="1" />
</path>
<path name="compress-offload-playback2 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback3">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia10" value="1" />
</path>
@@ -841,13 +906,18 @@
</path>
<path name="compress-offload-playback3 headphones">
- <path name="compress-offload-playback3" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia10" value="1" />
</path>
<path name="compress-offload-playback3 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback4">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia11" value="1" />
</path>
@@ -885,13 +955,18 @@
</path>
<path name="compress-offload-playback4 headphones">
- <path name="compress-offload-playback4" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia11" value="1" />
</path>
<path name="compress-offload-playback4 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback5">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia12" value="1" />
</path>
@@ -929,13 +1004,18 @@
</path>
<path name="compress-offload-playback5 headphones">
- <path name="compress-offload-playback5" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia12" value="1" />
</path>
<path name="compress-offload-playback5 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback6">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia13" value="1" />
</path>
@@ -973,13 +1053,18 @@
</path>
<path name="compress-offload-playback6 headphones">
- <path name="compress-offload-playback6" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia13" value="1" />
</path>
<path name="compress-offload-playback6 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback7">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia14" value="1" />
</path>
@@ -1017,13 +1102,18 @@
</path>
<path name="compress-offload-playback7 headphones">
- <path name="compress-offload-playback7" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia14" value="1" />
</path>
<path name="compress-offload-playback7 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback8">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia15" value="1" />
</path>
@@ -1061,13 +1151,18 @@
</path>
<path name="compress-offload-playback8 headphones">
- <path name="compress-offload-playback8" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia15" value="1" />
</path>
<path name="compress-offload-playback8 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback9">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia16" value="1" />
</path>
@@ -1105,13 +1200,18 @@
</path>
<path name="compress-offload-playback9 headphones">
- <path name="compress-offload-playback9" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia16" value="1" />
</path>
<path name="compress-offload-playback9 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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="audio-record">
<ctl name="MultiMedia1 Mixer SLIM_0_TX" value="1" />
</path>
@@ -1199,6 +1299,11 @@
<ctl name="Voice_Tx Mixer AFE_PCM_TX_Voice" value="1" />
</path>
+ <path name="voice-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer CSVoice" value="1" />
+ <ctl name="Voice_Tx Mixer SLIM_0_TX_Voice" value="1" />
+ </path>
+
<path name="voice2-call">
<ctl name="SLIM_0_RX_Voice Mixer Voice2" value="1" />
<ctl name="Voice2_Tx Mixer SLIM_0_TX_Voice2" value="1" />
@@ -1239,12 +1344,23 @@
<path name="voice2-call"/>
</path>
+ <path name="voice2-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer Voice2" value="1" />
+ <ctl name="Voice2_Tx Mixer SLIM_0_TX_Voice2" value="1" />
+ </path>
+
<path name="play-fm">
<ctl name="Internal FM RX Volume" value="1" />
<ctl name="SLIMBUS_0_RX Port Mixer INTERNAL_FM_TX" value="1" />
<ctl name="SLIMBUS_DL_HL Switch" value="1" />
</path>
+ <path name="play-fm headphones">
+ <ctl name="Internal FM RX Volume" value="1" />
+ <ctl name="SLIMBUS_6_RX Port Mixer INTERNAL_FM_TX" value="1" />
+ <ctl name="SLIMBUS6_DL_HL Switch" value="1" />
+ </path>
+
<path name="incall-rec-uplink">
<ctl name="MultiMedia1 Mixer VOC_REC_UL" value="1" />
</path>
@@ -1375,16 +1491,36 @@
<ctl name="SLIMBUS_DL_HL Switch" value="1" />
</path>
+ <path name="hfp-sco headphones">
+ <ctl name="HFP_INT_UL_HL Switch" value="1" />
+ <ctl name="SLIMBUS_6_RX Port Mixer INTERNAL_BT_SCO_TX" value="1" />
+ <ctl name="INTERNAL_BT_SCO_RX Audio Mixer MultiMedia6" value="1" />
+ <ctl name="MultiMedia6 Mixer SLIM_0_TX" value="1" />
+ <ctl name="SLIMBUS6_DL_HL Switch" value="1" />
+ </path>
+
+
<path name="hfp-sco-wb">
<ctl name="Internal BTSCO SampleRate" value="BTSCO_RATE_16KHZ" />
<path name="hfp-sco" />
</path>
+ <path name="hfp-sco-wb headphones">
+ <ctl name="Internal BTSCO SampleRate" value="BTSCO_RATE_16KHZ" />
+ <path name="hfp-sco headphones" />
+ </path>
+
+
<path name="volte-call">
<ctl name="SLIM_0_RX_Voice Mixer VoLTE" value="1" />
<ctl name="VoLTE_Tx Mixer SLIM_0_TX_VoLTE" value="1" />
</path>
+ <path name="volte-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer VoLTE" value="1" />
+ <ctl name="VoLTE_Tx Mixer SLIM_0_TX_VoLTE" value="1" />
+ </path>
+
<path name="volte-call hdmi">
<ctl name="HDMI_RX_Voice Mixer VoLTE" value="1" />
<ctl name="VoLTE_Tx Mixer SLIM_0_TX_VoLTE" value="1" />
@@ -1420,6 +1556,12 @@
<ctl name="Voip_Tx Mixer SLIM_0_TX_Voip" value="1" />
</path>
+ <path name="compress-voip-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer Voip" value="1" />
+ <ctl name="Voip_Tx Mixer SLIM_0_TX_Voip" value="1" />
+ </path>
+
+
<path name="compress-voip-call bt-sco">
<ctl name="INTERNAL_BT_SCO_RX_Voice Mixer Voip" value="1" />
<ctl name="Voip_Tx Mixer INTERNAL_BT_SCO_TX_Voip" value="1" />
@@ -1451,6 +1593,11 @@
<ctl name="VoWLAN_Tx Mixer SLIM_0_TX_VoWLAN" value="1" />
</path>
+ <path name="vowlan-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer VoWLAN" value="1" />
+ <ctl name="VoWLAN_Tx Mixer SLIM_0_TX_VoWLAN" value="1" />
+ </path>
+
<path name="vowlan-call hdmi">
<ctl name="HDMI_RX_Voice Mixer VoWLAN" value="1" />
<ctl name="VoWLAN_Tx Mixer SLIM_0_TX_VoWLAN" value="1" />
@@ -1486,6 +1633,11 @@
<ctl name="VoiceMMode1_Tx Mixer SLIM_0_TX_MMode1" value="1" />
</path>
+ <path name="voicemmode1-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer VoiceMMode1" value="1" />
+ <ctl name="VoiceMMode1_Tx Mixer SLIM_0_TX_MMode1" value="1" />
+ </path>
+
<path name="voicemmode1-call hdmi">
<ctl name="HDMI_RX_Voice Mixer VoiceMMode1" value="1" />
<ctl name="VoiceMMode1_Tx Mixer SLIM_0_TX_MMode1" value="1" />
@@ -1512,7 +1664,7 @@
</path>
<path name="voicemmode1-call vbat-voice-speaker">
- <path name="echo-reference vbat-speaker" />
+ <path name="echo-reference vbat-speaker-mono" />
<path name="voicemmode1-call"/>
</path>
@@ -1521,6 +1673,11 @@
<ctl name="VoiceMMode2_Tx Mixer SLIM_0_TX_MMode2" value="1" />
</path>
+ <path name="voicemmode2-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer VoiceMMode2" value="1" />
+ <ctl name="VoiceMMode2_Tx Mixer SLIM_0_TX_MMode2" value="1" />
+ </path>
+
<path name="voicemmode2-call hdmi">
<ctl name="HDMI_RX_Voice Mixer VoiceMMode2" value="1" />
<ctl name="VoiceMMode2_Tx Mixer SLIM_0_TX_MMode2" value="1" />
@@ -1547,7 +1704,7 @@
</path>
<path name="voicemmode2-call vbat-voice-speaker">
- <path name="echo-reference vbat-speaker" />
+ <path name="echo-reference vbat-speaker-mono" />
<path name="voicemmode2-call"/>
</path>
@@ -1835,29 +1992,29 @@
<ctl name="RX INT0 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="RX0 Digital Volume" value="81" />
<ctl name="ANC Slot" value="6" />
- <ctl name="ADC MUX6" value="DMIC" />
- <ctl name="DMIC MUX6" value="DMIC3" />
+ <ctl name="ADC MUX10" value="DMIC" />
+ <ctl name="DMIC MUX10" value="DMIC3" />
<ctl name="ANC0 FB MUX" value="ANC_IN_EAR" />
<ctl name="ANC EAR Enable Switch" value="1" />
</path>
<path name="headphones">
- <ctl name="SLIM RX0 MUX" value="AIF_MIX1_PB" />
- <ctl name="SLIM RX1 MUX" value="AIF_MIX1_PB" />
- <ctl name="SLIM_0_RX Channels" value="Two" />
- <ctl name="RX INT1_2 MUX" value="RX0" />
- <ctl name="RX INT2_2 MUX" value="RX1" />
+ <ctl name="SLIM RX2 MUX" value="AIF4_PB" />
+ <ctl name="SLIM RX3 MUX" value="AIF4_PB" />
+ <ctl name="SLIM_6_RX Channels" value="Two" />
+ <ctl name="RX INT1_2 MUX" value="RX2" />
+ <ctl name="RX INT2_2 MUX" value="RX3" />
<ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="RX INT2 DEM MUX" value="CLSH_DSM_OUT" />
</path>
<path name="headphones-44.1">
- <ctl name="SLIM RX3 MUX" value="AIF3_PB" />
<ctl name="SLIM RX4 MUX" value="AIF3_PB" />
+ <ctl name="SLIM RX5 MUX" value="AIF3_PB" />
<ctl name="SLIM_5_RX Channels" value="Two" />
<ctl name="SLIM_5_RX SampleRate" value="KHZ_44P1" />
- <ctl name="RX INT1_1 MIX1 INP0" value="RX3" />
- <ctl name="RX INT2_1 MIX1 INP1" value="RX4" />
+ <ctl name="RX INT1_1 MIX1 INP0" value="RX4" />
+ <ctl name="RX INT2_1 MIX1 INP1" value="RX5" />
<ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="RX INT2 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="SPL SRC0 MUX" value="SRC_IN_HPHL" />
@@ -1869,8 +2026,8 @@
<path name="true-native-mode">
<ctl name="RX INT1_2 MUX" value="ZERO" />
<ctl name="RX INT2_2 MUX" value="ZERO" />
- <ctl name= "RX INT1_1 MIX1 INP0" value="RX0" />
- <ctl name= "RX INT2_1 MIX1 INP0" value="RX1" />
+ <ctl name= "RX INT1_1 MIX1 INP0" value="RX2" />
+ <ctl name= "RX INT2_1 MIX1 INP0" value="RX3" />
<ctl name= "RX INT1 SPLINE MIX HPHL Native Switch" value="1" />
<ctl name= "RX INT2 SPLINE MIX HPHR Native Switch" value="1" />
</path>
@@ -1916,14 +2073,7 @@
<path name="speaker-and-headphones">
<path name="headphones" />
- <ctl name="RX INT7_1 MIX1 INP0" value="RX0" />
- <ctl name="RX INT8_1 MIX1 INP0" value="RX1" />
- <ctl name="SpkrLeft COMP Switch" value="1" />
- <ctl name="SpkrRight COMP Switch" value="1" />
- <ctl name="SpkrLeft BOOST Switch" value="1" />
- <ctl name="SpkrRight BOOST Switch" value="1" />
- <ctl name="SpkrLeft SWR DAC_Port Switch" value="1" />
- <ctl name="SpkrRight SWR DAC_Port Switch" value="1" />
+ <path name="wsa-speaker" />
</path>
@@ -1940,42 +2090,33 @@
<ctl name="COMP1 Switch" value="0" />
<ctl name="COMP2 Switch" value="0" />
<ctl name="ANC Function" value="ON" />
- <ctl name="SLIM RX0 MUX" value="AIF_MIX1_PB" />
- <ctl name="SLIM RX1 MUX" value="AIF_MIX1_PB" />
- <ctl name="SLIM_0_RX Channels" value="Two" />
- <ctl name="RX INT1_1 MIX1 INP0" value="RX0" />
- <ctl name="RX INT2_1 MIX1 INP0" value="RX1" />
- <ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
- <ctl name="RX INT2 DEM MUX" value="CLSH_DSM_OUT" />
- <ctl name="HPHL Volume" value="20" />
- <ctl name="HPHR Volume" value="20" />
- <ctl name="RX1 Digital Volume" value="81" />
- <ctl name="RX2 Digital Volume" value="81" />
<ctl name="ANC Slot" value="0" />
- <ctl name="ANC0 FB MUX" value="ANC_IN_HPHL" />
- <ctl name="ANC1 FB MUX" value="ANC_IN_HPHR" />
<ctl name="ADC MUX10" value="AMIC" />
<ctl name="AMIC MUX10" value="ADC3" />
<ctl name="ADC MUX12" value="AMIC" />
<ctl name="AMIC MUX12" value="ADC4" />
- <ctl name="ANC HPHL Enable Switch" value="1" />
- <ctl name="ANC HPHR Enable Switch" value="1" />
+ <ctl name="ANC0 FB MUX" value="ANC_IN_HPHL" />
+ <ctl name="ANC1 FB MUX" value="ANC_IN_HPHR" />
<ctl name="ADC3 Volume" value="8" />
<ctl name="ADC4 Volume" value="8" />
+ <ctl name="SLIM RX2 MUX" value="AIF4_PB" />
+ <ctl name="SLIM RX3 MUX" value="AIF4_PB" />
+ <ctl name="SLIM_6_RX Channels" value="Two" />
+ <ctl name="RX INT1_1 MIX1 INP0" value="RX2" />
+ <ctl name="RX INT2_1 MIX1 INP0" value="RX3" />
+ <ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
+ <ctl name="RX INT2 DEM MUX" value="CLSH_DSM_OUT" />
+ <ctl name="RX1 Digital Volume" value="81" />
+ <ctl name="RX2 Digital Volume" value="81" />
+ <ctl name="ANC HPHL Enable Switch" value="1" />
+ <ctl name="ANC HPHR Enable Switch" value="1" />
+ <ctl name="HPHL Volume" value="20" />
+ <ctl name="HPHR Volume" value="20" />
</path>
<path name="speaker-and-anc-headphones">
<path name="anc-headphones" />
- <ctl name="RX INT7_1 MIX1 INP0" value="RX0" />
- <ctl name="RX INT8_1 MIX1 INP0" value="RX1" />
- <ctl name="SpkrLeft COMP Switch" value="1" />
- <ctl name="SpkrRight COMP Switch" value="1" />
- <ctl name="SpkrLeft BOOST Switch" value="1" />
- <ctl name="SpkrRight BOOST Switch" value="1" />
- <ctl name="SpkrLeft VISENSE Switch" value="1" />
- <ctl name="SpkrRight VISENSE Switch" value="1" />
- <ctl name="SpkrLeft SWR DAC_Port Switch" value="1" />
- <ctl name="SpkrRight SWR DAC_Port Switch" value="1" />
+ <path name="wsa-speaker" />
</path>
<path name="anc-fb-headphones">
@@ -1985,27 +2126,27 @@
<path name="speaker-and-anc-fb-headphones">
<path name="anc-fb-headphones" />
- <ctl name="RX INT7_1 MIX1 INP0" value="RX0" />
- <ctl name="RX INT8_1 MIX1 INP0" value="RX1" />
- <ctl name="SpkrLeft COMP Switch" value="1" />
- <ctl name="SpkrRight COMP Switch" value="1" />
- <ctl name="SpkrLeft BOOST Switch" value="1" />
- <ctl name="SpkrRight BOOST Switch" value="1" />
- <ctl name="SpkrLeft VISENSE Switch" value="1" />
- <ctl name="SpkrRight VISENSE Switch" value="1" />
- <ctl name="SpkrLeft SWR DAC_Port Switch" value="1" />
- <ctl name="SpkrRight SWR DAC_Port Switch" value="1" />
+ <path name="wsa-speaker" />
</path>
<path name="voice-anc-headphones">
<ctl name="COMP1 Switch" value="0" />
<ctl name="COMP2 Switch" value="0" />
<ctl name="ANC Function" value="ON" />
- <ctl name="SLIM RX0 MUX" value="AIF_MIX1_PB" />
- <ctl name="SLIM RX1 MUX" value="AIF_MIX1_PB" />
- <ctl name="SLIM_0_RX Channels" value="Two" />
- <ctl name="RX INT1_1 MIX1 INP0" value="RX0" />
- <ctl name="RX INT2_1 MIX1 INP0" value="RX1" />
+ <ctl name="ANC Slot" value="0" />
+ <ctl name="ADC MUX10" value="AMIC" />
+ <ctl name="AMIC MUX10" value="ADC3" />
+ <ctl name="ADC MUX12" value="AMIC" />
+ <ctl name="AMIC MUX12" value="ADC4" />
+ <ctl name="ANC0 FB MUX" value="ANC_IN_HPHL" />
+ <ctl name="ANC1 FB MUX" value="ANC_IN_HPHR" />
+ <ctl name="ADC3 Volume" value="8" />
+ <ctl name="ADC4 Volume" value="8" />
+ <ctl name="SLIM RX2 MUX" value="AIF4_PB" />
+ <ctl name="SLIM RX3 MUX" value="AIF4_PB" />
+ <ctl name="SLIM_6_RX Channels" value="Two" />
+ <ctl name="RX INT1_1 MIX1 INP0" value="RX2" />
+ <ctl name="RX INT2_1 MIX1 INP0" value="RX3" />
<ctl name="IIR0 Enable Band1" value="1" />
<ctl name="IIR0 Enable Band2" value="1" />
<ctl name="IIR0 Enable Band3" value="1" />
@@ -2014,32 +2155,32 @@
<ctl name="IIR0 INP0 Volume" value="54" />
<ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="RX INT2 DEM MUX" value="CLSH_DSM_OUT" />
- <ctl name="HPHL Volume" value="20" />
- <ctl name="HPHR Volume" value="20" />
<ctl name="RX1 Digital Volume" value="81" />
<ctl name="RX2 Digital Volume" value="81" />
- <ctl name="ANC Slot" value="0" />
- <ctl name="ANC0 FB MUX" value="ANC_IN_HPHL" />
- <ctl name="ANC1 FB MUX" value="ANC_IN_HPHR" />
- <ctl name="ADC MUX10" value="AMIC" />
- <ctl name="AMIC MUX10" value="ADC3" />
- <ctl name="ADC MUX12" value="AMIC" />
- <ctl name="AMIC MUX12" value="ADC4" />
<ctl name="ANC HPHL Enable Switch" value="1" />
<ctl name="ANC HPHR Enable Switch" value="1" />
- <ctl name="ADC3 Volume" value="8" />
- <ctl name="ADC4 Volume" value="8" />
+ <ctl name="HPHL Volume" value="20" />
+ <ctl name="HPHR Volume" value="20" />
</path>
<path name="voice-anc-fb-headphones">
<ctl name="COMP1 Switch" value="0" />
<ctl name="COMP2 Switch" value="0" />
<ctl name="ANC Function" value="ON" />
- <ctl name="SLIM RX0 MUX" value="AIF_MIX1_PB" />
- <ctl name="SLIM RX1 MUX" value="AIF_MIX1_PB" />
- <ctl name="SLIM_0_RX Channels" value="Two" />
- <ctl name="RX INT1_1 MIX1 INP0" value="RX0" />
- <ctl name="RX INT2_1 MIX1 INP0" value="RX1" />
+ <ctl name="ANC Slot" value="1" />
+ <ctl name="ADC MUX10" value="AMIC" />
+ <ctl name="AMIC MUX10" value="ADC3" />
+ <ctl name="ADC MUX12" value="AMIC" />
+ <ctl name="AMIC MUX12" value="ADC4" />
+ <ctl name="ANC0 FB MUX" value="ANC_IN_HPHL" />
+ <ctl name="ANC1 FB MUX" value="ANC_IN_HPHR" />
+ <ctl name="ADC3 Volume" value="8" />
+ <ctl name="ADC4 Volume" value="8" />
+ <ctl name="SLIM RX2 MUX" value="AIF4_PB" />
+ <ctl name="SLIM RX3 MUX" value="AIF4_PB" />
+ <ctl name="SLIM_6_RX Channels" value="Two" />
+ <ctl name="RX INT1_1 MIX1 INP0" value="RX2" />
+ <ctl name="RX INT2_1 MIX1 INP0" value="RX3" />
<ctl name="IIR0 Enable Band1" value="1" />
<ctl name="IIR0 Enable Band2" value="1" />
<ctl name="IIR0 Enable Band3" value="1" />
@@ -2048,21 +2189,12 @@
<ctl name="IIR0 INP0 Volume" value="62" />
<ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="RX INT2 DEM MUX" value="CLSH_DSM_OUT" />
- <ctl name="HPHL Volume" value="14" />
- <ctl name="HPHR Volume" value="14" />
<ctl name="RX1 Digital Volume" value="81" />
<ctl name="RX2 Digital Volume" value="81" />
- <ctl name="ANC Slot" value="1" />
- <ctl name="ANC0 FB MUX" value="ANC_IN_HPHL" />
- <ctl name="ANC1 FB MUX" value="ANC_IN_HPHR" />
- <ctl name="ADC MUX10" value="AMIC" />
- <ctl name="AMIC MUX10" value="ADC3" />
- <ctl name="ADC MUX12" value="AMIC" />
- <ctl name="AMIC MUX12" value="ADC4" />
<ctl name="ANC HPHL Enable Switch" value="1" />
<ctl name="ANC HPHR Enable Switch" value="1" />
- <ctl name="ADC3 Volume" value="8" />
- <ctl name="ADC4 Volume" value="8" />
+ <ctl name="HPHL Volume" value="14" />
+ <ctl name="HPHR Volume" value="14" />
</path>
@@ -2244,9 +2376,9 @@
<!-- TTY devices -->
<path name="tty-headphones">
- <ctl name="SLIM RX0 MUX" value="AIF_MIX1_PB" />
- <ctl name="SLIM_0_RX Channels" value="One" />
- <ctl name="RX INT1_1 MIX1 INP0" value="RX0" />
+ <ctl name="SLIM RX2 MUX" value="AIF4_PB" />
+ <ctl name="SLIM_6_RX Channels" value="One" />
+ <ctl name="RX INT1_1 MIX1 INP0" value="RX2" />
<ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
</path>
diff --git a/configs/msm8953/msm8953.mk b/configs/msm8953/msm8953.mk
index be73c1c..e835484 100644
--- a/configs/msm8953/msm8953.mk
+++ b/configs/msm8953/msm8953.mk
@@ -6,7 +6,7 @@
AUDIO_USE_LL_AS_PRIMARY_OUTPUT := true
AUDIO_FEATURE_ENABLED_HIFI_AUDIO := true
AUDIO_FEATURE_ENABLED_VBAT_MONITOR := true
-AUDIO_FEATURE_ENABLED_VOICE_CONCURRENCY := true
+#AUDIO_FEATURE_ENABLED_VOICE_CONCURRENCY := true
AUDIO_FEATURE_ENABLED_AAC_ADTS_OFFLOAD := true
AUDIO_FEATURE_ENABLED_NT_PAUSE_TIMEOUT := true
AUDIO_FEATURE_ENABLED_ANC_HEADSET := true
@@ -45,7 +45,7 @@
MM_AUDIO_ENABLED_SAFX := true
TARGET_USES_QCOM_MM_AUDIO := true
AUDIO_FEATURE_ENABLED_HW_ACCELERATED_EFFECTS := false
-AUDIO_FEATURE_ENABLED_DS2_DOLBY_DAP := true
+#AUDIO_FEATURE_ENABLED_DS2_DOLBY_DAP := true
AUDIO_FEATURE_ENABLED_SOURCE_TRACKING := true
AUDIO_FEATURE_ENABLED_AUDIOSPHERE := true
diff --git a/configs/msm8996/audio_platform_info.xml b/configs/msm8996/audio_platform_info.xml
index cc551c7..1e0cda9 100644
--- a/configs/msm8996/audio_platform_info.xml
+++ b/configs/msm8996/audio_platform_info.xml
@@ -40,5 +40,15 @@
<param key="perf_lock_opts" value="4, 0x101, 0x704, 0x20F, 0x1E01"/>
<param key="native_audio_mode" value="src"/>
</config_params>
+ <backend_names>
+ <device name="SND_DEVICE_OUT_HEADPHONES" backend="headphones" interface="SLIMBUS_6_RX"/>
+ <device name="SND_DEVICE_OUT_LINE" backend="headphones" interface="SLIMBUS_6_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES" backend="speaker-and-headphones" interface="SLIMBUS_0_RX-and-SLIMBUS_6_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_AND_LINE" backend="speaker-and-headphones" interface="SLIMBUS_0_RX-and-SLIMBUS_6_RX"/>
+ <device name="SND_DEVICE_OUT_VOICE_HEADPHONES" backend="headphones" interface="SLIMBUS_6_RX"/>
+ <device name="SND_DEVICE_OUT_VOICE_LINE" backend="headphones" interface="SLIMBUS_6_RX"/>
+ <device name="SND_DEVICE_OUT_VOICE_TTY_FULL_HEADPHONES" backend="headphones" interface="SLIMBUS_6_RX"/>
+ <device name="SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES" backend="headphones" interface="SLIMBUS_6_RX"/>
+ </backend_names>
</audio_platform_info>
diff --git a/configs/msm8996/mixer_paths_tasha.xml b/configs/msm8996/mixer_paths_tasha.xml
index c5d121d..9a97964 100644
--- a/configs/msm8996/mixer_paths_tasha.xml
+++ b/configs/msm8996/mixer_paths_tasha.xml
@@ -83,6 +83,7 @@
<ctl name="SLIMBUS_3_RX Port Mixer MI2S_TX" value="0" />
<ctl name="HDMI_RX Port Mixer MI2S_TX" value="0" />
<ctl name="SLIMBUS_0_RX Port Mixer SLIM_0_TX" value="0" />
+ <ctl name="SLIMBUS_6_RX Port Mixer SLIM_0_TX" value="0" />
<ctl name="AUX_PCM_RX Audio Mixer MultiMedia1" value="0" />
<ctl name="AUX_PCM_RX Audio Mixer MultiMedia4" value="0" />
<ctl name="AUX_PCM_RX Audio Mixer MultiMedia5" value="0" />
@@ -127,27 +128,40 @@
<ctl name="HDMI Mixer MultiMedia15" value="0" />
<ctl name="HDMI Mixer MultiMedia16" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia1" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia1" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia2" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia2" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia3" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia3" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia4" value="0" />
<ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia4" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia4" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia5" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia5" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia7" value="0" />
<ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia7" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia7" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia10" value="0" />
<ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia10" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia10" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia11" value="0" />
<ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia11" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia11" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia12" value="0" />
<ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia12" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia12" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia13" value="0" />
<ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia13" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia13" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia14" value="0" />
<ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia14" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia14" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia15" value="0" />
<ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia15" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia15" value="0" />
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia16" value="0" />
<ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia16" value="0" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia16" value="0" />
<ctl name="MultiMedia6 Mixer SLIM_0_TX" value="0" />
<ctl name="IIR0 INP0 MUX" value="ZERO" />
<ctl name="IIR0 INP1 MUX" value="ZERO" />
@@ -286,8 +300,10 @@
<ctl name="SLIM_0_TX Channels" value="One" />
<ctl name="SLIM_1_TX Channels" value="One" />
<ctl name="SLIM RX0 MUX" value="ZERO" />
+ <ctl name="SLIM RX2 MUX" value="ZERO" />
<ctl name="SLIM RX3 MUX" value="ZERO" />
<ctl name="SLIM RX4 MUX" value="ZERO" />
+ <ctl name="SLIM RX5 MUX" value="ZERO" />
<ctl name="EAR PA Gain" value="G_6_DB" />
<ctl name="SpkrLeft COMP Switch" value="0" />
<ctl name="SpkrRight COMP Switch" value="0" />
@@ -308,6 +324,7 @@
<ctl name="AIF1_CAP Mixer SLIM TX1" value="0"/>
<ctl name="AIF1_CAP Mixer SLIM TX0" value="0"/>
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia4" value="0" />
+ <ctl name="SLIMBUS_6_RX Port Mixer AUX_PCM_UL_TX" value="0" />
<ctl name="HDMI Mixer MultiMedia4" value="0" />
<!-- HFP start -->
<ctl name="HFP_PRI_AUX_UL_HL Switch" value="0" />
@@ -338,6 +355,7 @@
<!-- Voice -->
<ctl name="SLIM_0_RX_Voice Mixer CSVoice" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer CSVoice" value="0" />
<ctl name="Voice_Tx Mixer SLIM_0_TX_Voice" value="0" />
<!-- Voice HDMI -->
<ctl name="HDMI_RX_Voice Mixer CSVoice" value="0" />
@@ -352,6 +370,7 @@
<!-- Voice2 -->
<ctl name="SLIM_0_RX_Voice Mixer Voice2" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer Voice2" value="0" />
<ctl name="Voice2_Tx Mixer SLIM_0_TX_Voice2" value="0" />
<!-- Voice2 HDMI -->
<ctl name="HDMI_RX_Voice Mixer Voice2" value="0" />
@@ -365,6 +384,7 @@
<!-- VoLTE -->
<ctl name="SLIM_0_RX_Voice Mixer VoLTE" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer VoLTE" value="0" />
<ctl name="VoLTE_Tx Mixer SLIM_0_TX_VoLTE" value="0" />
<!-- VoLTE HDMI -->
<ctl name="HDMI_RX_Voice Mixer VoLTE" value="0" />
@@ -378,6 +398,7 @@
<!-- Multimode Voice1 -->
<ctl name="SLIM_0_RX_Voice Mixer VoiceMMode1" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer VoiceMMode1" value="0" />
<ctl name="VoiceMMode1_Tx Mixer SLIM_0_TX_MMode1" value="0" />
<!-- Multimode Voice1 HDMI -->
<ctl name="HDMI_RX_Voice Mixer VoiceMMode1" value="0" />
@@ -391,6 +412,7 @@
<!-- Multimode Voice2 -->
<ctl name="SLIM_0_RX_Voice Mixer VoiceMMode2" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer VoiceMMode2" value="0" />
<ctl name="VoiceMMode2_Tx Mixer SLIM_0_TX_MMode2" value="0" />
<!-- Multimode Voice2 HDMI -->
<ctl name="HDMI_RX_Voice Mixer VoiceMMode2" value="0" />
@@ -427,6 +449,7 @@
<!-- compress-voip-call start -->
<ctl name="SLIM_0_RX_Voice Mixer Voip" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer Voip" value="0" />
<ctl name="Voip_Tx Mixer SLIM_0_TX_Voip" value="0" />
<ctl name="AUX_PCM_RX_Voice Mixer Voip" value="0" />
<ctl name="Voip_Tx Mixer AUX_PCM_TX_Voip" value="0" />
@@ -436,6 +459,7 @@
<!-- QCHAT start -->
<ctl name="SLIM_0_RX_Voice Mixer QCHAT" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer QCHAT" value="0" />
<ctl name="QCHAT_Tx Mixer SLIM_0_TX_QCHAT" value="0" />
<ctl name="AUX_PCM_RX_Voice Mixer QCHAT" value="0" />
<ctl name="QCHAT_Tx Mixer AUX_PCM_TX_QCHAT" value="0" />
@@ -443,6 +467,7 @@
<!-- VoWLAN start -->
<ctl name="SLIM_0_RX_Voice Mixer VoWLAN" value="0" />
+ <ctl name="SLIM_6_RX_Voice Mixer VoWLAN" value="0" />
<ctl name="VoWLAN_Tx Mixer SLIM_0_TX_VoWLAN" value="0" />
<ctl name="HDMI_RX_Voice Mixer VoWLAN" value="0" />
<ctl name="AUX_PCM_RX_Voice Mixer VoWLAN" value="0" />
@@ -533,6 +558,7 @@
<!-- ADSP testfwk -->
<ctl name="SLIMBUS_DL_HL Switch" value="0" />
+ <ctl name="SLIMBUS6_DL_HL Switch" value="0" />
<!-- ADSP testfwk end-->
<ctl name="AFE_PCM_RX Audio Mixer MultiMedia3" value="0" />
@@ -566,7 +592,7 @@
</path>
<path name="echo-reference headphones">
- <ctl name="AUDIO_REF_EC_UL1 MUX" value="SLIM_RX" />
+ <ctl name="AUDIO_REF_EC_UL1 MUX" value="SLIM_6_RX" />
</path>
<path name="echo-reference headphones-44.1">
@@ -614,6 +640,11 @@
</path>
<path name="deep-buffer-playback headphones">
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia1" value="1" />
+ </path>
+
+ <path name="deep-buffer-playback speaker-and-headphones">
+ <path name="deep-buffer-playback headphones" />
<path name="deep-buffer-playback" />
</path>
@@ -658,6 +689,11 @@
</path>
<path name="low-latency-playback headphones">
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia5" value="1" />
+ </path>
+
+ <path name="low-latency-playback speaker-and-headphones">
+ <path name="low-latency-playback headphones" />
<path name="low-latency-playback" />
</path>
@@ -670,7 +706,7 @@
</path>
<path name="audio-ull-playback headphones">
- <path name="audio-ull-playback" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia3" value="1" />
</path>
<path name="audio-ull-playback speaker-and-headphones">
@@ -748,13 +784,18 @@
</path>
<path name="compress-offload-playback headphones">
- <path name="compress-offload-playback" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia4" value="1" />
</path>
<path name="compress-offload-playback headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback2">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia7" value="1" />
</path>
@@ -792,13 +833,18 @@
</path>
<path name="compress-offload-playback2 headphones">
- <path name="compress-offload-playback2" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia7" value="1" />
</path>
<path name="compress-offload-playback2 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback3">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia10" value="1" />
</path>
@@ -836,13 +882,18 @@
</path>
<path name="compress-offload-playback3 headphones">
- <path name="compress-offload-playback3" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia10" value="1" />
</path>
<path name="compress-offload-playback3 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback4">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia11" value="1" />
</path>
@@ -880,13 +931,18 @@
</path>
<path name="compress-offload-playback4 headphones">
- <path name="compress-offload-playback4" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia11" value="1" />
</path>
<path name="compress-offload-playback4 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback5">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia12" value="1" />
</path>
@@ -924,13 +980,18 @@
</path>
<path name="compress-offload-playback5 headphones">
- <path name="compress-offload-playback5" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia12" value="1" />
</path>
<path name="compress-offload-playback5 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback6">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia13" value="1" />
</path>
@@ -968,13 +1029,18 @@
</path>
<path name="compress-offload-playback6 headphones">
- <path name="compress-offload-playback6" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia13" value="1" />
</path>
<path name="compress-offload-playback6 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback7">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia14" value="1" />
</path>
@@ -1012,13 +1078,18 @@
</path>
<path name="compress-offload-playback7 headphones">
- <path name="compress-offload-playback7" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia14" value="1" />
</path>
<path name="compress-offload-playback7 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback8">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia15" value="1" />
</path>
@@ -1056,13 +1127,18 @@
</path>
<path name="compress-offload-playback8 headphones">
- <path name="compress-offload-playback8" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia15" value="1" />
</path>
<path name="compress-offload-playback8 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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-playback9">
<ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia16" value="1" />
</path>
@@ -1100,13 +1176,18 @@
</path>
<path name="compress-offload-playback9 headphones">
- <path name="compress-offload-playback9" />
+ <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia16" value="1" />
</path>
<path name="compress-offload-playback9 headphones-44.1">
<ctl name="SLIMBUS_5_RX 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="audio-record">
<ctl name="MultiMedia1 Mixer SLIM_0_TX" value="1" />
</path>
@@ -1202,6 +1283,11 @@
<ctl name="Voice_Tx Mixer AFE_PCM_TX_Voice" value="1" />
</path>
+ <path name="voice-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer CSVoice" value="1" />
+ <ctl name="Voice_Tx Mixer SLIM_0_TX_Voice" value="1" />
+ </path>
+
<path name="voice2-call">
<ctl name="SLIM_0_RX_Voice Mixer Voice2" value="1" />
<ctl name="Voice2_Tx Mixer SLIM_0_TX_Voice2" value="1" />
@@ -1242,6 +1328,11 @@
<path name="voice2-call"/>
</path>
+ <path name="voice2-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer Voice2" value="1" />
+ <ctl name="Voice2_Tx Mixer SLIM_0_TX_Voice2" value="1" />
+ </path>
+
<path name="play-fm">
<ctl name="Tert MI2S LOOPBACK Volume" value="1" />
<ctl name="SLIMBUS_0_RX Port Mixer TERT_MI2S_TX" value="1" />
@@ -1249,7 +1340,9 @@
</path>
<path name="play-fm headphones">
- <path name="play-fm" />
+ <ctl name="Tert MI2S LOOPBACK Volume" value="1" />
+ <ctl name="SLIMBUS_6_RX Port Mixer TERT_MI2S_TX" value="1" />
+ <ctl name="SLIMBUS6_DL_HL Switch" value="1" />
</path>
<path name="incall-rec-uplink">
@@ -1382,16 +1475,34 @@
<ctl name="SLIMBUS_DL_HL Switch" value="1" />
</path>
+ <path name="hfp-sco headphones">
+ <ctl name="HFP_PRI_AUX_UL_HL Switch" value="1" />
+ <ctl name="SLIMBUS_6_RX Port Mixer AUX_PCM_UL_TX" value="1" />
+ <ctl name="AUX_PCM_RX Audio Mixer MultiMedia6" value="1" />
+ <ctl name="MultiMedia6 Mixer SLIM_0_TX" value="1" />
+ <ctl name="SLIMBUS6_DL_HL Switch" value="1" />
+ </path>
+
<path name="hfp-sco-wb">
<ctl name="AUX PCM SampleRate" value="16000" />
<path name="hfp-sco" />
</path>
+ <path name="hfp-sco-wb headphones">
+ <ctl name="AUX PCM SampleRate" value="16000" />
+ <path name="hfp-sco headphones" />
+ </path>
+
<path name="volte-call">
<ctl name="SLIM_0_RX_Voice Mixer VoLTE" value="1" />
<ctl name="VoLTE_Tx Mixer SLIM_0_TX_VoLTE" value="1" />
</path>
+ <path name="volte-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer VoLTE" value="1" />
+ <ctl name="VoLTE_Tx Mixer SLIM_0_TX_VoLTE" value="1" />
+ </path>
+
<path name="volte-call hdmi">
<ctl name="HDMI_RX_Voice Mixer VoLTE" value="1" />
<ctl name="VoLTE_Tx Mixer SLIM_0_TX_VoLTE" value="1" />
@@ -1427,6 +1538,12 @@
<ctl name="Voip_Tx Mixer SLIM_0_TX_Voip" value="1" />
</path>
+ <path name="compress-voip-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer Voip" value="1" />
+ <ctl name="Voip_Tx Mixer SLIM_0_TX_Voip" value="1" />
+ </path>
+
+
<path name="compress-voip-call bt-sco">
<ctl name="AUX_PCM_RX_Voice Mixer Voip" value="1" />
<ctl name="Voip_Tx Mixer AUX_PCM_TX_Voip" value="1" />
@@ -1458,6 +1575,11 @@
<ctl name="VoWLAN_Tx Mixer SLIM_0_TX_VoWLAN" value="1" />
</path>
+ <path name="vowlan-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer VoWLAN" value="1" />
+ <ctl name="VoWLAN_Tx Mixer SLIM_0_TX_VoWLAN" value="1" />
+ </path>
+
<path name="vowlan-call hdmi">
<ctl name="HDMI_RX_Voice Mixer VoWLAN" value="1" />
<ctl name="VoWLAN_Tx Mixer SLIM_0_TX_VoWLAN" value="1" />
@@ -1493,6 +1615,11 @@
<ctl name="VoiceMMode1_Tx Mixer SLIM_0_TX_MMode1" value="1" />
</path>
+ <path name="voicemmode1-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer VoiceMMode1" value="1" />
+ <ctl name="VoiceMMode1_Tx Mixer SLIM_0_TX_MMode1" value="1" />
+ </path>
+
<path name="voicemmode1-call hdmi">
<ctl name="HDMI_RX_Voice Mixer VoiceMMode1" value="1" />
<ctl name="VoiceMMode1_Tx Mixer SLIM_0_TX_MMode1" value="1" />
@@ -1528,6 +1655,11 @@
<ctl name="VoiceMMode2_Tx Mixer SLIM_0_TX_MMode2" value="1" />
</path>
+ <path name="voicemmode2-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer VoiceMMode2" value="1" />
+ <ctl name="VoiceMMode2_Tx Mixer SLIM_0_TX_MMode2" value="1" />
+ </path>
+
<path name="voicemmode2-call hdmi">
<ctl name="HDMI_RX_Voice Mixer VoiceMMode2" value="1" />
<ctl name="VoiceMMode2_Tx Mixer SLIM_0_TX_MMode2" value="1" />
@@ -1596,6 +1728,7 @@
</path>
<path name="spkr-vi-record">
+ <ctl name="SLIM0_RX_VI_FB_LCH_MUX" value="SLIM4_TX" />
</path>
<!-- These are actual sound device specific mixer settings -->
@@ -1865,22 +1998,22 @@
</path>
<path name="headphones">
- <ctl name="SLIM RX0 MUX" value="AIF_MIX1_PB" />
- <ctl name="SLIM RX1 MUX" value="AIF_MIX1_PB" />
- <ctl name="SLIM_0_RX Channels" value="Two" />
- <ctl name="RX INT1_2 MUX" value="RX0" />
- <ctl name="RX INT2_2 MUX" value="RX1" />
+ <ctl name="SLIM RX2 MUX" value="AIF4_PB" />
+ <ctl name="SLIM RX3 MUX" value="AIF4_PB" />
+ <ctl name="SLIM_6_RX Channels" value="Two" />
+ <ctl name="RX INT1_2 MUX" value="RX2" />
+ <ctl name="RX INT2_2 MUX" value="RX3" />
<ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="RX INT2 DEM MUX" value="CLSH_DSM_OUT" />
</path>
<path name="headphones-44.1">
- <ctl name="SLIM RX3 MUX" value="AIF3_PB" />
<ctl name="SLIM RX4 MUX" value="AIF3_PB" />
+ <ctl name="SLIM RX5 MUX" value="AIF3_PB" />
<ctl name="SLIM_5_RX Channels" value="Two" />
<ctl name="SLIM_5_RX SampleRate" value="KHZ_44P1" />
- <ctl name="RX INT1_1 MIX1 INP0" value="RX3" />
- <ctl name="RX INT2_1 MIX1 INP1" value="RX4" />
+ <ctl name="RX INT1_1 MIX1 INP0" value="RX4" />
+ <ctl name="RX INT2_1 MIX1 INP1" value="RX5" />
<ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="RX INT2 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="SPL SRC0 MUX" value="SRC_IN_HPHL" />
@@ -1893,8 +2026,8 @@
<path name="true-native-mode">
<ctl name="RX INT1_2 MUX" value="ZERO" />
<ctl name="RX INT2_2 MUX" value="ZERO" />
- <ctl name= "RX INT1_1 MIX1 INP0" value="RX0" />
- <ctl name= "RX INT2_1 MIX1 INP0" value="RX1" />
+ <ctl name= "RX INT1_1 MIX1 INP0" value="RX2" />
+ <ctl name= "RX INT2_1 MIX1 INP0" value="RX3" />
<ctl name= "RX INT1 SPLINE MIX HPHL Native Switch" value="1" />
<ctl name= "RX INT2 SPLINE MIX HPHR Native Switch" value="1" />
</path>
@@ -1953,16 +2086,7 @@
<path name="speaker-and-headphones">
<path name="headphones" />
- <ctl name="RX INT7_1 MIX1 INP0" value="RX0" />
- <ctl name="RX INT8_1 MIX1 INP0" value="RX1" />
- <ctl name="SpkrLeft COMP Switch" value="1" />
- <ctl name="SpkrRight COMP Switch" value="1" />
- <ctl name="SpkrLeft BOOST Switch" value="1" />
- <ctl name="SpkrRight BOOST Switch" value="1" />
- <ctl name="SpkrLeft VISENSE Switch" value="1" />
- <ctl name="SpkrRight VISENSE Switch" value="1" />
- <ctl name="SpkrLeft SWR DAC_Port Switch" value="1" />
- <ctl name="SpkrRight SWR DAC_Port Switch" value="1" />
+ <path name="speaker" />
</path>
<path name="speaker-and-line">
@@ -1971,18 +2095,8 @@
<path name="speaker-and-headphones-liquid">
<path name="headphones" />
- <ctl name="RX INT7_1 MIX1 INP0" value="RX0" />
- <ctl name="RX INT8_1 MIX1 INP0" value="RX1" />
- <ctl name="SpkrLeft COMP Switch" value="1" />
- <ctl name="SpkrRight COMP Switch" value="1" />
- <ctl name="SpkrLeft BOOST Switch" value="1" />
- <ctl name="SpkrRight BOOST Switch" value="1" />
- <ctl name="SpkrLeft VISENSE Switch" value="1" />
- <ctl name="SpkrRight VISENSE Switch" value="1" />
- <ctl name="SpkrLeft SWR DAC_Port Switch" value="1" />
- <ctl name="SpkrRight SWR DAC_Port Switch" value="1" />
+ <path name="speaker" />
</path>
-
<path name="speaker-and-line-liquid">
<path name="speaker-and-headphones-liquid" />
</path>
@@ -2006,11 +2120,11 @@
<ctl name="ANC1 FB MUX" value="ANC_IN_HPHR" />
<ctl name="ADC3 Volume" value="8" />
<ctl name="ADC4 Volume" value="8" />
- <ctl name="SLIM RX0 MUX" value="AIF_MIX1_PB" />
- <ctl name="SLIM RX1 MUX" value="AIF_MIX1_PB" />
- <ctl name="SLIM_0_RX Channels" value="Two" />
- <ctl name="RX INT1_1 MIX1 INP0" value="RX0" />
- <ctl name="RX INT2_1 MIX1 INP0" value="RX1" />
+ <ctl name="SLIM RX2 MUX" value="AIF4_PB" />
+ <ctl name="SLIM RX3 MUX" value="AIF4_PB" />
+ <ctl name="SLIM_6_RX Channels" value="Two" />
+ <ctl name="RX INT1_1 MIX1 INP0" value="RX2" />
+ <ctl name="RX INT2_1 MIX1 INP0" value="RX3" />
<ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="RX INT2 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="RX1 Digital Volume" value="81" />
@@ -2023,16 +2137,7 @@
<path name="speaker-and-anc-headphones">
<path name="anc-headphones" />
- <ctl name="RX INT7_1 MIX1 INP0" value="RX0" />
- <ctl name="RX INT8_1 MIX1 INP0" value="RX1" />
- <ctl name="SpkrLeft COMP Switch" value="1" />
- <ctl name="SpkrRight COMP Switch" value="1" />
- <ctl name="SpkrLeft BOOST Switch" value="1" />
- <ctl name="SpkrRight BOOST Switch" value="1" />
- <ctl name="SpkrLeft VISENSE Switch" value="1" />
- <ctl name="SpkrRight VISENSE Switch" value="1" />
- <ctl name="SpkrLeft SWR DAC_Port Switch" value="1" />
- <ctl name="SpkrRight SWR DAC_Port Switch" value="1" />
+ <path name="speaker" />
</path>
<path name="anc-fb-headphones">
@@ -2042,16 +2147,7 @@
<path name="speaker-and-anc-fb-headphones">
<path name="anc-fb-headphones" />
- <ctl name="RX INT7_1 MIX1 INP0" value="RX0" />
- <ctl name="RX INT8_1 MIX1 INP0" value="RX1" />
- <ctl name="SpkrLeft COMP Switch" value="1" />
- <ctl name="SpkrRight COMP Switch" value="1" />
- <ctl name="SpkrLeft BOOST Switch" value="1" />
- <ctl name="SpkrRight BOOST Switch" value="1" />
- <ctl name="SpkrLeft VISENSE Switch" value="1" />
- <ctl name="SpkrRight VISENSE Switch" value="1" />
- <ctl name="SpkrLeft SWR DAC_Port Switch" value="1" />
- <ctl name="SpkrRight SWR DAC_Port Switch" value="1" />
+ <path name="speaker" />
</path>
<path name="voice-anc-headphones">
@@ -2067,11 +2163,11 @@
<ctl name="ANC1 FB MUX" value="ANC_IN_HPHR" />
<ctl name="ADC3 Volume" value="8" />
<ctl name="ADC4 Volume" value="8" />
- <ctl name="SLIM RX0 MUX" value="AIF_MIX1_PB" />
- <ctl name="SLIM RX1 MUX" value="AIF_MIX1_PB" />
- <ctl name="SLIM_0_RX Channels" value="Two" />
- <ctl name="RX INT1_1 MIX1 INP0" value="RX0" />
- <ctl name="RX INT2_1 MIX1 INP0" value="RX1" />
+ <ctl name="SLIM RX2 MUX" value="AIF4_PB" />
+ <ctl name="SLIM RX3 MUX" value="AIF4_PB" />
+ <ctl name="SLIM_6_RX Channels" value="Two" />
+ <ctl name="RX INT1_1 MIX1 INP0" value="RX2" />
+ <ctl name="RX INT2_1 MIX1 INP0" value="RX3" />
<ctl name="RX HPH Mode" value="CLS_H_LP" />
<ctl name="IIR0 Enable Band1" value="1" />
<ctl name="IIR0 Enable Band2" value="1" />
@@ -2102,11 +2198,11 @@
<ctl name="ANC1 FB MUX" value="ANC_IN_HPHR" />
<ctl name="ADC3 Volume" value="8" />
<ctl name="ADC4 Volume" value="8" />
- <ctl name="SLIM RX0 MUX" value="AIF_MIX1_PB" />
- <ctl name="SLIM RX1 MUX" value="AIF_MIX1_PB" />
- <ctl name="SLIM_0_RX Channels" value="Two" />
- <ctl name="RX INT1_1 MIX1 INP0" value="RX0" />
- <ctl name="RX INT2_1 MIX1 INP0" value="RX1" />
+ <ctl name="SLIM RX2 MUX" value="AIF4_PB" />
+ <ctl name="SLIM RX3 MUX" value="AIF4_PB" />
+ <ctl name="SLIM_6_RX Channels" value="Two" />
+ <ctl name="RX INT1_1 MIX1 INP0" value="RX2" />
+ <ctl name="RX INT2_1 MIX1 INP0" value="RX3" />
<ctl name="RX HPH Mode" value="CLS_H_LP" />
<ctl name="IIR0 Enable Band1" value="1" />
<ctl name="IIR0 Enable Band2" value="1" />
@@ -2357,9 +2453,9 @@
<!-- TTY devices -->
<path name="tty-headphones">
- <ctl name="SLIM RX0 MUX" value="AIF_MIX1_PB" />
- <ctl name="SLIM_0_RX Channels" value="One" />
- <ctl name="RX INT1_1 MIX1 INP0" value="RX0" />
+ <ctl name="SLIM RX2 MUX" value="AIF4_PB" />
+ <ctl name="SLIM_6_RX Channels" value="One" />
+ <ctl name="RX INT1_1 MIX1 INP0" value="RX2" />
<ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
</path>
diff --git a/hal/audio_extn/spkr_protection.c b/hal/audio_extn/spkr_protection.c
index 547266e..8e52402 100644
--- a/hal/audio_extn/spkr_protection.c
+++ b/hal/audio_extn/spkr_protection.c
@@ -1338,7 +1338,8 @@
property_get("ro.board.platform", platform, "");
if (!strncmp("apq8084", platform, sizeof("apq8084"))) {
platform_set_snd_device_backend(SND_DEVICE_OUT_VOICE_SPEAKER,
- "speaker-protected");
+ "speaker-protected",
+ "SLIMBUS_0_RX");
}
}
}
diff --git a/hal/audio_extn/utils.c b/hal/audio_extn/utils.c
index 5a5ca52..b3ba2b5 100644
--- a/hal/audio_extn/utils.c
+++ b/hal/audio_extn/utils.c
@@ -615,8 +615,10 @@
app_type_cfg[len++] = platform_get_default_app_type(adev->platform);
app_type_cfg[len++] = acdb_dev_id;
app_type_cfg[len++] = sample_rate;
- ALOGI("%s PLAYBACK app_type %d, acdb_dev_id %d, sample_rate %d",
- __func__, platform_get_default_app_type(adev->platform), acdb_dev_id, sample_rate);
+ ALOGI("%s:%d PLAYBACK app_type %d, acdb_dev_id %d, sample_rate %d",
+ __func__, __LINE__,
+ platform_get_default_app_type(adev->platform),
+ acdb_dev_id, sample_rate);
} else if (usecase->type == PCM_PLAYBACK) {
if (usecase->stream.out->devices & AUDIO_DEVICE_OUT_SPEAKER) {
@@ -646,8 +648,10 @@
else
app_type_cfg[len++] = sample_rate;
- ALOGI("%s PLAYBACK app_type %d, acdb_dev_id %d, sample_rate %d",
- __func__, usecase->stream.out->app_type_cfg.app_type, acdb_dev_id, sample_rate);
+ ALOGI("%s:%d PLAYBACK app_type %d, acdb_dev_id %d, sample_rate %d",
+ __func__, __LINE__,
+ platform_get_default_app_type(adev->platform),
+ acdb_dev_id, sample_rate);
if ((24 == usecase->stream.out->bit_width) &&
(usecase->stream.out->devices & AUDIO_DEVICE_OUT_SPEAKER)) {
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index b92d809..c582bd2 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -501,6 +501,8 @@
int enable_snd_device(struct audio_device *adev,
snd_device_t snd_device)
{
+ int i, num_devices = 0;
+ snd_device_t new_snd_devices[SND_DEVICE_OUT_END];
char device_name[DEVICE_NAME_MAX_SIZE] = {0};
if (snd_device < SND_DEVICE_MIN ||
@@ -545,6 +547,11 @@
audio_extn_dev_arbi_release(snd_device);
return -EINVAL;
}
+ } else if (platform_can_split_snd_device(adev->platform, snd_device,
+ &num_devices, new_snd_devices)) {
+ for (i = 0; i < num_devices; i++) {
+ enable_snd_device(adev, new_snd_devices[i]);
+ }
} else {
ALOGD("%s: snd_device(%d: %s)", __func__, snd_device, device_name);
/* due to the possibility of calibration overwrite between listen
@@ -580,6 +587,8 @@
int disable_snd_device(struct audio_device *adev,
snd_device_t snd_device)
{
+ int i, num_devices = 0;
+ snd_device_t new_snd_devices[SND_DEVICE_OUT_END];
char device_name[DEVICE_NAME_MAX_SIZE] = {0};
if (snd_device < SND_DEVICE_MIN ||
@@ -613,6 +622,11 @@
if (platform_can_enable_spkr_prot_on_device(snd_device) &&
audio_extn_spkr_prot_is_enabled()) {
audio_extn_spkr_prot_stop_processing(snd_device);
+ } else if (platform_can_split_snd_device(adev->platform, snd_device,
+ &num_devices, new_snd_devices)) {
+ for (i = 0; i < num_devices; i++) {
+ disable_snd_device(adev, new_snd_devices[i]);
+ }
} else {
audio_route_reset_and_update_path(adev->audio_route, device_name);
}
@@ -639,15 +653,13 @@
}
static void check_usecases_codec_backend(struct audio_device *adev,
- struct audio_usecase *uc_info,
- snd_device_t snd_device)
+ struct audio_usecase *uc_info,
+ snd_device_t snd_device)
{
struct listnode *node;
struct audio_usecase *usecase;
bool switch_device[AUDIO_USECASE_MAX];
int i, num_uc_to_switch = 0;
- int backend_idx = DEFAULT_CODEC_BACKEND;
- int usecase_backend_idx = DEFAULT_CODEC_BACKEND;
/*
* This function is to make sure that all the usecases that are active on
@@ -671,7 +683,6 @@
ALOGD("%s:becf: force routing %d", __func__, force_routing);
- backend_idx = platform_get_backend_index(snd_device);
/* Disable all the usecases on the shared backend other than the
* specified usecase.
*/
@@ -681,26 +692,22 @@
list_for_each(node, &adev->usecase_list) {
usecase = node_to_item(node, struct audio_usecase, list);
- if (usecase == uc_info)
- continue;
- usecase_backend_idx = platform_get_backend_index(usecase->out_snd_device);
-
- ALOGD("%s:becf: (%d) check_usecases backend_idx: %d,"
- "usecase_backend_idx: %d, curr device: %s, usecase device:%s",
- __func__, i, backend_idx, usecase_backend_idx,
+ ALOGD("%s:becf: (%d) check_usecases curr device: %s, usecase device:%s "
+ "backends match %d",__func__, i,
platform_get_snd_device_name(snd_device),
- platform_get_snd_device_name(usecase->out_snd_device));
-
+ platform_get_snd_device_name(usecase->out_snd_device),
+ platform_check_backends_match(snd_device, usecase->out_snd_device));
if (usecase->type != PCM_CAPTURE &&
- (usecase->out_snd_device != snd_device || force_routing) &&
- usecase->devices & AUDIO_DEVICE_OUT_ALL_CODEC_BACKEND &&
- usecase_backend_idx == backend_idx) {
- ALOGD("%s:becf: check_usecases (%s) is active on (%s) - disabling ..",
- __func__, use_case_table[usecase->id],
- platform_get_snd_device_name(usecase->out_snd_device));
- disable_audio_route(adev, usecase);
- switch_device[usecase->id] = true;
- num_uc_to_switch++;
+ usecase != uc_info &&
+ (usecase->out_snd_device != snd_device || force_routing) &&
+ usecase->devices & AUDIO_DEVICE_OUT_ALL_CODEC_BACKEND &&
+ platform_check_backends_match(snd_device, usecase->out_snd_device)) {
+ ALOGD("%s:becf: check_usecases (%s) is active on (%s) - disabling ..",
+ __func__, use_case_table[usecase->id],
+ platform_get_snd_device_name(usecase->out_snd_device));
+ disable_audio_route(adev, usecase);
+ switch_device[usecase->id] = true;
+ num_uc_to_switch++;
}
}
@@ -1020,12 +1027,15 @@
* be switched to new device when select_devices() is called for voice call
* usecase. This is to avoid switching devices for voice call when
* check_usecases_codec_backend() is called below.
+ * choose voice call device only if the use case device is
+ * also using the codec backend
*/
if (voice_is_in_call(adev) && adev->mode != AUDIO_MODE_NORMAL) {
vc_usecase = get_usecase_from_list(adev,
get_usecase_id_from_usecase_type(adev, VOICE_CALL));
- if ((vc_usecase) && ((vc_usecase->devices & AUDIO_DEVICE_OUT_ALL_CODEC_BACKEND) ||
- (usecase->devices == AUDIO_DEVICE_IN_VOICE_CALL))) {
+ if (((vc_usecase) && ((vc_usecase->devices & AUDIO_DEVICE_OUT_ALL_CODEC_BACKEND) &&
+ (usecase->devices & AUDIO_DEVICE_OUT_ALL_CODEC_BACKEND))) ||
+ (usecase->devices == AUDIO_DEVICE_IN_VOICE_CALL)) {
in_snd_device = vc_usecase->in_snd_device;
out_snd_device = vc_usecase->out_snd_device;
}
diff --git a/hal/msm8916/platform.c b/hal/msm8916/platform.c
index a5c3905..5e38197 100644
--- a/hal/msm8916/platform.c
+++ b/hal/msm8916/platform.c
@@ -659,7 +659,8 @@
{TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_QMIC_AEC_NS)},
};
-static char * backend_table[SND_DEVICE_MAX] = {0};
+static char * backend_tag_table[SND_DEVICE_MAX] = {0};
+static char * hw_interface_table[SND_DEVICE_MAX] = {0};
static struct name_to_index usecase_name_index[AUDIO_USECASE_MAX] = {
{TO_NAME_INDEX(USECASE_AUDIO_PLAYBACK_DEEP_BUFFER)},
@@ -1139,33 +1140,37 @@
const char *MEDIA_MIMETYPE_AUDIO_APE = "audio/x-ape";
for (dev = 0; dev < SND_DEVICE_MAX; dev++) {
- backend_table[dev] = NULL;
+ backend_tag_table[dev] = NULL;
+ hw_interface_table[dev] = NULL;
}
for (dev = 0; dev < SND_DEVICE_MAX; dev++) {
backend_bit_width_table[dev] = CODEC_BACKEND_DEFAULT_BIT_WIDTH;
}
- // TBD - do these go to the platform-info.xml file.
- // will help in avoiding strdups here
- backend_table[SND_DEVICE_IN_BT_SCO_MIC] = strdup("bt-sco");
- backend_table[SND_DEVICE_IN_BT_SCO_MIC_WB] = strdup("bt-sco-wb");
- backend_table[SND_DEVICE_IN_BT_SCO_MIC_NREC] = strdup("bt-sco");
- backend_table[SND_DEVICE_IN_BT_SCO_MIC_WB_NREC] = strdup("bt-sco-wb");
- backend_table[SND_DEVICE_OUT_BT_SCO] = strdup("bt-sco");
- backend_table[SND_DEVICE_OUT_BT_SCO_WB] = strdup("bt-sco-wb");
- backend_table[SND_DEVICE_OUT_HDMI] = strdup("hdmi");
- backend_table[SND_DEVICE_OUT_SPEAKER_AND_HDMI] = strdup("speaker-and-hdmi");
- backend_table[SND_DEVICE_OUT_VOICE_TX] = strdup("afe-proxy");
- backend_table[SND_DEVICE_IN_VOICE_RX] = strdup("afe-proxy");
- backend_table[SND_DEVICE_OUT_AFE_PROXY] = strdup("afe-proxy");
- backend_table[SND_DEVICE_OUT_USB_HEADSET] = strdup("usb-headphones");
- backend_table[SND_DEVICE_OUT_SPEAKER_AND_USB_HEADSET] =
+ // To overwrite these go to the audio_platform_info.xml file.
+ backend_tag_table[SND_DEVICE_IN_BT_SCO_MIC] = strdup("bt-sco");
+ backend_tag_table[SND_DEVICE_IN_BT_SCO_MIC_WB] = strdup("bt-sco-wb");
+ backend_tag_table[SND_DEVICE_IN_BT_SCO_MIC_NREC] = strdup("bt-sco");
+ backend_tag_table[SND_DEVICE_IN_BT_SCO_MIC_WB_NREC] = strdup("bt-sco-wb");
+ backend_tag_table[SND_DEVICE_OUT_BT_SCO] = strdup("bt-sco");
+ backend_tag_table[SND_DEVICE_OUT_BT_SCO_WB] = strdup("bt-sco-wb");
+ 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_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");
+ backend_tag_table[SND_DEVICE_OUT_USB_HEADSET] = strdup("usb-headphones");
+ backend_tag_table[SND_DEVICE_OUT_SPEAKER_AND_USB_HEADSET] =
strdup("speaker-and-usb-headphones");
- backend_table[SND_DEVICE_IN_USB_HEADSET_MIC] = strdup("usb-headset-mic");
- backend_table[SND_DEVICE_IN_CAPTURE_FM] = strdup("capture-fm");
- backend_table[SND_DEVICE_OUT_TRANSMISSION_FM] = strdup("transmission-fm");
- backend_table[SND_DEVICE_OUT_HEADPHONES_44_1] = strdup("headphones-44.1");
- backend_table[SND_DEVICE_OUT_VOICE_SPEAKER_VBAT] = strdup("vbat-voice-speaker");
+ backend_tag_table[SND_DEVICE_IN_USB_HEADSET_MIC] = strdup("usb-headset-mic");
+ backend_tag_table[SND_DEVICE_IN_CAPTURE_FM] = strdup("capture-fm");
+ backend_tag_table[SND_DEVICE_OUT_TRANSMISSION_FM] = strdup("transmission-fm");
+ backend_tag_table[SND_DEVICE_OUT_HEADPHONES_44_1] = strdup("headphones-44.1");
+ backend_tag_table[SND_DEVICE_OUT_VOICE_SPEAKER_VBAT] = strdup("vbat-voice-speaker");
+
+ hw_interface_table[SND_DEVICE_OUT_HDMI] = strdup("HDMI_RX");
+ hw_interface_table[SND_DEVICE_OUT_SPEAKER_AND_HDMI] = strdup("SLIMBUS_0_RX-and-HDMI_RX");
+ hw_interface_table[SND_DEVICE_OUT_VOICE_TX] = strdup("AFE_PCM_RX");
/*remove ALAC & APE from DSP decoder list based on software decoder availability*/
for (count = 0; count < (int32_t) (sizeof(dsp_only_decoders_mime)/sizeof(dsp_only_decoders_mime[0]));
@@ -1792,6 +1797,11 @@
strdup("SLIM_5_RX Format");
my_data->current_backend_cfg[HEADPHONE_44_1_BACKEND].samplerate_mixer_ctl =
strdup("SLIM_5_RX SampleRate");
+
+ my_data->current_backend_cfg[HEADPHONE_BACKEND].bitwidth_mixer_ctl =
+ strdup("SLIM_6_RX Format");
+ my_data->current_backend_cfg[HEADPHONE_BACKEND].samplerate_mixer_ctl =
+ strdup("SLIM_6_RX SampleRate");
} else {
my_data->current_backend_cfg[DEFAULT_CODEC_BACKEND].bitwidth_mixer_ctl =
strdup("MI2S_RX Format");
@@ -1842,9 +1852,9 @@
int32_t dev;
for (dev = 0; dev < SND_DEVICE_MAX; dev++) {
- if (backend_table[dev]) {
- free(backend_table[dev]);
- backend_table[dev]= NULL;
+ if (backend_tag_table[dev]) {
+ free(backend_tag_table[dev]);
+ backend_tag_table[dev]= NULL;
}
}
@@ -1921,7 +1931,7 @@
return;
}
- const char * suffix = backend_table[snd_device];
+ const char * suffix = backend_tag_table[snd_device];
if (suffix != NULL) {
strlcat(mixer_path, " ", MIXER_PATH_MAX_LENGTH);
@@ -1929,6 +1939,40 @@
}
}
+bool platform_check_backends_match(snd_device_t snd_device1, snd_device_t snd_device2)
+{
+ bool result = true;
+
+ ALOGV("%s: snd_device1 = %s, snd_device2 = %s", __func__,
+ platform_get_snd_device_name(snd_device1),
+ platform_get_snd_device_name(snd_device2));
+
+ if ((snd_device1 < SND_DEVICE_MIN) || (snd_device1 >= SND_DEVICE_OUT_END)) {
+ ALOGE("%s: Invalid snd_device = %s", __func__,
+ platform_get_snd_device_name(snd_device1));
+ return false;
+ }
+ if ((snd_device2 < SND_DEVICE_MIN) || (snd_device2 >= SND_DEVICE_OUT_END)) {
+ ALOGE("%s: Invalid snd_device = %s", __func__,
+ platform_get_snd_device_name(snd_device2));
+ return false;
+ }
+ const char * be_itf1 = hw_interface_table[snd_device1];
+ const char * be_itf2 = hw_interface_table[snd_device2];
+
+ if (NULL != be_itf1 && NULL != be_itf2) {
+ if (0 != strcmp(be_itf1, be_itf2))
+ result = false;
+ } else if (NULL == be_itf1 && NULL != be_itf2) {
+ result = false;
+ } else if (NULL != be_itf1 && NULL == be_itf2) {
+ result = false;
+ }
+
+ ALOGV("%s: be_itf1 = %s, be_itf2 = %s, match %d", __func__, be_itf1, be_itf2, result);
+ return result;
+}
+
int platform_get_pcm_device_id(audio_usecase_t usecase, int device_type)
{
int device_id = -1;
@@ -2060,6 +2104,8 @@
goto done;
}
+ ALOGV("%s: acdb_device_table[%s]: old = %d new = %d", __func__,
+ platform_get_snd_device_name(snd_device), acdb_device_table[snd_device], acdb_id);
acdb_device_table[snd_device] = acdb_id;
done:
return ret;
@@ -2122,7 +2168,7 @@
if (NATIVE_AUDIO_MODE_SRC == na_mode || NATIVE_AUDIO_MODE_TRUE_44_1 == na_mode) {
na_props.platform_na_prop_enabled = na_props.ui_na_prop_enabled = true;
na_props.na_mode = na_mode;
- ALOGD("%s:napb: native audio playback enabled in (%s) mode", __func__,
+ ALOGD("%s:napb: native audio playback enabled in (%s) mode v2.0", __func__,
((na_mode == NATIVE_AUDIO_MODE_SRC)?"SRC mode":"True 44.1 mode"));
} else {
na_props.platform_na_prop_enabled = false;
@@ -2253,21 +2299,27 @@
}
-int platform_get_backend_index(snd_device_t snd_device)
+static int platform_get_backend_index(snd_device_t snd_device)
{
int32_t port = DEFAULT_CODEC_BACKEND;
if (snd_device >= SND_DEVICE_MIN && snd_device < SND_DEVICE_MAX) {
- if (backend_table[snd_device] != NULL &&
- !strcmp(backend_table[snd_device], "headphones-44.1"))
- port = HEADPHONE_44_1_BACKEND;
- else
- port = DEFAULT_CODEC_BACKEND;
+ if (backend_tag_table[snd_device] != NULL) {
+ if (strncmp(backend_tag_table[snd_device], "headphones-44.1",
+ sizeof("headphones-44.1")) == 0)
+ port = HEADPHONE_44_1_BACKEND;
+ else if (strncmp(backend_tag_table[snd_device], "headphones",
+ sizeof("headphones")) == 0)
+ port = HEADPHONE_BACKEND;
+ else if (strcmp(backend_tag_table[snd_device], "hdmi") == 0)
+ port = HDMI_RX_BACKEND;
+ }
} else {
ALOGV("%s:napb: Invalid device - %d ", __func__, snd_device);
}
- ALOGV("%s:napb: backend port - %d", __func__, port);
+ ALOGV("%s:napb: backend port - %d device - %d ", __func__, port,
+ snd_device);
return port;
}
@@ -2277,6 +2329,8 @@
struct platform_data *my_data = (struct platform_data *)platform;
int acdb_dev_id, acdb_dev_type;
int snd_device = SND_DEVICE_OUT_SPEAKER;
+ int new_snd_device[SND_DEVICE_OUT_END];
+ int i, num_devices = 1;
if (usecase->type == PCM_PLAYBACK)
snd_device = usecase->out_snd_device;
@@ -2287,26 +2341,34 @@
snd_device = usecase->in_snd_device;
acdb_dev_id = acdb_device_table[platform_get_spkr_prot_snd_device(snd_device)];
- // Do not use Rx path default app type for TX path
- if ((usecase->type == PCM_CAPTURE) && (app_type == DEFAULT_APP_TYPE_RX_PATH)) {
- ALOGD("Resetting app type for Tx path to default");
- app_type = DEFAULT_APP_TYPE_TX_PATH;
+ if(!platform_can_split_snd_device(platform, snd_device, &num_devices, new_snd_device)) {
+ new_snd_device[0] = snd_device;
}
- if (acdb_dev_id < 0) {
- ALOGE("%s: Could not find acdb id for device(%d)",
- __func__, snd_device);
- return -EINVAL;
- }
- if (my_data->acdb_send_audio_cal) {
- ALOGV("%s: sending audio calibration for snd_device(%d) acdb_id(%d)",
- __func__, snd_device, acdb_dev_id);
- if (snd_device >= SND_DEVICE_OUT_BEGIN &&
- snd_device < SND_DEVICE_OUT_END)
- acdb_dev_type = ACDB_DEV_TYPE_OUT;
- else
- acdb_dev_type = ACDB_DEV_TYPE_IN;
- my_data->acdb_send_audio_cal(acdb_dev_id, acdb_dev_type, app_type,
- sample_rate);
+
+ for (i = 0; i < num_devices; i++) {
+ acdb_dev_id = acdb_device_table[platform_get_spkr_prot_snd_device(new_snd_device[i])];
+
+ // Do not use Rx path default app type for TX path
+ if ((usecase->type == PCM_CAPTURE) && (app_type == DEFAULT_APP_TYPE_RX_PATH)) {
+ ALOGD("Resetting app type for Tx path to default");
+ app_type = DEFAULT_APP_TYPE_TX_PATH;
+ }
+ if (acdb_dev_id < 0) {
+ ALOGE("%s: Could not find acdb id for device(%d)",
+ __func__, new_snd_device[i]);
+ return -EINVAL;
+ }
+ if (my_data->acdb_send_audio_cal) {
+ ALOGV("%s: sending audio calibration for snd_device(%d) acdb_id(%d)",
+ __func__, new_snd_device[i], acdb_dev_id);
+ if (new_snd_device[i] >= SND_DEVICE_OUT_BEGIN &&
+ new_snd_device[i] < SND_DEVICE_OUT_END)
+ acdb_dev_type = ACDB_DEV_TYPE_OUT;
+ else
+ acdb_dev_type = ACDB_DEV_TYPE_IN;
+ my_data->acdb_send_audio_cal(acdb_dev_id, acdb_dev_type, app_type,
+ sample_rate);
+ }
}
return 0;
}
@@ -2568,6 +2630,57 @@
return ret;
}
+bool platform_can_split_snd_device(void *platform,
+ snd_device_t snd_device,
+ int *num_devices,
+ snd_device_t *new_snd_devices)
+{
+ bool status = false;
+ struct platform_data *my_data = (struct platform_data *)platform;
+
+ if (NULL == num_devices || NULL == new_snd_devices) {
+ ALOGE("%s: NULL pointer ..", __func__);
+ return false;
+ }
+
+ /*
+ * If wired headset/headphones/line devices share the same backend
+ * with speaker/earpiece this routine returns false.
+ */
+ if (snd_device == SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES &&
+ !platform_check_backends_match(SND_DEVICE_OUT_SPEAKER, SND_DEVICE_OUT_HEADPHONES)) {
+ *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_HEADPHONES;
+ status = true;
+ } else if (snd_device == SND_DEVICE_OUT_SPEAKER_AND_HDMI &&
+ !platform_check_backends_match(SND_DEVICE_OUT_SPEAKER, SND_DEVICE_OUT_HDMI)) {
+ *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_HDMI;
+ status = true;
+ }
+
+ ALOGD("%s: snd_device(%d) num devices(%d) new_snd_devices(%d)", __func__,
+ snd_device, *num_devices, *new_snd_devices);
+
+ return status;
+}
+
snd_device_t platform_get_output_snd_device(void *platform, struct stream_out *out)
{
struct platform_data *my_data = (struct platform_data *)platform;
@@ -3720,7 +3833,7 @@
/*
* configures afe with bit width and Sample Rate
*/
-int platform_set_codec_backend_cfg(struct audio_device* adev,
+static int platform_set_codec_backend_cfg(struct audio_device* adev,
snd_device_t snd_device,
unsigned int bit_width, unsigned int sample_rate)
{
@@ -3824,7 +3937,7 @@
* goes through all the current usecases and picks the highest
* bitwidth & samplerate
*/
-bool platform_check_codec_backend_cfg(struct audio_device* adev,
+static bool platform_check_codec_backend_cfg(struct audio_device* adev,
struct audio_usecase* usecase,
snd_device_t snd_device,
unsigned int* new_bit_width,
@@ -3837,7 +3950,6 @@
unsigned int bit_width;
unsigned int sample_rate;
int backend_idx = DEFAULT_CODEC_BACKEND;
- int usecase_backend_idx = DEFAULT_CODEC_BACKEND;
struct platform_data *my_data = (struct platform_data *)adev->platform;
int na_mode = platform_get_native_support();
@@ -3847,8 +3959,7 @@
sample_rate = *new_sample_rate;
ALOGI("%s:becf: afe: Codec selected backend: %d current bit width: %d and sample rate: %d",
- __func__,
- backend_idx, bit_width, sample_rate);
+ __func__, backend_idx, bit_width, sample_rate);
// For voice calls use default configuration i.e. 16b/48K, only applicable to
// default backend
@@ -3875,8 +3986,6 @@
uc = node_to_item(node, struct audio_usecase, list);
struct stream_out *out = (struct stream_out*) uc->stream.out;
if (uc->type == PCM_PLAYBACK && out && usecase != uc) {
- usecase_backend_idx =
- platform_get_backend_index(uc->out_snd_device);
ALOGD("%s:napb: (%d) - (%s)id (%d) sr %d bw "
"(%d) device %s", __func__, i++, use_case_table[uc->id],
@@ -3884,7 +3993,7 @@
out->bit_width,
platform_get_snd_device_name(uc->out_snd_device));
- if (usecase_backend_idx == backend_idx) {
+ if (platform_check_backends_match(snd_device, uc->out_snd_device)) {
if (bit_width < out->bit_width)
bit_width = out->bit_width;
if (sample_rate < out->sample_rate)
@@ -3924,10 +4033,12 @@
* hifi playback not supported on spkr devices, limit the Sample Rate
* to 48 khz.
*/
- if (usecase->stream.out->devices & AUDIO_DEVICE_OUT_SPEAKER) {
+ if (SND_DEVICE_OUT_SPEAKER == snd_device ||
+ SND_DEVICE_OUT_SPEAKER_WSA == snd_device ||
+ SND_DEVICE_OUT_SPEAKER_VBAT == snd_device) {
sample_rate = CODEC_BACKEND_DEFAULT_SAMPLE_RATE;
- ALOGD("%s:becf: afe: playback on speakers Configure afe to \
- default Sample Rate(48k)", __func__);
+ ALOGD("%s:becf: afe: playback on speaker device Configure afe to "
+ "default Sample Rate(48k)", __func__);
}
/*
@@ -3944,8 +4055,8 @@
* reset the sample rate to default value(48K), if hifi audio is not supported
*/
if (!my_data->hifi_audio) {
- ALOGD("%s:becf: afe: only 48KHZ sample rate is supported \
- Configure afe to default Sample Rate(48k)", __func__);
+ ALOGD("%s:becf: afe: only 48KHZ sample rate is supported "
+ "Configure afe to default Sample Rate(48k)", __func__);
sample_rate = CODEC_BACKEND_DEFAULT_SAMPLE_RATE;
}
@@ -3988,6 +4099,9 @@
unsigned int new_bit_width;
unsigned int new_sample_rate;
int backend_idx = DEFAULT_CODEC_BACKEND;
+ int new_snd_devices[SND_DEVICE_OUT_END];
+ int i, num_devices = 1;
+ bool ret = false;
backend_idx = platform_get_backend_index(snd_device);
@@ -3998,17 +4112,27 @@
", backend_idx %d usecase = %d device (%s)", __func__, new_bit_width,
new_sample_rate, backend_idx, usecase->id,
platform_get_snd_device_name(snd_device));
- if (platform_check_codec_backend_cfg(adev, usecase, snd_device,
- &new_bit_width, &new_sample_rate)) {
- platform_set_codec_backend_cfg(adev, snd_device,
- new_bit_width, new_sample_rate);
- return true;
+
+ if (!platform_can_split_snd_device(adev->platform, snd_device,
+ &num_devices, new_snd_devices))
+ new_snd_devices[0] = snd_device;
+
+ for (i = 0; i < num_devices; i++) {
+ ALOGI("%s: becf: new_snd_devices[%d] is %s", __func__, i,
+ platform_get_snd_device_name(new_snd_devices[i]));
+ if (platform_check_codec_backend_cfg(adev, usecase, new_snd_devices[i],
+ &new_bit_width, &new_sample_rate)) {
+ platform_set_codec_backend_cfg(adev, new_snd_devices[i],
+ new_bit_width, new_sample_rate);
+ ret = true;
+ }
}
- return false;
+ return ret;
}
-int platform_set_snd_device_backend(snd_device_t device, const char *backend)
+int platform_set_snd_device_backend(snd_device_t device, const char *backend_tag,
+ const char * hw_interface)
{
int ret = 0;
@@ -4019,10 +4143,22 @@
goto done;
}
- if (backend_table[device]) {
- free(backend_table[device]);
+ ALOGD("%s: backend_tag_table[%s]: old = %s new = %s", __func__,
+ platform_get_snd_device_name(device),
+ backend_tag_table[device] != NULL ? backend_tag_table[device]: "null",
+ backend_tag);
+ if (backend_tag_table[device]) {
+ free(backend_tag_table[device]);
}
- backend_table[device] = strdup(backend);
+ backend_tag_table[device] = strdup(backend_tag);
+
+ if (hw_interface != NULL) {
+ if (hw_interface_table[device])
+ free(hw_interface_table[device]);
+
+ ALOGD("%s: hw_interface_table[%d] = %s", __func__, device, hw_interface);
+ hw_interface_table[device] = strdup(hw_interface);
+ }
done:
return ret;
}
@@ -4040,6 +4176,7 @@
ALOGE("%s: invalid usecase type", __func__);
ret = -EINVAL;
}
+ ALOGV("%s: pcm_device_table[%d][%d] = %d", __func__, usecase, type, pcm_id);
pcm_device_table[usecase][type] = pcm_id;
done:
return ret;
diff --git a/hal/msm8916/platform.h b/hal/msm8916/platform.h
index da16feb..23435ea 100644
--- a/hal/msm8916/platform.h
+++ b/hal/msm8916/platform.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013-2015, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2013-2016, The Linux Foundation. All rights reserved.
* Not a Contribution.
*
* Copyright (C) 2013 The Android Open Source Project
@@ -191,7 +191,12 @@
#define HEADPHONE_44_1_BACKEND_PORT 5
enum {
DEFAULT_CODEC_BACKEND,
+ SLIMBUS_0_RX = DEFAULT_CODEC_BACKEND,
HEADPHONE_44_1_BACKEND,
+ SLIMBUS_5_RX = HEADPHONE_44_1_BACKEND,
+ HEADPHONE_BACKEND,
+ SLIMBUS_6_RX = HEADPHONE_BACKEND,
+ HDMI_RX_BACKEND,
MAX_CODEC_BACKENDS
};
#define AUDIO_PARAMETER_KEY_NATIVE_AUDIO "audio.nat.codec.enabled"
diff --git a/hal/msm8960/platform.c b/hal/msm8960/platform.c
index a761209..43de781 100644
--- a/hal/msm8960/platform.c
+++ b/hal/msm8960/platform.c
@@ -1080,8 +1080,9 @@
return -ENOSYS;
}
-int platform_set_snd_device_backend(snd_device_t snd_device __unused,
- const char * backend __unused)
+int platform_set_snd_device_backend(snd_device_t device __unused,
+ const char *backend __unused,
+ const char *hw_interface __unused)
{
return -ENOSYS;
}
@@ -1219,4 +1220,16 @@
int platform_spkr_prot_is_wsa_analog_mode(void *adev __unused)
{
return 0;
+bool platform_can_split_snd_device(void *platform __unused,
+ snd_device_t in_snd_device __unused,
+ int *num_devices __unused,
+ snd_device_t *out_snd_devices __unused)
+{
+ return false;
+}
+
+bool platform_check_backends_match(snd_device_t snd_device1 __unused,
+ snd_device_t snd_device2 __unused)
+{
+ return true;
}
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index fe93d6b..32eab45 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -636,7 +636,8 @@
{TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_QMIC_AEC_NS)},
};
-static char * backend_table[SND_DEVICE_MAX] = {0};
+static char * backend_tag_table[SND_DEVICE_MAX] = {0};
+static char * hw_interface_table[SND_DEVICE_MAX] = {0};
static struct name_to_index usecase_name_index[AUDIO_USECASE_MAX] = {
{TO_NAME_INDEX(USECASE_AUDIO_PLAYBACK_DEEP_BUFFER)},
@@ -1035,35 +1036,39 @@
const char *MEDIA_MIMETYPE_AUDIO_APE = "audio/x-ape";
for (dev = 0; dev < SND_DEVICE_MAX; dev++) {
- backend_table[dev] = NULL;
+ backend_tag_table[dev] = NULL;
+ hw_interface_table[dev] = NULL;
}
for (dev = 0; dev < SND_DEVICE_MAX; dev++) {
backend_bit_width_table[dev] = CODEC_BACKEND_DEFAULT_BIT_WIDTH;
}
- // TBD - do these go to the platform-info.xml file.
- // will help in avoiding strdups here
- backend_table[SND_DEVICE_IN_BT_SCO_MIC] = strdup("bt-sco");
- backend_table[SND_DEVICE_IN_BT_SCO_MIC_WB] = strdup("bt-sco-wb");
- backend_table[SND_DEVICE_IN_BT_SCO_MIC_NREC] = strdup("bt-sco");
- backend_table[SND_DEVICE_IN_BT_SCO_MIC_WB_NREC] = strdup("bt-sco-wb");
- backend_table[SND_DEVICE_OUT_BT_SCO] = strdup("bt-sco");
- backend_table[SND_DEVICE_OUT_BT_SCO_WB] = strdup("bt-sco-wb");
- backend_table[SND_DEVICE_OUT_HDMI] = strdup("hdmi");
- backend_table[SND_DEVICE_OUT_SPEAKER_AND_HDMI] = strdup("speaker-and-hdmi");
- backend_table[SND_DEVICE_OUT_VOICE_TX] = strdup("afe-proxy");
- backend_table[SND_DEVICE_IN_VOICE_RX] = strdup("afe-proxy");
-
- backend_table[SND_DEVICE_OUT_AFE_PROXY] = strdup("afe-proxy");
- backend_table[SND_DEVICE_OUT_USB_HEADSET] = strdup("usb-headphones");
- backend_table[SND_DEVICE_OUT_SPEAKER_AND_USB_HEADSET] =
+ // To overwrite these go to the audio_platform_info.xml file.
+ backend_tag_table[SND_DEVICE_IN_BT_SCO_MIC] = strdup("bt-sco");
+ backend_tag_table[SND_DEVICE_IN_BT_SCO_MIC_WB] = strdup("bt-sco-wb");
+ backend_tag_table[SND_DEVICE_IN_BT_SCO_MIC_NREC] = strdup("bt-sco");
+ backend_tag_table[SND_DEVICE_IN_BT_SCO_MIC_WB_NREC] = strdup("bt-sco-wb");
+ backend_tag_table[SND_DEVICE_OUT_BT_SCO] = strdup("bt-sco");
+ backend_tag_table[SND_DEVICE_OUT_BT_SCO_WB] = strdup("bt-sco-wb");
+ 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_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");
+ backend_tag_table[SND_DEVICE_OUT_USB_HEADSET] = strdup("usb-headphones");
+ backend_tag_table[SND_DEVICE_OUT_SPEAKER_AND_USB_HEADSET] =
strdup("speaker-and-usb-headphones");
- backend_table[SND_DEVICE_IN_USB_HEADSET_MIC] = strdup("usb-headset-mic");
- backend_table[SND_DEVICE_IN_CAPTURE_FM] = strdup("capture-fm");
- backend_table[SND_DEVICE_OUT_TRANSMISSION_FM] = strdup("transmission-fm");
- backend_table[SND_DEVICE_OUT_HEADPHONES] = strdup("headphones");
- backend_table[SND_DEVICE_OUT_HEADPHONES_44_1] = strdup("headphones-44.1");
- backend_table[SND_DEVICE_OUT_VOICE_SPEAKER_VBAT] = strdup("voice-speaker-vbat");
+ backend_tag_table[SND_DEVICE_IN_USB_HEADSET_MIC] = strdup("usb-headset-mic");
+ backend_tag_table[SND_DEVICE_IN_CAPTURE_FM] = strdup("capture-fm");
+ backend_tag_table[SND_DEVICE_OUT_TRANSMISSION_FM] = strdup("transmission-fm");
+ backend_tag_table[SND_DEVICE_OUT_HEADPHONES] = strdup("headphones");
+ backend_tag_table[SND_DEVICE_OUT_HEADPHONES_44_1] = strdup("headphones-44.1");
+ backend_tag_table[SND_DEVICE_OUT_VOICE_SPEAKER_VBAT] = strdup("voice-speaker-vbat");
+
+ hw_interface_table[SND_DEVICE_OUT_HEADPHONES_44_1] = strdup("SLIMBUS_5_RX");
+ hw_interface_table[SND_DEVICE_OUT_HDMI] = strdup("HDMI_RX");
+ hw_interface_table[SND_DEVICE_OUT_SPEAKER_AND_HDMI] = strdup("SLIMBUS_0_RX-and-HDMI_RX");
+ hw_interface_table[SND_DEVICE_OUT_VOICE_TX] = strdup("AFE_PCM_RX");
/*remove ALAC & APE from DSP decoder list based on software decoder availability*/
@@ -1643,6 +1648,11 @@
}
}
+ my_data->current_backend_cfg[HEADPHONE_BACKEND].bitwidth_mixer_ctl =
+ strdup("SLIM_6_RX Format");
+ my_data->current_backend_cfg[HEADPHONE_BACKEND].samplerate_mixer_ctl =
+ strdup("SLIM_6_RX SampleRate");
+
my_data->edid_info = NULL;
free(snd_card_name);
free(snd_card_name_t);
@@ -1668,9 +1678,9 @@
int32_t dev;
for (dev = 0; dev < SND_DEVICE_MAX; dev++) {
- if (backend_table[dev]) {
- free(backend_table[dev]);
- backend_table[dev]= NULL;
+ if (backend_tag_table[dev]) {
+ free(backend_tag_table[dev]);
+ backend_tag_table[dev]= NULL;
}
}
@@ -1747,7 +1757,7 @@
return;
}
- const char * suffix = backend_table[snd_device];
+ const char * suffix = backend_tag_table[snd_device];
if (suffix != NULL) {
strlcat(mixer_path, " ", MIXER_PATH_MAX_LENGTH);
@@ -1755,6 +1765,40 @@
}
}
+bool platform_check_backends_match(snd_device_t snd_device1, snd_device_t snd_device2)
+{
+ bool result = true;
+
+ ALOGV("%s: snd_device1 = %s, snd_device2 = %s", __func__,
+ platform_get_snd_device_name(snd_device1),
+ platform_get_snd_device_name(snd_device2));
+
+ if ((snd_device1 < SND_DEVICE_MIN) || (snd_device1 >= SND_DEVICE_OUT_END)) {
+ ALOGE("%s: Invalid snd_device = %s", __func__,
+ platform_get_snd_device_name(snd_device1));
+ return false;
+ }
+ if ((snd_device2 < SND_DEVICE_MIN) || (snd_device2 >= SND_DEVICE_OUT_END)) {
+ ALOGE("%s: Invalid snd_device = %s", __func__,
+ platform_get_snd_device_name(snd_device2));
+ return false;
+ }
+ const char * be_itf1 = hw_interface_table[snd_device1];
+ const char * be_itf2 = hw_interface_table[snd_device2];
+
+ if (NULL != be_itf1 && NULL != be_itf2) {
+ if (0 != strcmp(be_itf1, be_itf2))
+ result = false;
+ } else if (NULL == be_itf1 && NULL != be_itf2) {
+ result = false;
+ } else if (NULL != be_itf1 && NULL == be_itf2) {
+ result = false;
+ }
+
+ ALOGV("%s: be_itf1 = %s, be_itf2 = %s, match %d", __func__, be_itf1, be_itf2, result);
+ return result;
+}
+
int platform_get_pcm_device_id(audio_usecase_t usecase, int device_type)
{
int device_id;
@@ -1878,6 +1922,8 @@
goto done;
}
+ ALOGV("%s: acdb_device_table[%s]: old = %d new = %d", __func__,
+ platform_get_snd_device_name(snd_device), acdb_device_table[snd_device], acdb_id);
acdb_device_table[snd_device] = acdb_id;
done:
return ret;
@@ -1941,7 +1987,7 @@
if (NATIVE_AUDIO_MODE_SRC == na_mode || NATIVE_AUDIO_MODE_TRUE_44_1 == na_mode) {
na_props.platform_na_prop_enabled = na_props.ui_na_prop_enabled = true;
na_props.na_mode = na_mode;
- ALOGD("%s:napb: native audio playback enabled in (%s) mode", __func__,
+ ALOGD("%s:napb: native audio playback enabled in (%s) mode v2.0", __func__,
((na_mode == NATIVE_AUDIO_MODE_SRC)?"SRC mode":"True 44.1 mode"));
}
else {
@@ -2068,21 +2114,26 @@
return ret;
}
-int platform_get_backend_index(snd_device_t snd_device)
+static int platform_get_backend_index(snd_device_t snd_device)
{
int32_t port = DEFAULT_CODEC_BACKEND;
if (snd_device >= SND_DEVICE_MIN && snd_device < SND_DEVICE_MAX) {
- if (backend_table[snd_device] != NULL &&
- strcmp(backend_table[snd_device], "headphones-44.1") == 0)
- port = HEADPHONE_44_1_BACKEND;
- else
- port = DEFAULT_CODEC_BACKEND;
+ if (backend_tag_table[snd_device] != NULL) {
+ if (strncmp(backend_tag_table[snd_device], "headphones-44.1",
+ sizeof("headphones-44.1")) == 0)
+ port = HEADPHONE_44_1_BACKEND;
+ else if (strncmp(backend_tag_table[snd_device], "headphones",
+ sizeof("headphones")) == 0)
+ port = HEADPHONE_BACKEND;
+ else if (strcmp(backend_tag_table[snd_device], "hdmi") == 0)
+ port = HDMI_RX_BACKEND;
+ }
} else {
ALOGV("%s:napb: Invalid device - %d ", __func__, snd_device);
}
- ALOGV("%s:napb: backend port - %d", __func__, port);
+ ALOGV("%s:napb: backend port - %d snd_device %d", __func__, port, snd_device);
return port;
}
@@ -2092,9 +2143,11 @@
struct platform_data *my_data = (struct platform_data *)platform;
int acdb_dev_id, acdb_dev_type;
int snd_device = SND_DEVICE_OUT_SPEAKER;
+ int new_snd_device[SND_DEVICE_OUT_END];
+ int i, num_devices = 1;
if (usecase->type == PCM_PLAYBACK)
- snd_device = usecase->out_snd_device;
+ snd_device = usecase->out_snd_device;
else if ((usecase->type == PCM_CAPTURE) &&
voice_is_in_call_rec_stream(usecase->stream.in))
snd_device = voice_get_incall_rec_snd_device(usecase->in_snd_device);
@@ -2107,17 +2160,32 @@
__func__, snd_device);
return -EINVAL;
}
- if (my_data->acdb_send_audio_cal) {
- ALOGV("%s: sending audio calibration for snd_device(%d) acdb_id(%d)",
- __func__, snd_device, acdb_dev_id);
- if (snd_device >= SND_DEVICE_OUT_BEGIN &&
- snd_device < SND_DEVICE_OUT_END)
- acdb_dev_type = ACDB_DEV_TYPE_OUT;
- else
- acdb_dev_type = ACDB_DEV_TYPE_IN;
- my_data->acdb_send_audio_cal(acdb_dev_id, acdb_dev_type, app_type,
- sample_rate);
+
+ if(!platform_can_split_snd_device(my_data, snd_device,
+ &num_devices, new_snd_device)) {
+ new_snd_device[0] = snd_device;
}
+
+ for (i = 0; i < num_devices; i++) {
+ acdb_dev_id = acdb_device_table[platform_get_spkr_prot_snd_device(new_snd_device[i])];
+ if (acdb_dev_id < 0) {
+ ALOGE("%s: Could not find acdb id for device(%d)",
+ __func__, new_snd_device[i]);
+ return -EINVAL;
+ }
+ if (my_data->acdb_send_audio_cal) {
+ ALOGV("%s: sending audio calibration for snd_device(%d) acdb_id(%d)",
+ __func__, new_snd_device[i], acdb_dev_id);
+ if (new_snd_device[i] >= SND_DEVICE_OUT_BEGIN &&
+ new_snd_device[i] < SND_DEVICE_OUT_END)
+ acdb_dev_type = ACDB_DEV_TYPE_OUT;
+ else
+ acdb_dev_type = ACDB_DEV_TYPE_IN;
+ my_data->acdb_send_audio_cal(acdb_dev_id, acdb_dev_type, app_type,
+ sample_rate);
+ }
+ }
+
return 0;
}
@@ -2386,6 +2454,43 @@
return ret;
}
+bool platform_can_split_snd_device(void *platform,
+ snd_device_t snd_device,
+ int *num_devices,
+ snd_device_t *new_snd_devices)
+{
+ bool status = false;
+ struct platform_data *my_data = (struct platform_data *)platform;
+
+ if ( NULL == num_devices || NULL == new_snd_devices || NULL == my_data) {
+ ALOGE("%s: NULL pointer ..", __func__);
+ return false;
+ }
+
+ /*
+ * If wired headset/headphones/line devices share the same backend
+ * with speaker/earpiece this routine returns false.
+ */
+ if (snd_device == SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES &&
+ !platform_check_backends_match(SND_DEVICE_OUT_SPEAKER, SND_DEVICE_OUT_HEADPHONES)) {
+ *num_devices = 2;
+ new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER;
+ new_snd_devices[1] = SND_DEVICE_OUT_HEADPHONES;
+ status = true;
+ } else if (snd_device == SND_DEVICE_OUT_SPEAKER_AND_HDMI &&
+ !platform_check_backends_match(SND_DEVICE_OUT_SPEAKER, SND_DEVICE_OUT_HDMI)) {
+ *num_devices = 2;
+ new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER;
+ new_snd_devices[1] = SND_DEVICE_OUT_HDMI;
+ status = true;
+ }
+
+ ALOGD("%s: snd_device(%d) num devices(%d) new_snd_devices(%d)", __func__,
+ snd_device, *num_devices, *new_snd_devices);
+
+ return status;
+}
+
snd_device_t platform_get_output_snd_device(void *platform, struct stream_out *out)
{
struct platform_data *my_data = (struct platform_data *)platform;
@@ -3704,7 +3809,7 @@
/*
* configures afe with bit width and Sample Rate
*/
-int platform_set_codec_backend_cfg(struct audio_device* adev,
+static int platform_set_codec_backend_cfg(struct audio_device* adev,
snd_device_t snd_device,
unsigned int bit_width, unsigned int sample_rate)
{
@@ -3802,7 +3907,7 @@
* goes through all the current usecases and picks the highest
* bitwidth & samplerate
*/
-bool platform_check_codec_backend_cfg(struct audio_device* adev,
+static bool platform_check_codec_backend_cfg(struct audio_device* adev,
struct audio_usecase* usecase,
snd_device_t snd_device,
unsigned int* new_bit_width,
@@ -3813,7 +3918,6 @@
unsigned int bit_width;
unsigned int sample_rate;
int backend_idx = DEFAULT_CODEC_BACKEND;
- int usecase_backend_idx = DEFAULT_CODEC_BACKEND;
struct platform_data *my_data = (struct platform_data *)adev->platform;
int na_mode = platform_get_native_support();
@@ -3852,8 +3956,6 @@
uc = node_to_item(node, struct audio_usecase, list);
struct stream_out *out = (struct stream_out*) uc->stream.out;
if (uc->type == PCM_PLAYBACK && out && usecase != uc) {
- usecase_backend_idx =
- platform_get_backend_index(uc->out_snd_device);
ALOGD("%s:napb: (%d) - (%s)id (%d) sr %d bw "
"(%d) device %s", __func__, i++, use_case_table[uc->id],
@@ -3861,7 +3963,7 @@
out->bit_width,
platform_get_snd_device_name(uc->out_snd_device));
- if (usecase_backend_idx == backend_idx) {
+ if (platform_check_backends_match(snd_device, uc->out_snd_device)) {
if (bit_width < out->bit_width)
bit_width = out->bit_width;
if (sample_rate < out->sample_rate)
@@ -3899,10 +4001,12 @@
* hifi playback not supported on spkr devices, limit the Sample Rate
* to 48 khz.
*/
- if (usecase->stream.out->devices & AUDIO_DEVICE_OUT_SPEAKER) {
+ if (SND_DEVICE_OUT_SPEAKER == snd_device ||
+ SND_DEVICE_OUT_SPEAKER_WSA == snd_device ||
+ SND_DEVICE_OUT_SPEAKER_VBAT == snd_device) {
sample_rate = CODEC_BACKEND_DEFAULT_SAMPLE_RATE;
- ALOGD("%s:becf: afe: playback on speakers Configure afe to \
- default Sample Rate(48k)", __func__);
+ ALOGD("%s:becf: afe: playback on speaker device Configure afe to "
+ "default Sample Rate(48k)", __func__);
}
/*
@@ -3937,6 +4041,10 @@
unsigned int new_bit_width;
unsigned int new_sample_rate;
int backend_idx = DEFAULT_CODEC_BACKEND;
+ int new_snd_devices[SND_DEVICE_OUT_END];
+ int i, num_devices = 1;
+ bool ret = false;
+ struct platform_data *my_data = (struct platform_data *)adev->platform;
backend_idx = platform_get_backend_index(snd_device);
@@ -3948,17 +4056,25 @@
new_sample_rate, backend_idx, usecase->id,
platform_get_snd_device_name(snd_device));
- if (platform_check_codec_backend_cfg(adev, usecase, snd_device,
- &new_bit_width, &new_sample_rate)) {
- platform_set_codec_backend_cfg(adev, snd_device,
- new_bit_width, new_sample_rate);
- return true;
+
+ if (!platform_can_split_snd_device(my_data, snd_device, &num_devices, new_snd_devices))
+ new_snd_devices[0] = snd_device;
+
+ for (i = 0; i < num_devices; i++) {
+ 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],
+ &new_bit_width, &new_sample_rate)) {
+ platform_set_codec_backend_cfg(adev, new_snd_devices[i],
+ new_bit_width, new_sample_rate);
+ ret = true;
+ }
}
- return false;
+ return ret;
}
-int platform_set_snd_device_backend(snd_device_t device, const char *backend)
+int platform_set_snd_device_backend(snd_device_t device, const char *backend_tag,
+ const char * hw_interface)
{
int ret = 0;
@@ -3969,10 +4085,22 @@
goto done;
}
- if (backend_table[device]) {
- free(backend_table[device]);
+ ALOGD("%s: backend_tag_table[%s]: old = %s new = %s", __func__,
+ platform_get_snd_device_name(device),
+ backend_tag_table[device] != NULL ? backend_tag_table[device]: "null",
+ backend_tag);
+ if (backend_tag_table[device]) {
+ free(backend_tag_table[device]);
}
- backend_table[device] = strdup(backend);
+ backend_tag_table[device] = strdup(backend_tag);
+
+ if (hw_interface != NULL) {
+ if (hw_interface_table[device])
+ free(hw_interface_table[device]);
+
+ ALOGD("%s: hw_interface_table[%d] = %s", __func__, device, hw_interface);
+ hw_interface_table[device] = strdup(hw_interface);
+ }
done:
return ret;
}
@@ -3990,6 +4118,7 @@
ALOGE("%s: invalid usecase type", __func__);
ret = -EINVAL;
}
+ ALOGV("%s: pcm_device_table[%d][%d] = %d", __func__, usecase, type, pcm_id);
pcm_device_table[usecase][type] = pcm_id;
done:
return ret;
diff --git a/hal/msm8974/platform.h b/hal/msm8974/platform.h
index 00db3f3..caa40d1 100644
--- a/hal/msm8974/platform.h
+++ b/hal/msm8974/platform.h
@@ -182,7 +182,12 @@
enum {
DEFAULT_CODEC_BACKEND,
+ SLIMBUS_0_RX = DEFAULT_CODEC_BACKEND,
HEADPHONE_44_1_BACKEND,
+ SLIMBUS_5_RX = HEADPHONE_44_1_BACKEND,
+ HEADPHONE_BACKEND,
+ SLIMBUS_6_RX = HEADPHONE_BACKEND,
+ HDMI_RX_BACKEND,
MAX_CODEC_BACKENDS
};
diff --git a/hal/platform_api.h b/hal/platform_api.h
index c4510b2..04ed8f5 100644
--- a/hal/platform_api.h
+++ b/hal/platform_api.h
@@ -54,7 +54,6 @@
int platform_get_snd_device_bit_width(snd_device_t snd_device);
int platform_set_native_support(int na_mode);
int platform_get_native_support();
-int platform_get_backend_index(snd_device_t snd_device);
int platform_send_audio_calibration(void *platform, struct audio_usecase *usecase,
int app_type, int sample_rate);
int platform_get_default_app_type(void *platform);
@@ -99,7 +98,8 @@
bool platform_sound_trigger_device_needs_event(snd_device_t snd_device);
bool platform_sound_trigger_usecase_needs_event(audio_usecase_t uc_id);
-int platform_set_snd_device_backend(snd_device_t snd_device, const char * backend);
+int platform_set_snd_device_backend(snd_device_t snd_device, const char * backend,
+ const char * hw_interface);
/* From platform_info.c */
int platform_info_init(const char *filename, void *);
@@ -141,4 +141,10 @@
int platform_get_spkr_prot_acdb_id(snd_device_t snd_device);
int platform_get_spkr_prot_snd_device(snd_device_t snd_device);
int platform_spkr_prot_is_wsa_analog_mode(void *adev);
+bool platform_can_split_snd_device(void *platform,
+ snd_device_t snd_device,
+ int *num_devices,
+ snd_device_t *new_snd_devices);
+
+bool platform_check_backends_match(snd_device_t snd_device1, snd_device_t snd_device2);
#endif // AUDIO_PLATFORM_API_H
diff --git a/hal/platform_info.c b/hal/platform_info.c
index 2be66c4..973d4c4 100644
--- a/hal/platform_info.c
+++ b/hal/platform_info.c
@@ -177,6 +177,7 @@
static void process_backend_name(const XML_Char **attr)
{
int index;
+ char *hw_interface = NULL;
if (strcmp(attr[0], "name") != 0) {
ALOGE("%s: 'name' not found, no ACDB ID set!", __func__);
@@ -196,7 +197,15 @@
goto done;
}
- if (platform_set_snd_device_backend(index, attr[3]) < 0) {
+ if (attr[4] != NULL) {
+ if (strcmp(attr[4], "interface") != 0) {
+ hw_interface = NULL;
+ } else {
+ hw_interface = (char *)attr[5];
+ }
+ }
+
+ if (platform_set_snd_device_backend(index, attr[3], hw_interface) < 0) {
ALOGE("%s: Device %s backend %s was not set!",
__func__, attr[1], attr[3]);
goto done;