Merge "configs : enable incall music and add incall music profile"
diff --git a/configs/bengal/audio_platform_info_qrd.xml b/configs/bengal/audio_platform_info_qrd.xml
index e53a79d..4d717bc 100644
--- a/configs/bengal/audio_platform_info_qrd.xml
+++ b/configs/bengal/audio_platform_info_qrd.xml
@@ -64,6 +64,10 @@
<usecase name="USECASE_AUDIO_A2DP_ABR_FEEDBACK" type="in" id="35" />
<usecase name="USECASE_AUDIO_A2DP_ABR_FEEDBACK" type="out" id="35" />
<usecase name="USECASE_INCALL_MUSIC_UPLINK" type="out" id="23" />
+ <usecase name="USECASE_AUDIO_RECORD_COMPRESS2" type="in" id="36" />
+ <usecase name="USECASE_INCALL_REC_UPLINK" type="in" id="23" />
+ <usecase name="USECASE_INCALL_REC_DOWNLINK" type="in" id="23" />
+ <usecase name="USECASE_INCALL_REC_UPLINK_AND_DOWNLINK" type="in" id="23" />
</pcm_ids>
<config_params>
<!-- In the below value string, the value indicates default mono -->
@@ -112,6 +116,7 @@
<device name="SND_DEVICE_OUT_SPEAKER_AND_LINE" backend="speaker-and-headphones" interface="RX_CDC_DMA_RX_1-and-RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_ANC_HEADSET" backend="speaker-and-headphones" interface="RX_CDC_DMA_RX_1-and-RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_HEADPHONES" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
+ <device name="SND_DEVICE_OUT_VOICE_HEADSET" backend="headset" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_ANC_HEADSET" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_LINE" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_TTY_FULL_HEADPHONES" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
@@ -168,10 +173,12 @@
<device name="SND_DEVICE_IN_SPEAKER_DMIC_AEC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_DMIC_NS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_DMIC_AEC_NS" interface="TX_CDC_DMA_TX_3"/>
- <device name="SND_DEVICE_IN_HEADSET_MIC" interface="TX_CDC_DMA_TX_3"/>
- <device name="SND_DEVICE_IN_HEADSET_MIC_FLUENCE" interface="TX_CDC_DMA_TX_3"/>
+ <device name="SND_DEVICE_IN_HEADSET_MIC" backend="headset-mic" interface="TX_CDC_DMA_TX_4"/>
+ <device name="SND_DEVICE_IN_HEADSET_MIC_FLUENCE" backend="headset-mic" interface="TX_CDC_DMA_TX_4"/>
<device name="SND_DEVICE_IN_VOICE_SPEAKER_MIC" interface="TX_CDC_DMA_TX_3"/>
- <device name="SND_DEVICE_IN_VOICE_HEADSET_MIC" interface="TX_CDC_DMA_TX_3"/>
+ <device name="SND_DEVICE_IN_VOICE_HEADSET_MIC" backend="headset-mic" interface="TX_CDC_DMA_TX_4"/>
+ <device name="SND_DEVICE_IN_VOICE_REC_HEADSET_MIC" backend="headset-mic" interface="TX_CDC_DMA_TX_4"/>
+ <device name="SND_DEVICE_IN_HEADSET_MIC_AEC" backend="headset-mic" interface="TX_CDC_DMA_TX_4"/>
<device name="SND_DEVICE_IN_HDMI_MIC" interface="HDMI"/>
<device name="SND_DEVICE_IN_BT_SCO_MIC" interface="SLIMBUS_7_TX"/>
<device name="SND_DEVICE_IN_BT_SCO_MIC_NREC" interface="SLIMBUS_7_TX"/>
@@ -181,9 +188,9 @@
<device name="SND_DEVICE_IN_VOICE_DMIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOICE_SPEAKER_DMIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOICE_SPEAKER_QMIC" interface="TX_CDC_DMA_TX_3"/>
- <device name="SND_DEVICE_IN_VOICE_TTY_FULL_HEADSET_MIC" interface="TX_CDC_DMA_TX_3"/>
+ <device name="SND_DEVICE_IN_VOICE_TTY_FULL_HEADSET_MIC" backend="headset-mic" interface="TX_CDC_DMA_TX_4"/>
<device name="SND_DEVICE_IN_VOICE_TTY_VCO_HANDSET_MIC" interface="TX_CDC_DMA_TX_3"/>
- <device name="SND_DEVICE_IN_VOICE_TTY_HCO_HEADSET_MIC" interface="TX_CDC_DMA_TX_3"/>
+ <device name="SND_DEVICE_IN_VOICE_TTY_HCO_HEADSET_MIC" backend="headset-mic" interface="TX_CDC_DMA_TX_4"/>
<device name="SND_DEVICE_IN_VOICE_REC_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOICE_REC_MIC_NS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_VOICE_REC_DMIC_STEREO" interface="TX_CDC_DMA_TX_3"/>
@@ -216,7 +223,7 @@
<device name="SND_DEVICE_IN_UNPROCESSED_STEREO_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_UNPROCESSED_THREE_MIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_UNPROCESSED_QUAD_MIC" interface="TX_CDC_DMA_TX_3"/>
- <device name="SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC" interface="TX_CDC_DMA_TX_3"/>
+ <device name="SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC" backend="headset-mic" interface="TX_CDC_DMA_TX_4"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_AND_VOICE_HEADPHONES" backend="speaker-and-headphones" interface="RX_CDC_DMA_RX_1-and-RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_AND_VOICE_ANC_HEADSET" backend="speaker-and-headphones" interface="RX_CDC_DMA_RX_1-and-RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_BT_SCO" backend="speaker-and-bt-sco" interface="RX_CDC_DMA_RX_1-and-SLIMBUS_7_RX"/>
diff --git a/configs/bengal/mixer_paths_qrd.xml b/configs/bengal/mixer_paths_qrd.xml
old mode 100644
new mode 100755
index 2bcb8e9..03f42ea
--- a/configs/bengal/mixer_paths_qrd.xml
+++ b/configs/bengal/mixer_paths_qrd.xml
@@ -60,12 +60,22 @@
<ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia16" value="0" />
<ctl name="MultiMedia5 Mixer AFE_PCM_TX" value="0" />
<ctl name="MultiMedia5 Mixer TX_CDC_DMA_TX_3" value="0" />
+ <ctl name="MultiMedia5 Mixer TX_CDC_DMA_TX_4" value="0" />
<ctl name="MultiMedia1 Mixer TX_CDC_DMA_TX_3" value="0" />
+ <ctl name="MultiMedia1 Mixer TX_CDC_DMA_TX_4" value="0" />
+ <ctl name="MultiMedia8 Mixer TX_CDC_DMA_TX_3" value="0" />
+ <ctl name="MultiMedia8 Mixer TX_CDC_DMA_TX_4" value="0" />
+ <ctl name="MultiMedia2 Mixer TX_CDC_DMA_TX_3" value="0" />
+ <ctl name="MultiMedia2 Mixer TX_CDC_DMA_TX_4" value="0" />
<ctl name="MultiMedia1 Mixer SLIM_7_TX" value="0" />
<ctl name="MultiMedia8 Mixer SLIM_7_TX" value="0" />
<ctl name="MultiMedia10 Mixer TX_CDC_DMA_TX_3" value="0" />
+ <ctl name="MultiMedia10 Mixer TX_CDC_DMA_TX_4" value="0" />
<ctl name="MultiMedia10 Mixer SLIM_7_TX" value="0" />
<ctl name="MultiMedia10 Mixer AFE_PCM_TX" value="0" />
+ <ctl name="MultiMedia17 Mixer TX_CDC_DMA_TX_3" value="0" />
+ <ctl name="MultiMedia17 Mixer TX_CDC_DMA_TX_4" value="0" />
+ <ctl name="MultiMedia17 Mixer SLIM_7_TX" value="0" />
<ctl name="DISPLAY_PORT Mixer MultiMedia1" value="0" />
<ctl name="DISPLAY_PORT Mixer MultiMedia2" value="0" />
<ctl name="DISPLAY_PORT Mixer MultiMedia3" value="0" />
@@ -129,6 +139,9 @@
<ctl name="MultiMedia5 Mixer USB_AUDIO_TX" value="0" />
<ctl name="MultiMedia8 Mixer USB_AUDIO_TX" value="0" />
<ctl name="MultiMedia10 Mixer USB_AUDIO_TX" value="0" />
+ <ctl name="MultiMedia17 Mixer USB_AUDIO_TX" value="0" />
+ <ctl name="TX_AIF2_CAP Mixer DEC0" value="0" />
+ <ctl name="TX_CDC_DMA_TX_4 Channels" value="One" />
<ctl name="TX_CDC_DMA_TX_3 Channels" value="One" />
<ctl name="RX_CDC_DMA_RX_1 Channels" value="One" />
<ctl name="RX_CDC_DMA_RX_0 Channels" value="One" />
@@ -146,6 +159,8 @@
<!-- HFP end -->
<!-- echo reference -->
<ctl name="AUDIO_REF_EC_UL1 MUX" value="None" />
+ <ctl name="AUDIO_REF_EC_UL10 MUX" value="None" />
+ <ctl name="EC Reference Channels" value="Zero"/>
<!-- usb headset -->
<ctl name="AFE_PCM_RX Audio Mixer MultiMedia1" value="0" />
<ctl name="AFE_PCM_RX Audio Mixer MultiMedia2" value="0" />
@@ -175,6 +190,7 @@
<ctl name="RX_CDC_DMA_RX_1_Voice Mixer VoiceMMode1" value="0" />
<ctl name="RX_CDC_DMA_RX_0_Voice Mixer VoiceMMode1" value="0" />
<ctl name="VoiceMMode1_Tx Mixer TX_CDC_DMA_TX_3_MMode1" value="0" />
+ <ctl name="VoiceMMode1_Tx Mixer TX_CDC_DMA_TX_4_MMode1" value="0" />
<!-- Multimode Voice1 BTSCO -->
<ctl name="SLIM_7_RX_Voice Mixer VoiceMMode1" value="0" />
<ctl name="VoiceMMode1_Tx Mixer SLIM_7_TX_MMode1" value="0" />
@@ -194,7 +210,8 @@
<!-- Multimode Voice2 -->
<ctl name="RX_CDC_DMA_RX_1_Voice Mixer VoiceMMode2" value="0" />
<ctl name="RX_CDC_DMA_RX_0_Voice Mixer VoiceMMode2" value="0" />
- <ctl name="VoiceMMode1_Tx Mixer TX_CDC_DMA_TX_3_MMode2" value="0" />
+ <ctl name="VoiceMMode2_Tx Mixer TX_CDC_DMA_TX_3_MMode2" value="0" />
+ <ctl name="VoiceMMode2_Tx Mixer TX_CDC_DMA_TX_4_MMode2" value="0" />
<!-- Multimode Voice2 BTSCO -->
<ctl name="SLIM_7_RX_Voice Mixer VoiceMMode2" value="0" />
<ctl name="VoiceMMode2_Tx Mixer SLIM_7_TX_MMode2" value="0" />
@@ -220,8 +237,8 @@
<!-- RT Proxy Cal end -->
<!-- Incall Recording -->
- <ctl name="MultiMedia1 Mixer VOC_REC_UL" value="0" />
- <ctl name="MultiMedia1 Mixer VOC_REC_DL" value="0" />
+ <ctl name="MultiMedia9 Mixer VOC_REC_UL" value="0" />
+ <ctl name="MultiMedia9 Mixer VOC_REC_DL" value="0" />
<ctl name="MultiMedia8 Mixer VOC_REC_UL" value="0" />
<ctl name="MultiMedia8 Mixer VOC_REC_DL" value="0" />
<!-- Incall Recording End -->
@@ -235,6 +252,7 @@
<ctl name="RX_CDC_DMA_RX_1_Voice Mixer Voip" value="0" />
<ctl name="RX_CDC_DMA_RX_0_Voice Mixer Voip" value="0" />
<ctl name="Voip_Tx Mixer TX_CDC_DMA_TX_3_Voip" value="0" />
+ <ctl name="Voip_Tx Mixer TX_CDC_DMA_TX_4_Voip" value="0" />
<ctl name="SLIM_7_RX_Voice Mixer Voip" value="0" />
<ctl name="Voip_Tx Mixer SLIM_7_TX_Voip" value="0" />
<ctl name="AFE_PCM_RX_Voice Mixer Voip" value="0" />
@@ -275,6 +293,7 @@
<ctl name="RX INT2_1 MIX1 INP0" value="ZERO" />
<ctl name="AUX_RDAC Switch" value="0" />
<ctl name="SpkrMono WSA_RDAC" value="ZERO" />
+ <ctl name="SpkrMono BOOST Switch" value="1" />
<!-- RX Controls -->
<ctl name="RX_MACRO RX0 MUX" value="ZERO" />
@@ -302,6 +321,7 @@
<!-- TX Controls -->
<ctl name="TX_CDC_DMA_TX_3 Channels" value="One" />
+ <ctl name="DEC0_BCS Switch" value="0" />
<ctl name="MultiMedia1 Mixer TX_CDC_DMA_TX_3" value="0" />
<ctl name="ADC2_MIXER Switch" value="0" />
<ctl name="ADC2 MUX" value="ZERO" />
@@ -408,6 +428,7 @@
<!-- defaults for mmap record -->
<ctl name="MultiMedia16 Mixer TX_CDC_DMA_TX_3" value="0" />
+ <ctl name="MultiMedia16 Mixer TX_CDC_DMA_TX_4" value="0" />
<ctl name="MultiMedia16 Mixer SLIM_7_TX" value="0" />
<ctl name="MultiMedia16 Mixer SLIM_8_TX" value="0" />
<ctl name="MultiMedia16 Mixer USB_AUDIO_TX" value="0" />
@@ -419,18 +440,27 @@
<path name="echo-reference">
<ctl name="AUDIO_REF_EC_UL1 MUX" value="RX_CDC_DMA_RX_1" />
+ <ctl name="EC Reference Channels" value="One"/>
+ </path>
+
+ <path name="echo-reference handset">
+ <ctl name="AUDIO_REF_EC_UL1 MUX" value="RX_CDC_DMA_RX_0" />
+ <ctl name="EC Reference Channels" value="One"/>
</path>
<path name="echo-reference headphones">
<ctl name="AUDIO_REF_EC_UL1 MUX" value="RX_CDC_DMA_RX_0" />
+ <ctl name="EC Reference Channels" value="Two"/>
</path>
<path name="echo-reference display-port">
<ctl name="AUDIO_REF_EC_UL1 MUX" value="DISPLAY_PORT" />
+ <ctl name="EC Reference Channels" value="Two"/>
</path>
<path name="echo-reference headphones-44.1">
<ctl name="AUDIO_REF_EC_UL1 MUX" value="RX_CDC_DMA_RX_0" />
+ <ctl name="EC Reference Channels" value="Two"/>
</path>
<path name="echo-reference bt-sco">
@@ -448,14 +478,17 @@
<path name="echo-reference-voip">
<ctl name="AUDIO_REF_EC_UL10 MUX" value="RX_CDC_DMA_RX_1" />
+ <ctl name="EC Reference Channels" value="One"/>
</path>
<path name="echo-reference-voip handset">
<ctl name="AUDIO_REF_EC_UL10 MUX" value="RX_CDC_DMA_RX_0" />
+ <ctl name="EC Reference Channels" value="One"/>
</path>
<path name="echo-reference-voip headphones">
<ctl name="AUDIO_REF_EC_UL10 MUX" value="RX_CDC_DMA_RX_0" />
+ <ctl name="EC Reference Channels" value="Two"/>
</path>
<path name="echo-reference-voip bt-sco">
@@ -540,6 +573,10 @@
<ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia1" value="1" />
</path>
+ <path name="deep-buffer-playback headset">
+ <path name="deep-buffer-playback headphones" />
+ </path>
+
<path name="deep-buffer-playback speaker-and-headphones">
<path name="deep-buffer-playback headphones" />
<path name="deep-buffer-playback" />
@@ -649,6 +686,10 @@
<ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia5" value="1" />
</path>
+ <path name="low-latency-playback headset">
+ <path name="low-latency-playback headphones" />
+ </path>
+
<path name="low-latency-playback speaker-and-headphones">
<path name="low-latency-playback headphones" />
<path name="low-latency-playback" />
@@ -709,6 +750,10 @@
<ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia8" value="1" />
</path>
+ <path name="audio-ull-playback headset">
+ <path name="audio-ull-playback headphones" />
+ </path>
+
<path name="audio-ull-playback speaker-and-headphones">
<path name="audio-ull-playback" />
<path name="audio-ull-playback headphones" />
@@ -869,10 +914,18 @@
<ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia4" value="1" />
</path>
+ <path name="compress-offload-playback headset">
+ <path name="compress-offload-playback headphones" />
+ </path>
+
<path name="compress-offload-playback headphones-44.1">
<ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia4" value="1" />
</path>
+ <path name="compress-offload-playback headphones-dsd">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia4" value="1" />
+ </path>
+
<path name="compress-offload-playback speaker-and-headphones">
<path name="compress-offload-playback headphones" />
<path name="compress-offload-playback" />
@@ -974,10 +1027,18 @@
<ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia7" value="1" />
</path>
+ <path name="compress-offload-playback2 headset">
+ <path name="compress-offload-playback2 headphones" />
+ </path>
+
<path name="compress-offload-playback2 headphones-44.1">
<ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia7" value="1" />
</path>
+ <path name="compress-offload-playback2 headphones-dsd">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia7" value="1" />
+ </path>
+
<path name="compress-offload-playback2 speaker-and-headphones">
<path name="compress-offload-playback2 headphones" />
<path name="compress-offload-playback2" />
@@ -1079,10 +1140,18 @@
<ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia10" value="1" />
</path>
+ <path name="compress-offload-playback3 headset">
+ <path name="compress-offload-playback3 headphones" />
+ </path>
+
<path name="compress-offload-playback3 headphones-44.1">
<ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia10" value="1" />
</path>
+ <path name="compress-offload-playback3 headphones-dsd">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia10" value="1" />
+ </path>
+
<path name="compress-offload-playback3 speaker-and-headphones">
<path name="compress-offload-playback3 headphones" />
<path name="compress-offload-playback3" />
@@ -1184,6 +1253,14 @@
<ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia11" value="1" />
</path>
+ <path name="compress-offload-playback4 headset">
+ <path name="compress-offload-playback4 headphones" />
+ </path>
+
+ <path name="compress-offload-playback4 headphones-dsd">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia11" value="1" />
+ </path>
+
<path name="compress-offload-playback4 headphones-44.1">
<ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia11" value="1" />
</path>
@@ -1289,10 +1366,18 @@
<ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia12" value="1" />
</path>
+ <path name="compress-offload-playback5 headset">
+ <path name="compress-offload-playback5 headphones" />
+ </path>
+
<path name="compress-offload-playback5 headphones-44.1">
<ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia12" value="1" />
</path>
+ <path name="compress-offload-playback5 headphones-dsd">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia12" value="1" />
+ </path>
+
<path name="compress-offload-playback5 speaker-and-headphones">
<path name="compress-offload-playback5 headphones" />
<path name="compress-offload-playback5" />
@@ -1394,10 +1479,18 @@
<ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia13" value="1" />
</path>
+ <path name="compress-offload-playback6 headset">
+ <path name="compress-offload-playback6 headphones" />
+ </path>
+
<path name="compress-offload-playback6 headphones-44.1">
<ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia13" value="1" />
</path>
+ <path name="compress-offload-playback6 headphones-dsd">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia13" value="1" />
+ </path>
+
<path name="compress-offload-playback6 speaker-and-headphones">
<path name="compress-offload-playback6 headphones" />
<path name="compress-offload-playback6" />
@@ -1499,10 +1592,18 @@
<ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia14" value="1" />
</path>
+ <path name="compress-offload-playback7 headset">
+ <path name="compress-offload-playback7 headphones" />
+ </path>
+
<path name="compress-offload-playback7 headphones-44.1">
<ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia14" value="1" />
</path>
+ <path name="compress-offload-playback7 headphones-dsd">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia14" value="1" />
+ </path>
+
<path name="compress-offload-playback7 speaker-and-headphones">
<path name="compress-offload-playback7 headphones" />
<path name="compress-offload-playback7" />
@@ -1604,10 +1705,18 @@
<ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia15" value="1" />
</path>
+ <path name="compress-offload-playback8 headset">
+ <path name="compress-offload-playback8 headphones" />
+ </path>
+
<path name="compress-offload-playback8 headphones-44.1">
<ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia15" value="1" />
</path>
+ <path name="compress-offload-playback8 headphones-dsd">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia15" value="1" />
+ </path>
+
<path name="compress-offload-playback8 speaker-and-headphones">
<path name="compress-offload-playback8 headphones" />
<path name="compress-offload-playback8" />
@@ -1709,10 +1818,18 @@
<ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia16" value="1" />
</path>
+ <path name="compress-offload-playback9 headset">
+ <path name="compress-offload-playback9 headphones" />
+ </path>
+
<path name="compress-offload-playback9 headphones-44.1">
<ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia16" value="1" />
</path>
+ <path name="compress-offload-playback9 headphones-dsd">
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia16" value="1" />
+ </path>
+
<path name="compress-offload-playback9 speaker-and-headphones">
<path name="compress-offload-playback9 headphones" />
<path name="compress-offload-playback9" />
@@ -1770,6 +1887,10 @@
<path name="audio-record bt-sco" />
</path>
+ <path name="audio-record headset-mic">
+ <ctl name="MultiMedia1 Mixer TX_CDC_DMA_TX_4" value="1" />
+ </path>
+
<path name="audio-record bt-sco-swb">
<path name="audio-record bt-sco" />
</path>
@@ -1782,6 +1903,10 @@
<ctl name="MultiMedia8 Mixer TX_CDC_DMA_TX_3" value="1" />
</path>
+ <path name="audio-record-compress headset-mic">
+ <ctl name="MultiMedia8 Mixer TX_CDC_DMA_TX_4" value="1" />
+ </path>
+
<path name="audio-record-compress bt-sco">
<ctl name="MultiMedia8 Mixer SLIM_7_TX" value="1" />
</path>
@@ -1825,11 +1950,15 @@
</path>
<path name="low-latency-record">
- <ctl name="MultiMedia8 Mixer TX_CDC_DMA_TX_3" value="1" />
+ <ctl name="MultiMedia8 Mixer TX_CDC_DMA_TX_3" value="1" />
+ </path>
+
+ <path name="low-latency-record headset-mic">
+ <ctl name="MultiMedia8 Mixer TX_CDC_DMA_TX_4" value="1" />
</path>
<path name="low-latency-record bt-sco">
- <ctl name="MultiMedia8 Mixer SLIM_7_TX" value="1" />
+ <ctl name="MultiMedia8 Mixer SLIM_7_TX" value="1" />
</path>
<path name="low-latency-record bt-sco-wb">
@@ -1865,8 +1994,12 @@
<ctl name="RX_CDC_DMA_RX_0_DL_HL Switch" value="1" />
</path>
+ <path name="play-fm headset">
+ <path name="play-fm headphones" />
+ </path>
+
<path name="incall-rec-uplink">
- <ctl name="MultiMedia1 Mixer VOC_REC_UL" value="1" />
+ <ctl name="MultiMedia9 Mixer VOC_REC_UL" value="1" />
</path>
<path name="incall-rec-uplink bt-sco">
@@ -1893,6 +2026,10 @@
<path name="incall-rec-uplink" />
</path>
+ <path name="incall-rec-uplink headset-mic">
+ <path name="incall-rec-uplink" />
+ </path>
+
<path name="incall-rec-uplink-compress">
<ctl name="MultiMedia8 Mixer VOC_REC_UL" value="1" />
</path>
@@ -1917,8 +2054,12 @@
<path name="incall-rec-uplink-compress" />
</path>
+ <path name="incall-rec-uplink-compress headset-mic">
+ <path name="incall-rec-uplink-compress" />
+ </path>
+
<path name="incall-rec-downlink">
- <ctl name="MultiMedia1 Mixer VOC_REC_DL" value="1" />
+ <ctl name="MultiMedia9 Mixer VOC_REC_DL" value="1" />
</path>
<path name="incall-rec-downlink bt-sco">
@@ -1945,6 +2086,10 @@
<path name="incall-rec-downlink" />
</path>
+ <path name="incall-rec-downlink headset-mic">
+ <path name="incall-rec-downlink" />
+ </path>
+
<path name="incall-rec-downlink-compress">
<ctl name="MultiMedia8 Mixer VOC_REC_DL" value="1" />
</path>
@@ -1998,6 +2143,10 @@
<path name="incall-rec-uplink-and-downlink" />
</path>
+ <path name="incall-rec-uplink-and-downlink headset-mic">
+ <path name="incall-rec-uplink-and-downlink" />
+ </path>
+
<path name="incall-rec-uplink-and-downlink-compress">
<path name="incall-rec-uplink-compress" />
<path name="incall-rec-downlink-compress" />
@@ -2023,6 +2172,10 @@
<path name="incall-rec-uplink-and-downlink-compress" />
</path>
+ <path name="incall-rec-uplink-and-downlink-compress headset-mic">
+ <path name="incall-rec-uplink-and-downlink-compress" />
+ </path>
+
<path name="hfp-sco">
</path>
@@ -2057,6 +2210,11 @@
<ctl name="Voip_Tx Mixer TX_CDC_DMA_TX_3_Voip" value="1" />
</path>
+ <path name="compress-voip-call headset">
+ <ctl name="RX_CDC_DMA_RX_0_Voice Mixer Voip" value="1" />
+ <ctl name="Voip_Tx Mixer TX_CDC_DMA_TX_4_Voip" value="1" />
+ </path>
+
<path name="compress-voip-call bt-sco">
<ctl name="SLIM_7_RX_Voice Mixer Voip" value="1" />
<ctl name="Voip_Tx Mixer SLIM_7_TX_Voip" value="1" />
@@ -2106,6 +2264,11 @@
<ctl name="VoiceMMode1_Tx Mixer TX_CDC_DMA_TX_3_MMode1" value="1" />
</path>
+ <path name="voicemmode1-call headset">
+ <ctl name="RX_CDC_DMA_RX_0_Voice Mixer VoiceMMode1" value="1" />
+ <ctl name="VoiceMMode1_Tx Mixer TX_CDC_DMA_TX_4_MMode1" value="1" />
+ </path>
+
<path name="voicemmode1-call bt-sco">
<ctl name="SLIM_7_RX_Voice Mixer VoiceMMode1" value="1" />
<ctl name="VoiceMMode1_Tx Mixer SLIM_7_TX_MMode1" value="1" />
@@ -2160,6 +2323,11 @@
<ctl name="VoiceMMode2_Tx Mixer TX_CDC_DMA_TX_3_MMode2" value="1" />
</path>
+ <path name="voicemmode2-call headset">
+ <ctl name="RX_CDC_DMA_RX_0_Voice Mixer VoiceMMode2" value="1" />
+ <ctl name="VoiceMMode2_Tx Mixer TX_CDC_DMA_TX_4_MMode2" value="1" />
+ </path>
+
<path name="voicemmode2-call bt-sco">
<ctl name="SLIM_7_RX_Voice Mixer VoiceMMode2" value="1" />
<ctl name="VoiceMMode2_Tx Mixer SLIM_7_TX_MMode2" value="1" />
@@ -2217,6 +2385,10 @@
<ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia10" value="1" />
</path>
+ <path name="audio-playback-voip headset">
+ <path name="audio-playback-voip headphones" />
+ </path>
+
<path name="audio-playback-voip bt-sco">
<ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia10" value="1" />
</path>
@@ -2265,6 +2437,10 @@
<ctl name="MultiMedia10 Mixer TX_CDC_DMA_TX_3" value="1" />
</path>
+ <path name="audio-record-voip headset-mic">
+ <ctl name="MultiMedia10 Mixer TX_CDC_DMA_TX_4" value="1" />
+ </path>
+
<path name="audio-record-voip usb-headset-mic">
<ctl name="MultiMedia10 Mixer USB_AUDIO_TX" value="1" />
</path>
@@ -2476,6 +2652,10 @@
<ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia16" value="1" />
</path>
+ <path name="mmap-playback headset">
+ <path name="mmap-playback headphones" />
+ </path>
+
<path name="mmap-playback speaker-and-headphones">
<path name="mmap-playback" />
<path name="mmap-playback headphones" />
@@ -2491,7 +2671,7 @@
</path>
<path name="mmap-playback bt-sco-wb">
- <ctl name="BT SampleRate" value="16000" />
+ <ctl name="BT SampleRate" value="KHZ_16" />
<path name="mmap-playback bt-sco" />
</path>
@@ -2515,7 +2695,7 @@
<ctl name="DISPLAY_PORT Mixer MultiMedia16" value="1" />
</path>
- <path name="mmap-buffer-playback hdmi">
+ <path name="mmap-playback hdmi">
<ctl name="HDMI Mixer MultiMedia16" value="1" />
</path>
@@ -2550,11 +2730,15 @@
</path>
<path name="mmap-record">
- <ctl name="MultiMedia16 Mixer TX_CDC_DMA_TX_3" value="1" />
+ <ctl name="MultiMedia16 Mixer TX_CDC_DMA_TX_3" value="1" />
+ </path>
+
+ <path name="mmap-record headset-mic">
+ <ctl name="MultiMedia16 Mixer TX_CDC_DMA_TX_4" value="1" />
</path>
<path name="mmap-record bt-sco">
- <ctl name="MultiMedia16 Mixer SLIM_7_TX" value="1" />
+ <ctl name="MultiMedia16 Mixer SLIM_7_TX" value="1" />
</path>
<path name="mmap-record bt-sco-wb">
@@ -2590,6 +2774,14 @@
<ctl name="USB_AUDIO_RX Audio Mixer MultiMedia2" value="1" />
</path>
+ <path name="hifi-record">
+ <ctl name="MultiMedia2 Mixer TX_CDC_DMA_TX_3" value="1" />
+ </path>
+
+ <path name="hifi-record headset-mic">
+ <ctl name="MultiMedia2 Mixer TX_CDC_DMA_TX_4" value="1" />
+ </path>
+
<path name="hifi-record usb-headset-mic">
<ctl name="MultiMedia2 Mixer USB_AUDIO_TX" value="1" />
</path>
@@ -2657,6 +2849,10 @@
<path name="incall_music_uplink" />
</path>
+ <path name="incall_music_uplink headset">
+ <path name="incall_music_uplink" />
+ </path>
+
<path name="incall_music_uplink speaker-and-headphones">
<path name="incall_music_uplink" />
</path>
@@ -2699,28 +2895,29 @@
<!-- These are actual sound device specific mixer settings -->
<path name="amic1">
- <ctl name="TX DEC0 MUX" value="SWR_MIC" />
- <ctl name="TX SMIC MUX0" value="SWR_MIC0" />
+ <ctl name="TX DEC2 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX2" value="SWR_MIC0" />
<ctl name="TX_CDC_DMA_TX_3 Channels" value="One" />
- <ctl name="TX_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
<ctl name="ADC1_MIXER Switch" value="1" />
</path>
<path name="amic2">
<ctl name="TX DEC0 MUX" value="SWR_MIC" />
<ctl name="TX SMIC MUX0" value="SWR_MIC4" />
- <ctl name="TX_CDC_DMA_TX_3 Channels" value="One" />
- <ctl name="TX_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="TX_CDC_DMA_TX_4 Channels" value="One" />
+ <ctl name="TX_AIF2_CAP Mixer DEC0" value="1" />
+ <ctl name="DEC0_BCS Switch" value="1" />
<ctl name="ADC2_MIXER Switch" value="1" />
<ctl name="ADC2 MUX" value="INP2" />
</path>
<path name="amic3">
- <ctl name="TX DEC0 MUX" value="SWR_MIC" />
- <ctl name="TX SMIC MUX0" value="SWR_MIC4" />
+ <ctl name="TX DEC2 MUX" value="SWR_MIC" />
+ <ctl name="TX SMIC MUX2" value="SWR_MIC4" />
<ctl name="TX_CDC_DMA_TX_3 Channels" value="One" />
- <ctl name="TX_AIF1_CAP Mixer DEC0" value="1" />
+ <ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
<ctl name="ADC2_MIXER Switch" value="1" />
<ctl name="ADC2 MUX" value="INP3" />
</path>
@@ -2899,6 +3096,10 @@
<path name="headphones" />
</path>
+ <path name="voice-headset">
+ <path name="headphones" />
+ </path>
+
<path name="voice-line">
<path name="voice-headphones" />
</path>
@@ -2999,11 +3200,11 @@
<path name="handset-dmic-endfire">
<ctl name="TX_CDC_DMA_TX_3 Channels" value="Two" />
<ctl name="TX DEC0 MUX" value="SWR_MIC" />
- <ctl name="TX SMIC MUX0" value="ADC0" />
+ <ctl name="TX SMIC MUX0" value="SWR_MIC0" />
<ctl name="TX_AIF1_CAP Mixer DEC0" value="1" />
<ctl name="ADC1_MIXER Switch" value="1" />
<ctl name="TX DEC1 MUX" value="SWR_MIC" />
- <ctl name="TX SMIC MUX1" value="ADC1" />
+ <ctl name="TX SMIC MUX1" value="SWR_MIC4" />
<ctl name="TX_AIF1_CAP Mixer DEC1" value="1" />
<ctl name="ADC2_MIXER Switch" value="1" />
<ctl name="ADC2 MUX" value="INP3" />
@@ -3012,12 +3213,12 @@
<path name="speaker-dmic-endfire">
<ctl name="TX_CDC_DMA_TX_3 Channels" value="Two" />
<ctl name="TX DEC0 MUX" value="SWR_MIC" />
- <ctl name="TX SMIC MUX0" value="ADC1" />
+ <ctl name="TX SMIC MUX0" value="SWR_MIC4" />
<ctl name="TX_AIF1_CAP Mixer DEC0" value="1" />
<ctl name="ADC2_MIXER Switch" value="1" />
<ctl name="ADC2 MUX" value="INP3" />
<ctl name="TX DEC1 MUX" value="SWR_MIC" />
- <ctl name="TX SMIC MUX1" value="ADC0" />
+ <ctl name="TX SMIC MUX1" value="SWR_MIC0" />
<ctl name="TX_AIF1_CAP Mixer DEC1" value="1" />
<ctl name="ADC1_MIXER Switch" value="1" />
</path>
diff --git a/configs/bengal/mixer_paths_scubaidp.xml b/configs/bengal/mixer_paths_scubaidp.xml
index acf1dd7..4afdbba 100644
--- a/configs/bengal/mixer_paths_scubaidp.xml
+++ b/configs/bengal/mixer_paths_scubaidp.xml
@@ -361,8 +361,8 @@
<ctl name="RX_RX0 Digital Volume" value="84" />
<ctl name="RX_RX1 Digital Volume" value="84" />
<ctl name="RX_RX2 Digital Volume" value="78" />
- <ctl name="HPHL Volume" value="20" />
- <ctl name="HPHR Volume" value="20" />
+ <ctl name="HPHL Volume" value="12" />
+ <ctl name="HPHR Volume" value="12" />
<ctl name="EAR SPKR PA Gain" value="G_DEFAULT" />
<ctl name="TX_DEC0 Volume" value="102" />
@@ -2611,8 +2611,6 @@
<ctl name="HPHR_COMP Switch" value="1" />
<ctl name="HPHL_RDAC Switch" value="1" />
<ctl name="HPHR_RDAC Switch" value="1" />
- <ctl name="RX_RX0 Digital Volume" value="65" />
- <ctl name="RX_RX1 Digital Volume" value="65" />
</path>
<path name="headphones-44.1">
@@ -2723,16 +2721,10 @@
<ctl name="RX INT1_1 MIX1 INP0" value="RX1" />
<ctl name="RX INT0 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
- <ctl name="RX_COMP1 Switch" value="1" />
- <ctl name="RX_COMP2 Switch" value="1" />
- <ctl name="HPHL_COMP Switch" value="1" />
- <ctl name="HPHR_COMP Switch" value="1" />
<ctl name="HPHL_RDAC Switch" value="1" />
<ctl name="HPHR_RDAC Switch" value="1" />
<ctl name="LO_RDAC Switch" value="1" />
<ctl name="SpkrMono WSA_RDAC" value="Switch" />
- <ctl name="RX_RX0 Digital Volume" value="65" />
- <ctl name="RX_RX1 Digital Volume" value="65" />
</path>
<path name="speaker-and-headphones-hifi-filter">
diff --git a/configs/bengal/mixer_paths_scubaqrd.xml b/configs/bengal/mixer_paths_scubaqrd.xml
index fd681a6..a59f547 100644
--- a/configs/bengal/mixer_paths_scubaqrd.xml
+++ b/configs/bengal/mixer_paths_scubaqrd.xml
@@ -346,8 +346,8 @@
<ctl name="RX_RX0 Digital Volume" value="84" />
<ctl name="RX_RX1 Digital Volume" value="84" />
<ctl name="RX_RX2 Digital Volume" value="84" />
- <ctl name="HPHL Volume" value="20" />
- <ctl name="HPHR Volume" value="20" />
+ <ctl name="HPHL Volume" value="12" />
+ <ctl name="HPHR Volume" value="12" />
<ctl name="EAR SPKR PA Gain" value="G_DEFAULT" />
<ctl name="TX_DEC0 Volume" value="84" />
@@ -2588,8 +2588,6 @@
<ctl name="HPHR_COMP Switch" value="1" />
<ctl name="HPHL_RDAC Switch" value="1" />
<ctl name="HPHR_RDAC Switch" value="1" />
- <ctl name="RX_RX0 Digital Volume" value="65" />
- <ctl name="RX_RX1 Digital Volume" value="65" />
</path>
<path name="headphones-44.1">
@@ -2702,16 +2700,10 @@
<ctl name="RX INT1_1 MIX1 INP0" value="RX1" />
<ctl name="RX INT0 DEM MUX" value="CLSH_DSM_OUT" />
<ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
- <ctl name="RX_COMP1 Switch" value="1" />
- <ctl name="RX_COMP2 Switch" value="1" />
- <ctl name="HPHL_COMP Switch" value="1" />
- <ctl name="HPHR_COMP Switch" value="1" />
<ctl name="HPHL_RDAC Switch" value="1" />
<ctl name="HPHR_RDAC Switch" value="1" />
<ctl name="LO_RDAC Switch" value="1" />
<ctl name="SpkrMono WSA_RDAC" value="Switch" />
- <ctl name="RX_RX0 Digital Volume" value="65" />
- <ctl name="RX_RX1 Digital Volume" value="65" />
</path>
<path name="speaker-and-headphones-hifi-filter">
diff --git a/configs/lahaina/audio_platform_info_intcodec.xml b/configs/lahaina/audio_platform_info_intcodec.xml
index 3048232..3fdf5d8 100644
--- a/configs/lahaina/audio_platform_info_intcodec.xml
+++ b/configs/lahaina/audio_platform_info_intcodec.xml
@@ -96,6 +96,8 @@
<usecase name="USECASE_AUDIO_A2DP_ABR_FEEDBACK" type="out" id="36" />
<usecase name="USECASE_INCALL_MUSIC_UPLINK" type="out" id="23" />
<usecase name="USECASE_AUDIO_RECORD_COMPRESS2" type="in" id="37" />
+ <usecase name="USECASE_AUDIO_PLAYBACK_WITH_HAPTICS" type="out" id="40" />
+ <usecase name="USECASE_AUDIO_PLAYBACK_HAPTICS" type="out" id="41" />
</pcm_ids>
<config_params>
<!-- In the below value string, the value indicates default mono -->
@@ -120,6 +122,7 @@
<device name="SND_DEVICE_OUT_SPEAKER" acdb_id="15"/>
<device name="SND_DEVICE_OUT_SPEAKER_REVERSE" acdb_id="15"/>
<device name="SND_DEVICE_OUT_SPEAKER_PROTECTED" acdb_id="124"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_AND_HAPTICS" acdb_id="15"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_PROTECTED" acdb_id="101"/>
<device name="SND_DEVICE_OUT_SPEAKER_PROTECTED_VBAT" acdb_id="124"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_PROTECTED_VBAT" acdb_id="101"/>
@@ -143,6 +146,7 @@
</acdb_ids>
<backend_names>
<device name="SND_DEVICE_OUT_HEADPHONES" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
+ <device name="SND_DEVICE_OUT_HEADPHONES_AND_HAPTICS" backend="headphones-and-haptics" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_HEADPHONES_HIFI_FILTER" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_HEADPHONES_44_1" backend="headphones-44.1" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_BT_SCO_WB" backend="bt-sco-wb" interface="SLIMBUS_7_RX"/>
@@ -164,6 +168,7 @@
<device name="SND_DEVICE_OUT_VOICE_TTY_VCO_HEADSET" backend="headset" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_HANDSET" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER" interface="WSA_CDC_DMA_RX_0"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_AND_HAPTICS" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_EXTERNAL_1" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_EXTERNAL_2" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_REVERSE" interface="WSA_CDC_DMA_RX_0"/>
diff --git a/configs/lahaina/audio_platform_info_qrd.xml b/configs/lahaina/audio_platform_info_qrd.xml
index 77a72b2..e8ce674 100644
--- a/configs/lahaina/audio_platform_info_qrd.xml
+++ b/configs/lahaina/audio_platform_info_qrd.xml
@@ -96,6 +96,8 @@
<usecase name="USECASE_AUDIO_A2DP_ABR_FEEDBACK" type="out" id="36" />
<usecase name="USECASE_INCALL_MUSIC_UPLINK" type="out" id="23" />
<usecase name="USECASE_AUDIO_RECORD_COMPRESS2" type="in" id="37" />
+ <usecase name="USECASE_AUDIO_PLAYBACK_WITH_HAPTICS" type="out" id="40" />
+ <usecase name="USECASE_AUDIO_PLAYBACK_HAPTICS" type="out" id="41" />
</pcm_ids>
<config_params>
<!-- In the below value string, the value indicates default mono -->
@@ -120,6 +122,7 @@
<device name="SND_DEVICE_OUT_SPEAKER" acdb_id="15"/>
<device name="SND_DEVICE_OUT_SPEAKER_REVERSE" acdb_id="15"/>
<device name="SND_DEVICE_OUT_SPEAKER_PROTECTED" acdb_id="124"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_AND_HAPTICS" acdb_id="15"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_PROTECTED" acdb_id="101"/>
<device name="SND_DEVICE_OUT_SPEAKER_PROTECTED_VBAT" acdb_id="124"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_PROTECTED_VBAT" acdb_id="101"/>
@@ -145,6 +148,7 @@
<device name="SND_DEVICE_OUT_HEADPHONES" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_HEADPHONES_HIFI_FILTER" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_HEADPHONES_44_1" backend="headphones-44.1" interface="RX_CDC_DMA_RX_0"/>
+ <device name="SND_DEVICE_OUT_HEADPHONES_AND_HAPTICS" backend="headphones-and-haptics" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_BT_SCO_WB" backend="bt-sco-wb" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_BT_SCO" backend="bt-sco" interface="SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_BT_A2DP" backend="bt-a2dp" interface="SLIMBUS_7_RX"/>
@@ -164,6 +168,7 @@
<device name="SND_DEVICE_OUT_VOICE_TTY_VCO_HEADSET" backend="headset" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_HANDSET" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER" interface="WSA_CDC_DMA_RX_0"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_AND_HAPTICS" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_EXTERNAL_1" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_EXTERNAL_2" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_REVERSE" interface="WSA_CDC_DMA_RX_0"/>
diff --git a/configs/lahaina/audio_policy_configuration.xml b/configs/lahaina/audio_policy_configuration.xml
index a5a5b6c..3f9b799 100644
--- a/configs/lahaina/audio_policy_configuration.xml
+++ b/configs/lahaina/audio_policy_configuration.xml
@@ -21,7 +21,7 @@
<!-- version section contains a “version” tag in the form “major.minor” e.g version=”1.0” -->
<!-- Global configuration Decalaration -->
- <globalConfiguration speaker_drc_enabled="true"/>
+ <globalConfiguration speaker_drc_enabled="true" call_screen_mode_supported="true"/>
<!-- Modules section:
@@ -68,6 +68,10 @@
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
+ <mixPort name="haptics output" role="source">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO_HAPTIC_A"/>
+ </mixPort>
<mixPort name="deep_buffer" role="source"
flags="AUDIO_OUTPUT_FLAG_DEEP_BUFFER">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
@@ -329,15 +333,15 @@
<!-- route declaration, i.e. list all available sources for a given sink -->
<routes>
<route type="mix" sink="Earpiece"
- sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx,mmap_no_irq_out"/>
+ sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx,mmap_no_irq_out,haptics output"/>
<route type="mix" sink="Speaker"
- sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx,mmap_no_irq_out"/>
+ sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx,mmap_no_irq_out,haptics output"/>
<route type="mix" sink="Wired Headset"
- sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx,mmap_no_irq_out"/>
+ sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx,mmap_no_irq_out,haptics output"/>
<route type="mix" sink="Wired Headphones"
- sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx,mmap_no_irq_out"/>
+ sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx,mmap_no_irq_out,haptics output"/>
<route type="mix" sink="Line"
- sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx,mmap_no_irq_out"/>
+ sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx,mmap_no_irq_out,haptics output"/>
<route type="mix" sink="HDMI"
sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,compress_passthrough,voip_rx"/>
<route type="mix" sink="Proxy"
@@ -426,18 +430,18 @@
</module>
<!-- Remote Submix Audio HAL -->
- <xi:include href="/vendor/etc/r_submix_audio_policy_configuration.xml"/>
+ <xi:include href="/vendor/etc/audio/sku_lahaina/r_submix_audio_policy_configuration.xml"/>
<!-- Bluetooth Audio HAL for hearing aid -->
- <xi:include href="/vendor/etc/bluetooth_qti_hearing_aid_audio_policy_configuration.xml"/>
+ <xi:include href="/vendor/etc/audio/sku_lahaina/bluetooth_qti_hearing_aid_audio_policy_configuration.xml"/>
</modules>
<!-- End of Modules section -->
<!-- Volume section -->
- <xi:include href="/vendor/etc/audio_policy_volumes.xml"/>
- <xi:include href="/vendor/etc/default_volume_tables.xml"/>
+ <xi:include href="/vendor/etc/audio/sku_lahaina/audio_policy_volumes.xml"/>
+ <xi:include href="/vendor/etc/audio/sku_lahaina/default_volume_tables.xml"/>
<!-- End of Volume section -->
diff --git a/configs/lahaina/lahaina.mk b/configs/lahaina/lahaina.mk
index a6504a8..09b52f3 100644
--- a/configs/lahaina/lahaina.mk
+++ b/configs/lahaina/lahaina.mk
@@ -147,6 +147,47 @@
$(TOPDIR)vendor/qcom/opensource/audio-hal/primary-hal/configs/common/bluetooth_qti_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_qti_audio_policy_configuration.xml \
$(TOPDIR)vendor/qcom/opensource/audio-hal/primary-hal/configs/common/bluetooth_qti_hearing_aid_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_qti_hearing_aid_audio_policy_configuration.xml
+#TODO: Delete xml's from obsolete paths
+# Audio configuration xml's related to Lahaina
+QCV_FAMILY_SKUS := lahaina
+DEVICE_SKU := lahaina
+
+PRODUCT_COPY_FILES += \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/audio_io_policy.conf:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/audio_io_policy.conf \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/audio_effects.conf:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/audio_effects.conf \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/audio_effects.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/audio_effects.xml \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/sound_trigger_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/sound_trigger_platform_info.xml \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/audio_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/audio_platform_info.xml \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/audio_platform_info_qrd.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/audio_platform_info_qrd.xml \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/audio_platform_info_intcodec.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/audio_platform_info_intcodec.xml \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/sound_trigger_mixer_paths.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/sound_trigger_mixer_paths.xml \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/sound_trigger_mixer_paths_qrd.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/sound_trigger_mixer_paths_qrd.xml \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/sound_trigger_mixer_paths_cdp.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/sound_trigger_mixer_paths_cdp.xml \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/mixer_paths.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/mixer_paths.xml \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/mixer_paths_qrd.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/mixer_paths_qrd.xml \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/mixer_paths_cdp.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/mixer_paths_cdp.xml \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/audio_configs.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/audio_configs.xml \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/audio_configs_stock.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/audio_configs_stock.xml \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/audio_tuning_mixer.txt:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/audio_tuning_mixer.txt
+
+# Audio configuration xml's common to Lahaina family
+PRODUCT_COPY_FILES += \
+$(foreach DEVICE_SKU, $(QCV_FAMILY_SKUS), \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/common/media_codecs_vendor_audio.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/media_codecs_vendor_audio.xml \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/common/audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/audio_policy_configuration.xml \
+ frameworks/av/services/audiopolicy/config/a2dp_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/a2dp_audio_policy_configuration.xml \
+ frameworks/av/services/audiopolicy/config/audio_policy_volumes.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/audio_policy_volumes.xml \
+ frameworks/av/services/audiopolicy/config/default_volume_tables.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/default_volume_tables.xml \
+ frameworks/av/services/audiopolicy/config/r_submix_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/r_submix_audio_policy_configuration.xml \
+ frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/usb_audio_policy_configuration.xml \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/common/bluetooth_qti_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/bluetooth_qti_audio_policy_configuration.xml \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/common/bluetooth_qti_hearing_aid_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/bluetooth_qti_hearing_aid_audio_policy_configuration.xml)
+
+# Audio permission xml's common to Lahaina family
+PRODUCT_COPY_FILES += \
+ frameworks/native/data/etc/android.hardware.audio.pro.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.audio.pro.xml \
+ frameworks/native/data/etc/android.hardware.audio.low_latency.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.audio.low_latency.xml
+
# Reduce client buffer size for fast audio output tracks
PRODUCT_PROPERTY_OVERRIDES += \
af.fast_track_multiplier=1
diff --git a/configs/lahaina/mixer_paths.xml b/configs/lahaina/mixer_paths.xml
index 251f9c5..dbe7888 100644
--- a/configs/lahaina/mixer_paths.xml
+++ b/configs/lahaina/mixer_paths.xml
@@ -161,6 +161,7 @@
<ctl name="WSA_CDC_DMA_TX_0 Format" value="UNPACKED" />
<ctl name="RX_CDC_DMA_RX_0 Format" value="UNPACKED" />
<ctl name="TX_CDC_DMA_TX_3 Format" value="UNPACKED" />
+ <ctl name="WSA_CDC_DMA_TX_0 SampleRate" value="KHZ_48" />
<!-- HFP start -->
<ctl name="HFP_SLIM7_UL_HL Switch" value="0" />
<ctl name="WSA_CDC_DMA_RX_0 Port Mixer SLIM_7_TX" value="0" />
@@ -212,6 +213,7 @@
<ctl name="DISPLAY_PORT_RX_Voice Mixer VoiceMMode1" value="0" />
<!-- Multimode Voice1 proxy-Port -->
<ctl name="PROXY_RX_Voice Mixer VoiceMMode1" value="0" />
+ <ctl name="VoiceMMode1_Tx Mixer PROXY_TX_MMode1" value="0" />
<!-- Miltimode Voice1 end-->
<!-- Multimode Voice2 -->
@@ -231,6 +233,7 @@
<ctl name="DISPLAY_PORT_RX_Voice Mixer VoiceMMode2" value="0" />
<!-- Multimode Voice2 proxy-Port -->
<ctl name="PROXY_RX_Voice Mixer VoiceMMode2" value="0" />
+ <ctl name="VoiceMMode2_Tx Mixer PROXY_TX_MMode2" value="0" />
<!-- Multimode Voice2 end-->
<!-- Voice external ec. reference -->
@@ -457,6 +460,11 @@
<ctl name="MultiMedia16 Mixer TERT_MI2S_TX" value="0" />
<ctl name="MultiMedia16 Mixer USB_AUDIO_TX" value="0" />
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="0"/>
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="0"/>
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="0" />
+ <ctl name="RX_CDC_DMA_RX_6 Channels" value="One" />
+
<!-- These are audio route (FE to BE) specific mixer settings -->
<path name="gsm-mode">
<ctl name="GSM mode Enable" value="ON" />
@@ -1855,6 +1863,10 @@
<path name="incall-rec-uplink" />
</path>
+ <path name="incall-rec-uplink call-proxy-in">
+ <path name="incall-rec-uplink" />
+ </path>
+
<path name="incall-rec-uplink-compress">
<ctl name="MultiMedia8 Mixer VOC_REC_UL" value="1" />
</path>
@@ -1907,6 +1919,10 @@
<path name="incall-rec-downlink" />
</path>
+ <path name="incall-rec-downlink call-proxy-in">
+ <path name="incall-rec-downlink" />
+ </path>
+
<path name="incall-rec-downlink headset-mic">
<path name="incall-rec-downlink" />
</path>
@@ -1964,6 +1980,10 @@
<path name="incall-rec-uplink-and-downlink" />
</path>
+ <path name="incall-rec-uplink-and-downlink call-proxy-in">
+ <path name="incall-rec-uplink-and-downlink" />
+ </path>
+
<path name="incall-rec-uplink-and-downlink headset-mic">
<path name="incall-rec-uplink-and-downlink" />
</path>
@@ -2069,6 +2089,11 @@
<ctl name="VoiceMMode1_Tx Mixer TX_CDC_DMA_TX_3_MMode1" value="1" />
</path>
+ <path name="voicemmode1-call call-proxy">
+ <ctl name="PROXY_RX_Voice Mixer VoiceMMode1" value="1" />
+ <ctl name="VoiceMMode1_Tx Mixer PROXY_TX_MMode1" value="1" />
+ </path>
+
<path name="voicemmode1-call headphones">
<ctl name="RX_CDC_DMA_RX_0_Voice Mixer VoiceMMode1" value="1" />
<ctl name="VoiceMMode1_Tx Mixer TX_CDC_DMA_TX_3_MMode1" value="1" />
@@ -2195,6 +2220,11 @@
<ctl name="VoiceMMode2_Tx Mixer TX_CDC_DMA_TX_3_MMode2" value="1" />
</path>
+ <path name="voicemmode2-call call-proxy">
+ <ctl name="PROXY_RX_Voice Mixer VoiceMMode2" value="1" />
+ <ctl name="VoiceMMode2_Tx Mixer PROXY_TX_MMode2" value="1" />
+ </path>
+
<!-- VoIP Rx settings -->
<path name="audio-playback-voip">
<ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia10" value="1" />
@@ -2286,6 +2316,16 @@
<path name="spkr-vi-record">
</path>
+ <path name="audio-with-haptics-playback speaker-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ </path>
+
+ <path name="audio-with-haptics-playback headphones-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ </path>
+
<!-- These are actual sound device specific mixer settings -->
<path name="amic2">
<ctl name="TX DEC0 MUX" value="SWR_MIC" />
@@ -2296,6 +2336,8 @@
<ctl name="ADC2_MIXER Switch" value="1" />
<ctl name="ADC2 MUX" value="INP2" />
<ctl name="ADC2 ChMap" value="SWRM_TX1_CH2" />
+ <ctl name="MBHC ChMap" value="SWRM_TX1_CH3" />
+ <ctl name="BCS Channel" value="CH2" />
<ctl name="HDR12 MUX" value="NO_HDR12" />
</path>
@@ -2351,6 +2393,23 @@
<ctl name="SpkrRight SWR DAC_Port Switch" value="1" />
</path>
+ <path name="speaker-and-haptics">
+ <ctl name="WSA_CDC_DMA_RX_0 Channels" value="Two" />
+ <ctl name="WSA RX0 MUX" value="AIF1_PB" />
+ <ctl name="WSA RX1 MUX" value="AIF1_PB" />
+ <ctl name="WSA_RX0 INP0" value="RX0" />
+ <ctl name="WSA_RX1 INP0" value="RX1" />
+ <ctl name="WSA_COMP1 Switch" value="1" />
+ <ctl name="WSA_COMP2 Switch" value="1" />
+ <ctl name="SpkrLeft COMP Switch" value="1" />
+ <ctl name="SpkrLeft VISENSE Switch" value="1" />
+ <ctl name="SpkrLeft SWR DAC_Port Switch" value="1" />
+ <ctl name="SpkrRight COMP Switch" value="1" />
+ <ctl name="SpkrRight VISENSE Switch" value="1" />
+ <ctl name="SpkrRight SWR DAC_Port Switch" value="1" />
+ <ctl name="SWR DAC_Port Switch" value="1" />
+ </path>
+
<path name="speaker-mono">
<ctl name="WSA_CDC_DMA_RX_0 Channels" value="One" />
<ctl name="WSA RX0 MUX" value="AIF1_PB" />
@@ -2528,6 +2587,23 @@
<ctl name="HPHR_RDAC Switch" value="1" />
</path>
+ <path name="headphones-and-haptics">
+ <ctl name="RX_MACRO RX0 MUX" value="AIF1_PB" />
+ <ctl name="RX_MACRO RX1 MUX" value="AIF1_PB" />
+ <ctl name="RX_CDC_DMA_RX_0 Channels" value="Two" />
+ <ctl name="RX INT0_1 MIX1 INP0" value="RX0" />
+ <ctl name="RX INT1_1 MIX1 INP0" value="RX1" />
+ <ctl name="RX INT0 DEM MUX" value="CLSH_DSM_OUT" />
+ <ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
+ <ctl name="RX_COMP1 Switch" value="1" />
+ <ctl name="RX_COMP2 Switch" value="1" />
+ <ctl name="HPHL_COMP Switch" value="1" />
+ <ctl name="HPHR_COMP Switch" value="1" />
+ <ctl name="HPHL_RDAC Switch" value="1" />
+ <ctl name="HPHR_RDAC Switch" value="1" />
+ <ctl name="SWR DAC_Port Switch" value="1" />
+ </path>
+
<path name="headphones-44.1">
<path name="headphones" />
</path>
@@ -3425,6 +3501,10 @@
<path name="incall_music_uplink" />
</path>
+ <path name="incall_music_uplink call-proxy">
+ <path name="incall_music_uplink" />
+ </path>
+
<path name="incall_music_uplink2">
<ctl name="Incall_Music_2 Audio Mixer MultiMedia9" value="1" />
</path>
@@ -3500,4 +3580,11 @@
<path name="incall_music_uplink2 afe-proxy">
<path name="incall_music_uplink2" />
</path>
+
+ <path name="call-proxy">
+ </path>
+
+ <path name="call-proxy-in">
+ </path>
+
</mixer>
diff --git a/configs/lahaina/mixer_paths_cdp.xml b/configs/lahaina/mixer_paths_cdp.xml
index f56980c..51ea04a 100644
--- a/configs/lahaina/mixer_paths_cdp.xml
+++ b/configs/lahaina/mixer_paths_cdp.xml
@@ -197,6 +197,7 @@
<ctl name="DISPLAY_PORT_RX_Voice Mixer VoiceMMode1" value="0" />
<!-- Multimode Voice1 proxy-Port -->
<ctl name="PROXY_RX_Voice Mixer VoiceMMode1" value="0" />
+ <ctl name="VoiceMMode1_Tx Mixer PROXY_TX_MMode1" value="0" />
<!-- Miltimode Voice1 end-->
<!-- Multimode Voice2 -->
@@ -216,6 +217,7 @@
<ctl name="DISPLAY_PORT_RX_Voice Mixer VoiceMMode2" value="0" />
<!-- Multimode Voice2 proxy-Port -->
<ctl name="PROXY_RX_Voice Mixer VoiceMMode2" value="0" />
+ <ctl name="VoiceMMode2_Tx Mixer PROXY_TX_MMode2" value="0" />
<!-- Multimode Voice2 end-->
<!-- Voice external ec. reference -->
@@ -449,6 +451,11 @@
<ctl name="MultiMedia16 Mixer TERT_MI2S_TX" value="0" />
<ctl name="MultiMedia16 Mixer USB_AUDIO_TX" value="0" />
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="0"/>
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="0"/>
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="0" />
+ <ctl name="RX_CDC_DMA_RX_6 Channels" value="One" />
+
<!-- These are audio route (FE to BE) specific mixer settings -->
<path name="gsm-mode">
<ctl name="GSM mode Enable" value="ON" />
@@ -1728,6 +1735,10 @@
<path name="incall-rec-uplink" />
</path>
+ <path name="incall-rec-uplink call-proxy-in">
+ <path name="incall-rec-uplink" />
+ </path>
+
<path name="incall-rec-uplink-compress">
<ctl name="MultiMedia8 Mixer VOC_REC_UL" value="1" />
</path>
@@ -1780,6 +1791,10 @@
<path name="incall-rec-downlink" />
</path>
+ <path name="incall-rec-downlink call-proxy-in">
+ <path name="incall-rec-downlink" />
+ </path>
+
<path name="incall-rec-downlink headset-mic">
<path name="incall-rec-downlink" />
</path>
@@ -1837,6 +1852,10 @@
<path name="incall-rec-uplink-and-downlink" />
</path>
+ <path name="incall-rec-uplink-and-downlink call-proxy-in">
+ <path name="incall-rec-uplink-and-downlink" />
+ </path>
+
<path name="incall-rec-uplink-and-downlink headset-mic">
<path name="incall-rec-uplink-and-downlink" />
</path>
@@ -1942,6 +1961,11 @@
<ctl name="VoiceMMode1_Tx Mixer TX_CDC_DMA_TX_3_MMode1" value="1" />
</path>
+ <path name="voicemmode1-call call-proxy">
+ <ctl name="PROXY_RX_Voice Mixer VoiceMMode1" value="1" />
+ <ctl name="VoiceMMode1_Tx Mixer PROXY_TX_MMode1" value="1" />
+ </path>
+
<path name="voicemmode1-call headphones">
<ctl name="RX_CDC_DMA_RX_0_Voice Mixer VoiceMMode1" value="1" />
<ctl name="VoiceMMode1_Tx Mixer TX_CDC_DMA_TX_3_MMode1" value="1" />
@@ -2048,6 +2072,11 @@
<ctl name="VoiceMMode2_Tx Mixer TX_CDC_DMA_TX_3_MMode2" value="1" />
</path>
+ <path name="voicemmode2-call call-proxy">
+ <ctl name="PROXY_RX_Voice Mixer VoiceMMode2" value="1" />
+ <ctl name="VoiceMMode2_Tx Mixer PROXY_TX_MMode2" value="1" />
+ </path>
+
<!-- VoIP Rx settings -->
<path name="audio-playback-voip">
<ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia10" value="1" />
@@ -2130,6 +2159,16 @@
<path name="spkr-vi-record">
</path>
+ <path name="audio-with-haptics-playback speaker-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ </path>
+
+ <path name="audio-with-haptics-playback headphones-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ </path>
+
<!-- These are actual sound device specific mixer settings -->
<path name="amic1">
<ctl name="TX DEC1 MUX" value="SWR_MIC" />
@@ -2147,6 +2186,8 @@
<ctl name="ADC2_MIXER Switch" value="1" />
<ctl name="ADC2 MUX" value="INP2" />
<ctl name="ADC2 ChMap" value="SWRM_TX1_CH2" />
+ <ctl name="MBHC ChMap" value="SWRM_TX1_CH3" />
+ <ctl name="BCS Channel" value="CH2" />
<ctl name="HDR12 MUX" value="NO_HDR12" />
</path>
@@ -2219,15 +2260,30 @@
<ctl name="WSA_COMP1 Switch" value="1" />
<ctl name="WSA_COMP2 Switch" value="1" />
<ctl name="SpkrLeft COMP Switch" value="1" />
- <ctl name="SpkrLeft BOOST Switch" value="1" />
<ctl name="SpkrLeft VISENSE Switch" value="1" />
<ctl name="SpkrLeft SWR DAC_Port Switch" value="1" />
<ctl name="SpkrRight COMP Switch" value="1" />
- <ctl name="SpkrRight BOOST Switch" value="1" />
<ctl name="SpkrRight VISENSE Switch" value="1" />
<ctl name="SpkrRight SWR DAC_Port Switch" value="1" />
</path>
+ <path name="speaker-and-haptics">
+ <ctl name="WSA_CDC_DMA_RX_0 Channels" value="Two" />
+ <ctl name="WSA RX0 MUX" value="AIF1_PB" />
+ <ctl name="WSA RX1 MUX" value="AIF1_PB" />
+ <ctl name="WSA_RX0 INP0" value="RX0" />
+ <ctl name="WSA_RX1 INP0" value="RX1" />
+ <ctl name="WSA_COMP1 Switch" value="1" />
+ <ctl name="WSA_COMP2 Switch" value="1" />
+ <ctl name="SpkrLeft COMP Switch" value="1" />
+ <ctl name="SpkrLeft VISENSE Switch" value="1" />
+ <ctl name="SpkrLeft SWR DAC_Port Switch" value="1" />
+ <ctl name="SpkrRight COMP Switch" value="1" />
+ <ctl name="SpkrRight VISENSE Switch" value="1" />
+ <ctl name="SpkrRight SWR DAC_Port Switch" value="1" />
+ <ctl name="SWR DAC_Port Switch" value="1" />
+ </path>
+
<path name="speaker-mono">
<ctl name="WSA_CDC_DMA_RX_0 Channels" value="One" />
<ctl name="WSA RX0 MUX" value="AIF1_PB" />
@@ -2409,6 +2465,23 @@
<ctl name="HPHR_RDAC Switch" value="1" />
</path>
+ <path name="headphones-and-haptics">
+ <ctl name="RX_MACRO RX0 MUX" value="AIF1_PB" />
+ <ctl name="RX_MACRO RX1 MUX" value="AIF1_PB" />
+ <ctl name="RX_CDC_DMA_RX_0 Channels" value="Two" />
+ <ctl name="RX INT0_1 MIX1 INP0" value="RX0" />
+ <ctl name="RX INT1_1 MIX1 INP0" value="RX1" />
+ <ctl name="RX INT0 DEM MUX" value="CLSH_DSM_OUT" />
+ <ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
+ <ctl name="RX_COMP1 Switch" value="1" />
+ <ctl name="RX_COMP2 Switch" value="1" />
+ <ctl name="HPHL_COMP Switch" value="1" />
+ <ctl name="HPHR_COMP Switch" value="1" />
+ <ctl name="HPHL_RDAC Switch" value="1" />
+ <ctl name="HPHR_RDAC Switch" value="1" />
+ <ctl name="SWR DAC_Port Switch" value="1" />
+ </path>
+
<path name="headphones-44.1">
<path name="headphones" />
</path>
@@ -3200,4 +3273,14 @@
<path name="incall_music_uplink afe-proxy">
<path name="incall_music_uplink" />
</path>
+
+ <path name="incall_music_uplink call-proxy">
+ <path name="incall_music_uplink" />
+ </path>
+
+ <path name="call-proxy">
+ </path>
+
+ <path name="call-proxy-in">
+ </path>
</mixer>
diff --git a/configs/lahaina/mixer_paths_qrd.xml b/configs/lahaina/mixer_paths_qrd.xml
index 18926e4..02865d0 100644
--- a/configs/lahaina/mixer_paths_qrd.xml
+++ b/configs/lahaina/mixer_paths_qrd.xml
@@ -212,6 +212,7 @@
<ctl name="DISPLAY_PORT_RX_Voice Mixer VoiceMMode1" value="0" />
<!-- Multimode Voice1 proxy-Port -->
<ctl name="PROXY_RX_Voice Mixer VoiceMMode1" value="0" />
+ <ctl name="VoiceMMode1_Tx Mixer PROXY_TX_MMode1" value="0" />
<!-- Miltimode Voice1 end-->
<!-- Multimode Voice2 -->
@@ -231,6 +232,7 @@
<ctl name="DISPLAY_PORT_RX_Voice Mixer VoiceMMode2" value="0" />
<!-- Multimode Voice2 proxy-Port -->
<ctl name="PROXY_RX_Voice Mixer VoiceMMode2" value="0" />
+ <ctl name="VoiceMMode2_Tx Mixer PROXY_TX_MMode2" value="0" />
<!-- Multimode Voice2 end-->
<!-- Voice external ec. reference -->
@@ -372,7 +374,7 @@
<ctl name="TX SMIC MUX7" value="ZERO" />
<!-- Volume controls -->
- <ctl name="WSA_RX0 Digital Volume" value="84" />
+ <ctl name="WSA_RX0 Digital Volume" value="78" />
<ctl name="WSA_RX1 Digital Volume" value="84" />
<ctl name="RX_RX0 Digital Volume" value="84" />
<ctl name="RX_RX1 Digital Volume" value="84" />
@@ -457,6 +459,11 @@
<ctl name="MultiMedia16 Mixer TERT_MI2S_TX" value="0" />
<ctl name="MultiMedia16 Mixer USB_AUDIO_TX" value="0" />
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="0"/>
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="0"/>
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="0" />
+ <ctl name="RX_CDC_DMA_RX_6 Channels" value="One" />
+
<!-- These are audio route (FE to BE) specific mixer settings -->
<path name="gsm-mode">
<ctl name="GSM mode Enable" value="ON" />
@@ -1855,6 +1862,10 @@
<path name="incall-rec-uplink" />
</path>
+ <path name="incall-rec-uplink call-proxy-in">
+ <path name="incall-rec-uplink" />
+ </path>
+
<path name="incall-rec-uplink-compress">
<ctl name="MultiMedia8 Mixer VOC_REC_UL" value="1" />
</path>
@@ -1907,6 +1918,10 @@
<path name="incall-rec-downlink" />
</path>
+ <path name="incall-rec-downlink call-proxy-in">
+ <path name="incall-rec-downlink" />
+ </path>
+
<path name="incall-rec-downlink headset-mic">
<path name="incall-rec-downlink" />
</path>
@@ -1964,6 +1979,10 @@
<path name="incall-rec-uplink-and-downlink" />
</path>
+ <path name="incall-rec-uplink-and-downlink call-proxy-in">
+ <path name="incall-rec-uplink-and-downlink" />
+ </path>
+
<path name="incall-rec-uplink-and-downlink headset-mic">
<path name="incall-rec-uplink-and-downlink" />
</path>
@@ -2069,6 +2088,11 @@
<ctl name="VoiceMMode1_Tx Mixer TX_CDC_DMA_TX_3_MMode1" value="1" />
</path>
+ <path name="voicemmode1-call call-proxy">
+ <ctl name="PROXY_RX_Voice Mixer VoiceMMode1" value="1" />
+ <ctl name="VoiceMMode1_Tx Mixer PROXY_TX_MMode1" value="1" />
+ </path>
+
<path name="voicemmode1-call headphones">
<ctl name="RX_CDC_DMA_RX_0_Voice Mixer VoiceMMode1" value="1" />
<ctl name="VoiceMMode1_Tx Mixer TX_CDC_DMA_TX_3_MMode1" value="1" />
@@ -2195,6 +2219,11 @@
<ctl name="VoiceMMode2_Tx Mixer TX_CDC_DMA_TX_3_MMode2" value="1" />
</path>
+ <path name="voicemmode2-call call-proxy">
+ <ctl name="PROXY_RX_Voice Mixer VoiceMMode2" value="1" />
+ <ctl name="VoiceMMode2_Tx Mixer PROXY_TX_MMode2" value="1" />
+ </path>
+
<!-- VoIP Rx settings -->
<path name="audio-playback-voip">
<ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia10" value="1" />
@@ -2286,6 +2315,16 @@
<path name="spkr-vi-record">
</path>
+ <path name="audio-with-haptics-playback speaker-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ </path>
+
+ <path name="audio-with-haptics-playback headphones-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ </path>
+
<!-- These are actual sound device specific mixer settings -->
<path name="amic1">
<ctl name="TX DEC2 MUX" value="SWR_MIC" />
@@ -2304,6 +2343,8 @@
<ctl name="ADC2_MIXER Switch" value="1" />
<ctl name="ADC2 MUX" value="INP2" />
<ctl name="ADC2 ChMap" value="SWRM_TX1_CH2" />
+ <ctl name="MBHC ChMap" value="SWRM_TX1_CH3" />
+ <ctl name="BCS Channel" value="CH2" />
<ctl name="HDR12 MUX" value="NO_HDR12" />
</path>
@@ -2369,6 +2410,23 @@
<ctl name="SpkrRight SWR DAC_Port Switch" value="1" />
</path>
+ <path name="speaker-and-haptics">
+ <ctl name="WSA_CDC_DMA_RX_0 Channels" value="Two" />
+ <ctl name="WSA RX0 MUX" value="AIF1_PB" />
+ <ctl name="WSA RX1 MUX" value="AIF1_PB" />
+ <ctl name="WSA_RX0 INP0" value="RX0" />
+ <ctl name="WSA_RX1 INP0" value="RX1" />
+ <ctl name="WSA_COMP1 Switch" value="1" />
+ <ctl name="WSA_COMP2 Switch" value="1" />
+ <ctl name="SpkrLeft COMP Switch" value="1" />
+ <ctl name="SpkrLeft VISENSE Switch" value="1" />
+ <ctl name="SpkrLeft SWR DAC_Port Switch" value="1" />
+ <ctl name="SpkrRight COMP Switch" value="1" />
+ <ctl name="SpkrRight VISENSE Switch" value="1" />
+ <ctl name="SpkrRight SWR DAC_Port Switch" value="1" />
+ <ctl name="SWR DAC_Port Switch" value="1" />
+ </path>
+
<path name="speaker-mono">
<ctl name="WSA_CDC_DMA_RX_0 Channels" value="One" />
<ctl name="WSA RX0 MUX" value="AIF1_PB" />
@@ -2546,6 +2604,23 @@
<ctl name="HPHR_RDAC Switch" value="1" />
</path>
+ <path name="headphones-and-haptics">
+ <ctl name="RX_MACRO RX0 MUX" value="AIF1_PB" />
+ <ctl name="RX_MACRO RX1 MUX" value="AIF1_PB" />
+ <ctl name="RX_CDC_DMA_RX_0 Channels" value="Two" />
+ <ctl name="RX INT0_1 MIX1 INP0" value="RX0" />
+ <ctl name="RX INT1_1 MIX1 INP0" value="RX1" />
+ <ctl name="RX INT0 DEM MUX" value="CLSH_DSM_OUT" />
+ <ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
+ <ctl name="RX_COMP1 Switch" value="1" />
+ <ctl name="RX_COMP2 Switch" value="1" />
+ <ctl name="HPHL_COMP Switch" value="1" />
+ <ctl name="HPHR_COMP Switch" value="1" />
+ <ctl name="HPHL_RDAC Switch" value="1" />
+ <ctl name="HPHR_RDAC Switch" value="1" />
+ <ctl name="SWR DAC_Port Switch" value="1" />
+ </path>
+
<path name="headphones-44.1">
<path name="headphones" />
</path>
@@ -2683,6 +2758,12 @@
<path name="display-port1">
</path>
+ <path name="call-proxy">
+ </path>
+
+ <path name="call-proxy-in">
+ </path>
+
<path name="speaker-and-usb-headphones">
<path name="speaker" />
<path name="usb-headphones" />
@@ -3399,6 +3480,10 @@
<path name="incall_music_uplink" />
</path>
+ <path name="incall_music_uplink call-proxy">
+ <path name="incall_music_uplink" />
+ </path>
+
<path name="incall_music_uplink2">
<ctl name="Incall_Music_2 Audio Mixer MultiMedia9" value="1" />
</path>
diff --git a/configs/lito/audio_platform_info_lagoon_qrd.xml b/configs/lito/audio_platform_info_lagoon_qrd.xml
index db26f0f..dd07ea2 100644
--- a/configs/lito/audio_platform_info_lagoon_qrd.xml
+++ b/configs/lito/audio_platform_info_lagoon_qrd.xml
@@ -83,7 +83,7 @@
<param key="input_mic_max_count" value="4"/>
</config_params>
<acdb_ids>
- <device name="SND_DEVICE_OUT_SPEAKER" acdb_id="15"/>
+ <device name="SND_DEVICE_OUT_SPEAKER" acdb_id="14"/>
<device name="SND_DEVICE_OUT_SPEAKER_REVERSE" acdb_id="15"/>
<device name="SND_DEVICE_OUT_SPEAKER_PROTECTED" acdb_id="124"/>
<device name="SND_DEVICE_OUT_VOICE_SPEAKER_PROTECTED" acdb_id="101"/>
diff --git a/configs/lito/mixer_paths_lagoonqrd.xml b/configs/lito/mixer_paths_lagoonqrd.xml
index eb651c5..dbe806e 100644
--- a/configs/lito/mixer_paths_lagoonqrd.xml
+++ b/configs/lito/mixer_paths_lagoonqrd.xml
@@ -377,10 +377,10 @@
<ctl name="HPHR Volume" value="20" />
<ctl name="EAR SPKR PA Gain" value="G_DEFAULT" />
- <ctl name="TX_DEC0 Volume" value="90" />
- <ctl name="TX_DEC1 Volume" value="90" />
- <ctl name="TX_DEC2 Volume" value="90" />
- <ctl name="TX_DEC3 Volume" value="90" />
+ <ctl name="TX_DEC0 Volume" value="81" />
+ <ctl name="TX_DEC1 Volume" value="81" />
+ <ctl name="TX_DEC2 Volume" value="81" />
+ <ctl name="TX_DEC3 Volume" value="81" />
<ctl name="TX_DEC4 Volume" value="84" />
<ctl name="TX_DEC5 Volume" value="84" />
<ctl name="TX_DEC6 Volume" value="84" />
diff --git a/configs/msm8937/msm8937.mk b/configs/msm8937/msm8937.mk
index 7e08fd8..1874f29 100644
--- a/configs/msm8937/msm8937.mk
+++ b/configs/msm8937/msm8937.mk
@@ -264,7 +264,7 @@
vendor.audio.feature.hfp.enable=true \
vendor.audio.feature.hifi_audio.enable=true \
vendor.audio.feature.hwdep_cal.enable=false \
-vendor.audio.feature.incall_music.enable=false \
+vendor.audio.feature.incall_music.enable=true \
vendor.audio.feature.multi_voice_session.enable=true \
vendor.audio.feature.keep_alive.enable=false \
vendor.audio.feature.kpi_optimize.enable=true \
diff --git a/configs/msm8953/msm8953.mk b/configs/msm8953/msm8953.mk
index 9487868..9262e4a 100644
--- a/configs/msm8953/msm8953.mk
+++ b/configs/msm8953/msm8953.mk
@@ -280,8 +280,8 @@
vendor.audio.feature.audiozoom.enable=false \
vendor.audio.feature.auto_hal.enable=false \
vendor.audio.read.wsatz.type=true \
-vendor.audio.feature.multi_voice_session.enable=true
-
+vendor.audio.feature.multi_voice_session.enable=true \
+vendor.audio.feature.incall_music.enable=true
# for HIDL related packages
PRODUCT_PACKAGES += \
diff --git a/configs/qssi/qssi.mk b/configs/qssi/qssi.mk
index d9e3493..0c8bf85 100644
--- a/configs/qssi/qssi.mk
+++ b/configs/qssi/qssi.mk
@@ -45,10 +45,6 @@
DEVICE_PACKAGE_OVERLAYS += hardware/qcom/audio/configs/common/overlay
endif
-# Reduce client buffer size for fast audio output tracks
-PRODUCT_PROPERTY_OVERRIDES += \
- af.fast_track_multiplier=1
-
# Low latency audio buffer size in frames
PRODUCT_PROPERTY_OVERRIDES += \
vendor.audio_hal.period_size=192
@@ -61,18 +57,10 @@
PRODUCT_PROPERTY_OVERRIDES += \
vendor.audio.offload.buffer.size.kb=32
-#Enable offload audio video playback by default
-PRODUCT_PROPERTY_OVERRIDES += \
-audio.offload.video=true
-
#Enable audio track offload by default
PRODUCT_PROPERTY_OVERRIDES += \
vendor.audio.offload.track.enable=true
-#Enable music through deep buffer
-PRODUCT_PROPERTY_OVERRIDES += \
-audio.deep_buffer.media=true
-
#enable voice path for PCM VoIP by default
PRODUCT_PROPERTY_OVERRIDES += \
vendor.voice.path.for.pcm.voip=true
@@ -107,6 +95,19 @@
PRODUCT_PROPERTY_OVERRIDES += \
vendor.audio.hw.aac.encoder=true
+ifneq ($(GENERIC_ODM_IMAGE),true)
+# Reduce client buffer size for fast audio output tracks
+PRODUCT_PROPERTY_OVERRIDES += \
+af.fast_track_multiplier=1
+
+#Enable offload audio video playback by default
+PRODUCT_PROPERTY_OVERRIDES += \
+audio.offload.video=true
+
+#Enable music through deep buffer
+PRODUCT_PROPERTY_OVERRIDES += \
+audio.deep_buffer.media=true
+
#audio becoming noisy intent broadcast delay
PRODUCT_PRODUCT_PROPERTIES += \
audio.sys.noisy.broadcast.delay=500
@@ -131,6 +132,13 @@
PRODUCT_PROPERTY_OVERRIDES += \
ro.af.client_heap_size_kbyte=7168
+#enable deep buffer
+PRODUCT_PROPERTY_OVERRIDES += \
+media.stagefright.audio.deep=false
+
+endif
+#guard for non GENERIC_ODM_IMAGE
+
# Enable AAudio MMAP/NOIRQ data path.
# 2 is AAUDIO_POLICY_AUTO so it will try MMAP then fallback to Legacy path.
PRODUCT_PROPERTY_OVERRIDES += aaudio.mmap_policy=2
@@ -142,10 +150,6 @@
PRODUCT_PROPERTY_OVERRIDES += \
vendor.audio.enable.mirrorlink=false
-#enable deep buffer
-PRODUCT_PROPERTY_OVERRIDES += \
-media.stagefright.audio.deep=false
-
# for HIDL related packages
PRODUCT_PACKAGES += \
android.hardware.audio@4.0 \
diff --git a/configs/sdm660/sdm660.mk b/configs/sdm660/sdm660.mk
index 7297271..c5a410e 100644
--- a/configs/sdm660/sdm660.mk
+++ b/configs/sdm660/sdm660.mk
@@ -302,7 +302,7 @@
vendor.audio.feature.hfp.enable=true \
vendor.audio.feature.hifi_audio.enable=true \
vendor.audio.feature.hwdep_cal.enable=false \
-vendor.audio.feature.incall_music.enable=false \
+vendor.audio.feature.incall_music.enable=true \
vendor.audio.feature.multi_voice_session.enable=true \
vendor.audio.feature.keep_alive.enable=false \
vendor.audio.feature.kpi_optimize.enable=true \
diff --git a/configs/sdm845/sdm845.mk b/configs/sdm845/sdm845.mk
index 2d243b9..b0eef83 100644
--- a/configs/sdm845/sdm845.mk
+++ b/configs/sdm845/sdm845.mk
@@ -346,7 +346,7 @@
vendor.audio.feature.hfp.enable=true \
vendor.audio.feature.hifi_audio.enable=false \
vendor.audio.feature.hwdep_cal.enable=false \
-vendor.audio.feature.incall_music.enable=false \
+vendor.audio.feature.incall_music.enable=true \
vendor.audio.feature.multi_voice_session.enable=true \
vendor.audio.feature.keep_alive.enable=false \
vendor.audio.feature.kpi_optimize.enable=true \
diff --git a/configs/trinket/trinket.mk b/configs/trinket/trinket.mk
index ffbfcff..3083575 100644
--- a/configs/trinket/trinket.mk
+++ b/configs/trinket/trinket.mk
@@ -288,7 +288,7 @@
vendor.audio.feature.hfp.enable=true \
vendor.audio.feature.hifi_audio.enable=false \
vendor.audio.feature.hwdep_cal.enable=false \
-vendor.audio.feature.incall_music.enable=false \
+vendor.audio.feature.incall_music.enable=true \
vendor.audio.feature.multi_voice_session.enable=true \
vendor.audio.feature.keep_alive.enable=false \
vendor.audio.feature.kpi_optimize.enable=true \
diff --git a/hal/audio_extn/spkr_protection.c b/hal/audio_extn/spkr_protection.c
index 95bc7e9..6187384 100644
--- a/hal/audio_extn/spkr_protection.c
+++ b/hal/audio_extn/spkr_protection.c
@@ -77,6 +77,8 @@
/* default limiter threshold is 0dB(0x7FFFFFF in natural value) */
#define DEFAULT_LIMITER_TH (0x07FFFFFF)
#define AFE_API_VERSION_SUPPORT_SPV3 (0x2)
+/* Made equivalent to AFE API version that supports SPV4. */
+#define AFE_API_VERSION_SUPPORT_SPV4 (0x9)
enum wcd_boost_max_state {
BOOST_NO_MAX_STATE,
BOOST_MAX_STATE_1,
@@ -86,6 +88,7 @@
enum sp_version {
SP_V2 = 0x1,
SP_V3 = AFE_API_VERSION_SUPPORT_SPV3,
+ SP_V4 = AFE_API_VERSION_SUPPORT_SPV4,
};
/*Set safe temp value to 40C*/
#define SAFE_SPKR_TEMP 40
@@ -113,7 +116,7 @@
#define MIN_SPKR_IDLE_SEC (60 * 30)
#define WAKEUP_MIN_IDLE_CHECK 30
-/*Once calibration is started sleep for 1 sec to allow
+/*Once calibration is started sleep for 3 sec to allow
the calibration to kick off*/
#define SLEEP_AFTER_CALIB_START (3000)
@@ -780,7 +783,7 @@
}
static void set_boost_and_limiter(struct audio_device *adev,
- bool spv3_enable, unsigned int afe_api_version)
+ unsigned int afe_api_version, enum sp_version sp_prop_version)
{
int chn = 0;
int chn_in_use = 0;
@@ -822,8 +825,11 @@
* If spv3 is disabld or ADSP version doesn't comply,
* ADSP works with SP_V2 version.
*/
- if (!spv3_enable || afe_api_version < AFE_API_VERSION_SUPPORT_SPV3)
+ if (sp_prop_version < SP_V3 || afe_api_version < AFE_API_VERSION_SUPPORT_SPV3)
handle.sp_version = SP_V2;
+
+ if(sp_prop_version == SP_V4)
+ handle.sp_version = SP_V4;
}
static int spkr_calibrate(int t0_spk_1, int t0_spk_2)
@@ -873,6 +879,7 @@
t0_spk_2 = SAFE_SPKR_TEMP_Q6;
}
}
+ protCfg.sp_version = handle.sp_version;
protCfg.t0[SP_V2_SPKR_1] = t0_spk_1;
protCfg.t0[SP_V2_SPKR_2] = t0_spk_2;
if (set_spkr_prot_cal(acdb_fd, &protCfg)) {
@@ -1060,6 +1067,7 @@
pcm_close(handle.pcm_tx);
handle.pcm_tx = NULL;
if (!v_validation) {
+ protCfg.sp_version = handle.sp_version;
if (!status.status) {
protCfg.mode = MSM_SPKR_PROT_CALIBRATED;
protCfg.r0[SP_V2_SPKR_1] = status.r0[SP_V2_SPKR_1];
@@ -1143,6 +1151,8 @@
char buf[32] = {0};
int ret;
bool spv3_enable = false;
+ bool spv4_enable = false;
+ enum sp_version sp_prop_version = 0;
unsigned int afe_api_version = 0;
struct mixer_ctl *ctl;
@@ -1161,11 +1171,27 @@
min_idle_time = atoi(value);
}
handle.speaker_prot_threadid = pthread_self();
- ALOGD("spkr_prot_thread enable prot Entry");
+ spv3_enable = property_get_bool("persist.vendor.audio.spv3.enable", false);
+ property_get("persist.vendor.audio.avs.afe_api_version", afe_version_value,
+ "0");
+ if (atoi(afe_version_value) > 0)
+ afe_api_version = atoi(afe_version_value);
+
+ spv4_enable = property_get_bool("persist.vendor.audio.spv4.enable", false);
+ if (spv3_enable)
+ sp_prop_version = SP_V3;
+ else if (spv4_enable)
+ sp_prop_version = SP_V4;
+
+ if(spv4_enable)
+ handle.sp_version = SP_V4;
+ ALOGD("spkr_prot_thread enable prot Entryi sp_version %d", handle.sp_version);
+
acdb_fd = open("/dev/msm_audio_cal",O_RDWR | O_NONBLOCK);
if (acdb_fd > 0) {
/*Set processing mode with t0/r0*/
protCfg.mode = MSM_SPKR_PROT_NOT_CALIBRATED;
+ protCfg.sp_version = handle.sp_version;
if (set_spkr_prot_cal(acdb_fd, &protCfg)) {
ALOGE("%s: spkr_prot_thread enable prot failed", __func__);
handle.spkr_prot_mode = MSM_SPKR_PROT_DISABLED;
@@ -1182,12 +1208,6 @@
return NULL;
}
- spv3_enable = property_get_bool("persist.vendor.audio.spv3.enable", false);
- property_get("persist.vendor.audio.avs.afe_api_version", afe_version_value,
- "0");
- if (atoi(afe_version_value) > 0)
- afe_api_version = atoi(afe_version_value);
-
if (!handle.spkr_cal_dynamic || handle.apply_cal) {
bool spkr_calibrated = false;
fp = fopen(CALIB_FILE,"rb");
@@ -1216,13 +1236,14 @@
if (spkr_calibrated) {
ALOGD("%s: Spkr calibrated", __func__);
protCfg.mode = MSM_SPKR_PROT_CALIBRATED;
+ protCfg.sp_version = handle.sp_version;
if (set_spkr_prot_cal(acdb_fd, &protCfg)) {
ALOGE("%s: enable prot failed", __func__);
handle.spkr_prot_mode = MSM_SPKR_PROT_DISABLED;
} else
handle.spkr_prot_mode = MSM_SPKR_PROT_CALIBRATED;
- set_boost_and_limiter(adev, spv3_enable, afe_api_version);
+ set_boost_and_limiter(adev, afe_api_version, sp_prop_version);
}
}
if (handle.spkr_cal_dynamic || spkr_calibrated) {
@@ -1448,7 +1469,7 @@
dlclose(handle.thermal_handle);
handle.thermal_handle = NULL;
- set_boost_and_limiter(adev, spv3_enable, afe_api_version);
+ set_boost_and_limiter(adev, afe_api_version, sp_prop_version);
pthread_exit(0);
return NULL;
@@ -1633,8 +1654,15 @@
{
struct audio_cal_sp_th_vi_param th_vi_cal_data;
struct audio_cal_sp_ex_vi_param ex_vi_cal_data;
+#ifdef MSM_SPKR_PROT_SPV4
+ struct audio_cal_sp_v4_ex_vi_param spv4_ex_vi_cal_data;
+ double re[SP_V2_NUM_MAX_SPKRS] = {0}, Bl[SP_V2_NUM_MAX_SPKRS] = {0};
+ double rms[SP_V2_NUM_MAX_SPKRS] = {0}, kms[SP_V2_NUM_MAX_SPKRS] = {0};
+ double fre[SP_V2_NUM_MAX_SPKRS] = {0}, qms[SP_V2_NUM_MAX_SPKRS] = {0};
+#endif
int i;
int ftm_status[SP_V2_NUM_MAX_SPKRS] = {0};
+ int ex_vi_status[SP_V2_NUM_MAX_SPKRS] = {0};
double rdc[SP_V2_NUM_MAX_SPKRS] = {0}, temp[SP_V2_NUM_MAX_SPKRS] = {0};
double f[SP_V2_NUM_MAX_SPKRS] = {0}, r[SP_V2_NUM_MAX_SPKRS] = {0}, q[SP_V2_NUM_MAX_SPKRS] = {0};
@@ -1663,46 +1691,93 @@
if (ioctl(cal_fd, AUDIO_GET_CALIBRATION, &th_vi_cal_data))
ALOGE("%s: Error %d in getting th_vi_cal_data", __func__, errno);
- memset(&ex_vi_cal_data, 0, sizeof(ex_vi_cal_data));
- ex_vi_cal_data.cal_type.cal_info.status[SP_V2_SPKR_1] = -EINVAL;
- ex_vi_cal_data.cal_type.cal_info.status[SP_V2_SPKR_2] = -EINVAL;
- ex_vi_cal_data.hdr.data_size = sizeof(ex_vi_cal_data);
- ex_vi_cal_data.hdr.version = VERSION_0_0;
- ex_vi_cal_data.hdr.cal_type = AFE_FB_SPKR_PROT_EX_VI_CAL_TYPE;
- ex_vi_cal_data.hdr.cal_type_size = sizeof(ex_vi_cal_data.cal_type);
- ex_vi_cal_data.cal_type.cal_hdr.version = VERSION_0_0;
- ex_vi_cal_data.cal_type.cal_hdr.buffer_number = 0;
- ex_vi_cal_data.cal_type.cal_data.mem_handle = -1;
+ if (handle.sp_version == SP_V4) {
+#ifdef MSM_SPKR_PROT_SPV4
+ memset(&spv4_ex_vi_cal_data, 0, sizeof(spv4_ex_vi_cal_data));
+ spv4_ex_vi_cal_data.cal_type.cal_info.status[SP_V2_SPKR_1] = -EINVAL;
+ spv4_ex_vi_cal_data.cal_type.cal_info.status[SP_V2_SPKR_2] = -EINVAL;
+ spv4_ex_vi_cal_data.hdr.data_size = sizeof(spv4_ex_vi_cal_data);
+ spv4_ex_vi_cal_data.hdr.version = VERSION_0_0;
+ spv4_ex_vi_cal_data.hdr.cal_type = AFE_FB_SPKR_PROT_V4_EX_VI_CAL_TYPE;
+ spv4_ex_vi_cal_data.hdr.cal_type_size = sizeof(spv4_ex_vi_cal_data.cal_type);
+ spv4_ex_vi_cal_data.cal_type.cal_hdr.version = VERSION_0_0;
+ spv4_ex_vi_cal_data.cal_type.cal_hdr.buffer_number = 0;
+ spv4_ex_vi_cal_data.cal_type.cal_data.mem_handle = -1;
- if (ioctl(cal_fd, AUDIO_GET_CALIBRATION, &ex_vi_cal_data))
- ALOGE("%s: Error %d in getting ex_vi_cal_data", __func__, errno);
+ if (ioctl(cal_fd, AUDIO_GET_CALIBRATION, &spv4_ex_vi_cal_data))
+ ALOGE("%s: Error %d in getting spv4_ex_vi_cal_data", __func__, errno);
+#endif
+ } else {
+ memset(&ex_vi_cal_data, 0, sizeof(ex_vi_cal_data));
+ ex_vi_cal_data.cal_type.cal_info.status[SP_V2_SPKR_1] = -EINVAL;
+ ex_vi_cal_data.cal_type.cal_info.status[SP_V2_SPKR_2] = -EINVAL;
+ ex_vi_cal_data.hdr.data_size = sizeof(ex_vi_cal_data);
+ ex_vi_cal_data.hdr.version = VERSION_0_0;
+ ex_vi_cal_data.hdr.cal_type = AFE_FB_SPKR_PROT_EX_VI_CAL_TYPE;
+ ex_vi_cal_data.hdr.cal_type_size = sizeof(ex_vi_cal_data.cal_type);
+ ex_vi_cal_data.cal_type.cal_hdr.version = VERSION_0_0;
+ ex_vi_cal_data.cal_type.cal_hdr.buffer_number = 0;
+ ex_vi_cal_data.cal_type.cal_data.mem_handle = -1;
+
+ if (ioctl(cal_fd, AUDIO_GET_CALIBRATION, &ex_vi_cal_data))
+ ALOGE("%s: Error %d in getting ex_vi_cal_data", __func__, errno);
+ }
for (i = 0; i < vi_feed_no_channels; i++) {
/* Convert from ADSP format to readable format */
rdc[i] = ((double)th_vi_cal_data.cal_type.cal_info.r_dc_q24[i])/(1<<24);
temp[i] = ((double)th_vi_cal_data.cal_type.cal_info.temp_q22[i])/(1<<22);
- f[i] = ((double)ex_vi_cal_data.cal_type.cal_info.freq_q20[i])/(1<<20);
- r[i] = ((double)ex_vi_cal_data.cal_type.cal_info.resis_q24[i])/(1<<24);
- q[i] = ((double)ex_vi_cal_data.cal_type.cal_info.qmct_q24[i])/(1<<24);
+
+ if (handle.sp_version == SP_V4) {
+#ifdef MSM_SPKR_PROT_SPV4
+ re[i] = ((double)spv4_ex_vi_cal_data.cal_type.cal_info.ftm_re_q24[i])/(1<<24);
+ Bl[i] = ((double)spv4_ex_vi_cal_data.cal_type.cal_info.ftm_Bl_q24[i])/(1<<24);
+ rms[i] = ((double)spv4_ex_vi_cal_data.cal_type.cal_info.ftm_Rms_q24[i])/(1<<24);
+ kms[i] = ((double)spv4_ex_vi_cal_data.cal_type.cal_info.ftm_Kms_q24[i])/(1<<24);
+ fre[i] = ((double)spv4_ex_vi_cal_data.cal_type.cal_info.ftm_freq_q20[i])/(1<<20);
+ qms[i] = ((double)spv4_ex_vi_cal_data.cal_type.cal_info.ftm_Qms_q24[i])/(1<<24);
+ ex_vi_status[i] = spv4_ex_vi_cal_data.cal_type.cal_info.status[i];
+#endif
+ } else {
+ f[i] = ((double)ex_vi_cal_data.cal_type.cal_info.freq_q20[i])/(1<<20);
+ r[i] = ((double)ex_vi_cal_data.cal_type.cal_info.resis_q24[i])/(1<<24);
+ q[i] = ((double)ex_vi_cal_data.cal_type.cal_info.qmct_q24[i])/(1<<24);
+ ex_vi_status[i] = ex_vi_cal_data.cal_type.cal_info.status[i];
+ }
if (th_vi_cal_data.cal_type.cal_info.status[i] == 0 &&
- ex_vi_cal_data.cal_type.cal_info.status[i] == 0) {
+ ex_vi_status[i] == 0) {
ftm_status[i] = 0;
} else if (th_vi_cal_data.cal_type.cal_info.status[i] == -EAGAIN &&
- ex_vi_cal_data.cal_type.cal_info.status[i] == -EAGAIN) {
+ ex_vi_status[i] == -EAGAIN) {
ftm_status[i] = -EAGAIN;
} else {
ftm_status[i] = -EINVAL;
}
}
- snprintf(param, MAX_STR_SIZE - strlen(param) - 1,
+
+ if (handle.sp_version == SP_V4) {
+#ifdef MSM_SPKR_PROT_SPV4
+ snprintf(param, MAX_STR_SIZE - strlen(param) - 1,
+ "SpkrParamStatus: %d, %d; Rdc: %lf, %lf; Temp: %lf, %lf;"
+ " Res: %lf, %lf; Bl: %lf, %lf; Rms: %lf, %lf;"
+ " Kms: %lf, %lf; Fres: %lf, %lf; Qms: %lf, %lf",
+ ftm_status[SP_V2_SPKR_1], ftm_status[SP_V2_SPKR_2],
+ rdc[SP_V2_SPKR_1], rdc[SP_V2_SPKR_2], temp[SP_V2_SPKR_1],
+ temp[SP_V2_SPKR_2], re[SP_V2_SPKR_1], re[SP_V2_SPKR_2],
+ Bl[SP_V2_SPKR_1], Bl[SP_V2_SPKR_2], rms[SP_V2_SPKR_1], rms[SP_V2_SPKR_2],
+ kms[SP_V2_SPKR_1], kms[SP_V2_SPKR_2],
+ fre[SP_V2_SPKR_1], fre[SP_V2_SPKR_2], qms[SP_V2_SPKR_1], qms[SP_V2_SPKR_2]);
+#endif
+ } else {
+ snprintf(param, MAX_STR_SIZE - strlen(param) - 1,
"SpkrParamStatus: %d, %d; Rdc: %lf, %lf; Temp: %lf, %lf;"
" Freq: %lf, %lf; Rect: %lf, %lf; Qmct: %lf, %lf",
ftm_status[SP_V2_SPKR_1], ftm_status[SP_V2_SPKR_2],
rdc[SP_V2_SPKR_1], rdc[SP_V2_SPKR_2], temp[SP_V2_SPKR_1],
temp[SP_V2_SPKR_2], f[SP_V2_SPKR_1], f[SP_V2_SPKR_2],
r[SP_V2_SPKR_1], r[SP_V2_SPKR_2], q[SP_V2_SPKR_1], q[SP_V2_SPKR_2]);
- ALOGD("%s:: param = %s\n", __func__, param);
+ }
if (cal_fd > 0)
close(cal_fd);
diff --git a/hal/audio_extn/usb.c b/hal/audio_extn/usb.c
index 1eecd0c..95f8ea9 100644
--- a/hal/audio_extn/usb.c
+++ b/hal/audio_extn/usb.c
@@ -377,6 +377,62 @@
return 0;
}
+int usb_get_service_interval(bool playback,
+ unsigned long *service_interval)
+{
+ const char *ctl_name = "USB_AUDIO_RX service_interval";
+ struct mixer_ctl *ctl = mixer_get_ctl_by_name(usbmod->adev->mixer,
+ ctl_name);
+
+ if (!playback) {
+ ALOGE("%s not valid for capture", __func__);
+ return -1;
+ }
+
+ if (!ctl) {
+ ALOGV("%s: could not get mixer %s", __func__, ctl_name);
+ return -1;
+ }
+
+ *service_interval = mixer_ctl_get_value(ctl, 0);
+ return 0;
+}
+
+int usb_set_service_interval(bool playback,
+ unsigned long service_interval,
+ bool *reconfig)
+{
+ *reconfig = false;
+ unsigned long current_service_interval = 0;
+ const char *ctl_name = "USB_AUDIO_RX service_interval";
+ struct mixer_ctl *ctl = mixer_get_ctl_by_name(usbmod->adev->mixer,
+ ctl_name);
+
+ if (!playback) {
+ ALOGE("%s not valid for capture", __func__);
+ return -1;
+ }
+
+ if (!ctl) {
+ ALOGV("%s: could not get mixer %s", __func__, ctl_name);
+ return -1;
+ }
+
+ if (usb_get_service_interval(playback,
+ ¤t_service_interval) != 0) {
+ ALOGE("%s Unable to get current service interval", __func__);
+ return -1;
+ }
+
+ if (current_service_interval != service_interval) {
+ mixer_ctl_set_value(ctl, 0, service_interval);
+ *reconfig = usbmod->usb_reconfig = true;
+ }
+ else
+ *reconfig = usbmod->usb_reconfig = false;
+ return 0;
+}
+
static int get_usb_service_interval(const char *interval_str_start,
struct usb_device_config *usb_device_info)
{
@@ -584,6 +640,7 @@
// Data packet interval is an optional field.
// Assume 0ms interval if this cannot be read
// LPASS USB and HLOS USB will figure out the default to use
+ bool reconfig = false;
usb_device_info->service_interval_us = DEFAULT_SERVICE_INTERVAL_US;
interval_str_start = strstr(str_start, DATA_PACKET_INTERVAL_STR);
if (interval_str_start != NULL) {
@@ -594,6 +651,9 @@
__func__);
}
}
+ usb_set_service_interval(true /*playback*/,
+ usb_device_info->service_interval_us,
+ &reconfig);
/* Add to list if every field is valid */
list_add_tail(&usb_card_info->usb_device_conf_list,
&usb_device_info->list);
@@ -1392,62 +1452,6 @@
#undef SET_OR_RETURN_ON_ERROR
}
-int usb_get_service_interval(bool playback,
- unsigned long *service_interval)
-{
- const char *ctl_name = "USB_AUDIO_RX service_interval";
- struct mixer_ctl *ctl = mixer_get_ctl_by_name(usbmod->adev->mixer,
- ctl_name);
-
- if (!playback) {
- ALOGE("%s not valid for capture", __func__);
- return -1;
- }
-
- if (!ctl) {
- ALOGV("%s: could not get mixer %s", __func__, ctl_name);
- return -1;
- }
-
- *service_interval = mixer_ctl_get_value(ctl, 0);
- return 0;
-}
-
-int usb_set_service_interval(bool playback,
- unsigned long service_interval,
- bool *reconfig)
-{
- *reconfig = false;
- unsigned long current_service_interval = 0;
- const char *ctl_name = "USB_AUDIO_RX service_interval";
- struct mixer_ctl *ctl = mixer_get_ctl_by_name(usbmod->adev->mixer,
- ctl_name);
-
- if (!playback) {
- ALOGE("%s not valid for capture", __func__);
- return -1;
- }
-
- if (!ctl) {
- ALOGV("%s: could not get mixer %s", __func__, ctl_name);
- return -1;
- }
-
- if (usb_get_service_interval(playback,
- ¤t_service_interval) != 0) {
- ALOGE("%s Unable to get current service interval", __func__);
- return -1;
- }
-
- if (current_service_interval != service_interval) {
- mixer_ctl_set_value(ctl, 0, service_interval);
- *reconfig = usbmod->usb_reconfig = true;
- }
- else
- *reconfig = usbmod->usb_reconfig = false;
- return 0;
-}
-
int usb_check_and_set_svc_int(struct audio_usecase *uc_info,
bool starting_output_stream)
{
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 7e08c5c..979781e 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -328,6 +328,7 @@
[USECASE_AUDIO_PLAYBACK_DEEP_BUFFER] = "deep-buffer-playback",
[USECASE_AUDIO_PLAYBACK_LOW_LATENCY] = "low-latency-playback",
[USECASE_AUDIO_PLAYBACK_WITH_HAPTICS] = "audio-with-haptics-playback",
+ [USECASE_AUDIO_PLAYBACK_HAPTICS] = "haptics-playback",
[USECASE_AUDIO_PLAYBACK_ULL] = "audio-ull-playback",
[USECASE_AUDIO_PLAYBACK_MULTI_CH] = "multi-channel-playback",
[USECASE_AUDIO_PLAYBACK_OFFLOAD] = "compress-offload-playback",
@@ -3780,7 +3781,8 @@
}
if (is_haptic_usecase) {
- adev->haptic_pcm_device_id = platform_get_haptics_pcm_device_id();
+ adev->haptic_pcm_device_id = platform_get_pcm_device_id(
+ USECASE_AUDIO_PLAYBACK_HAPTICS, PCM_PLAYBACK);
if (adev->haptic_pcm_device_id < 0) {
ALOGE("%s: Invalid Haptics pcm device id(%d) for the usecase(%d)",
__func__, adev->haptic_pcm_device_id, out->usecase);
@@ -8751,8 +8753,10 @@
struct listnode *node;
list_for_each(node, &adev->usecase_list) {
usecase = node_to_item(node, struct audio_usecase, list);
- if (usecase->stream.out && (usecase->type == PCM_PLAYBACK) &&
- is_a2dp_out_device_type(&usecase->device_list)) {
+ if ((usecase->stream.out == NULL) || (usecase->type != PCM_PLAYBACK))
+ continue;
+
+ if (is_a2dp_out_device_type(&usecase->device_list)) {
ALOGD("reconfigure a2dp... forcing device switch");
pthread_mutex_unlock(&adev->lock);
lock_output_stream(usecase->stream.out);
diff --git a/hal/audio_hw.h b/hal/audio_hw.h
index 7b075e5..055a96b 100644
--- a/hal/audio_hw.h
+++ b/hal/audio_hw.h
@@ -161,6 +161,7 @@
USECASE_AUDIO_PLAYBACK_ULL,
USECASE_AUDIO_PLAYBACK_MMAP,
USECASE_AUDIO_PLAYBACK_WITH_HAPTICS,
+ USECASE_AUDIO_PLAYBACK_HAPTICS,
USECASE_AUDIO_PLAYBACK_HIFI,
USECASE_AUDIO_PLAYBACK_TTS,
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index e314dd3..bb714f4 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -379,6 +379,8 @@
DEEP_BUFFER_PCM_DEVICE},
[USECASE_AUDIO_PLAYBACK_WITH_HAPTICS] = {AUDIO_HAPTICS_PCM_DEVICE,
AUDIO_HAPTICS_PCM_DEVICE},
+ [USECASE_AUDIO_PLAYBACK_HAPTICS] = {HAPTICS_PCM_DEVICE,
+ HAPTICS_PCM_DEVICE},
[USECASE_AUDIO_PLAYBACK_LOW_LATENCY] = {LOWLATENCY_PCM_DEVICE,
LOWLATENCY_PCM_DEVICE},
[USECASE_AUDIO_PLAYBACK_ULL] = {MULTIMEDIA3_PCM_DEVICE,
@@ -523,6 +525,8 @@
[SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES_HIFI_FILTER] = "speaker-and-headphones-hifi-filter",
[SND_DEVICE_OUT_HEADPHONES_44_1] = "headphones-44.1",
[SND_DEVICE_OUT_LINE] = "line",
+ [SND_DEVICE_OUT_SPEAKER_AND_HAPTICS] = "speaker-and-haptics",
+ [SND_DEVICE_OUT_HEADPHONES_AND_HAPTICS] = "headphones-and-haptics",
[SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES] = "speaker-and-headphones",
[SND_DEVICE_OUT_SPEAKER_SAFE_AND_HEADPHONES] = "speaker-safe-and-headphones",
[SND_DEVICE_OUT_SPEAKER_AND_LINE] = "speaker-and-line",
@@ -557,7 +561,6 @@
[SND_DEVICE_OUT_VOICE_TTY_FULL_HEADPHONES] = "voice-tty-full-headphones",
[SND_DEVICE_OUT_VOICE_TTY_FULL_HEADSET] = "voice-tty-full-headset",
[SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES] = "voice-tty-vco-headphones",
- [SND_DEVICE_OUT_VOICE_TTY_VCO_HEADSET] = "voice-tty-vco-headset",
[SND_DEVICE_OUT_VOICE_TTY_HCO_HANDSET] = "voice-tty-hco-handset",
[SND_DEVICE_OUT_VOICE_TTY_FULL_USB] = "voice-tty-full-usb",
[SND_DEVICE_OUT_VOICE_TTY_VCO_USB] = "voice-tty-vco-usb",
@@ -819,6 +822,8 @@
[SND_DEVICE_OUT_HEADPHONES] = 10,
[SND_DEVICE_OUT_HEADPHONES_DSD] = 10,
[SND_DEVICE_OUT_HEADPHONES_44_1] = 10,
+ [SND_DEVICE_OUT_HEADPHONES_AND_HAPTICS] = 10,
+ [SND_DEVICE_OUT_SPEAKER_AND_HAPTICS] = 10,
[SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES] = 10,
[SND_DEVICE_OUT_SPEAKER_SAFE_AND_HEADPHONES] = 10,
[SND_DEVICE_OUT_SPEAKER_AND_LINE] = 10,
@@ -862,7 +867,6 @@
[SND_DEVICE_OUT_VOICE_TTY_FULL_HEADPHONES] = 17,
[SND_DEVICE_OUT_VOICE_TTY_FULL_HEADSET] = 17,
[SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES] = 17,
- [SND_DEVICE_OUT_VOICE_TTY_VCO_HEADSET] = 17,
[SND_DEVICE_OUT_VOICE_TTY_HCO_HANDSET] = 37,
[SND_DEVICE_OUT_VOICE_TTY_FULL_USB] = 17,
[SND_DEVICE_OUT_VOICE_TTY_VCO_USB] = 17,
@@ -1068,6 +1072,8 @@
{TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES_HIFI_FILTER)},
{TO_NAME_INDEX(SND_DEVICE_OUT_HEADPHONES_44_1)},
{TO_NAME_INDEX(SND_DEVICE_OUT_LINE)},
+ {TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_AND_HAPTICS)},
+ {TO_NAME_INDEX(SND_DEVICE_OUT_HEADPHONES_AND_HAPTICS)},
{TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES)},
{TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_SAFE_AND_HEADPHONES)},
{TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_AND_LINE)},
@@ -1105,7 +1111,6 @@
{TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_TTY_FULL_HEADPHONES)},
{TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_TTY_FULL_HEADSET)},
{TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES)},
- {TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_TTY_VCO_HEADSET)},
{TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_TTY_HCO_HANDSET)},
{TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_AND_BT_SCO)},
{TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_AND_BT_SCO_WB)},
@@ -1306,6 +1311,7 @@
static struct name_to_index usecase_name_index[AUDIO_USECASE_MAX] = {
{TO_NAME_INDEX(USECASE_AUDIO_PLAYBACK_DEEP_BUFFER)},
{TO_NAME_INDEX(USECASE_AUDIO_PLAYBACK_WITH_HAPTICS)},
+ {TO_NAME_INDEX(USECASE_AUDIO_PLAYBACK_HAPTICS)},
{TO_NAME_INDEX(USECASE_AUDIO_PLAYBACK_LOW_LATENCY)},
{TO_NAME_INDEX(USECASE_AUDIO_PLAYBACK_HIFI)},
{TO_NAME_INDEX(USECASE_AUDIO_PLAYBACK_TTS)},
@@ -2275,6 +2281,10 @@
backend_tag_table[SND_DEVICE_OUT_HEADPHONES_HIFI_FILTER] = strdup("headphones-hifi-filter");
backend_tag_table[SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES_HIFI_FILTER] =
strdup("speaker-and-headphones-hifi-filter");
+ backend_tag_table[SND_DEVICE_OUT_SPEAKER_AND_HAPTICS] =
+ strdup("speaker-and-haptics");
+ backend_tag_table[SND_DEVICE_OUT_HEADPHONES_AND_HAPTICS] =
+ strdup("headphones-and-haptics");
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");
backend_tag_table[SND_DEVICE_OUT_VOICE_SPEAKER_2_VBAT] = strdup("voice-speaker-2-vbat");
@@ -2345,7 +2355,6 @@
hw_interface_table[SND_DEVICE_OUT_VOICE_TTY_FULL_HEADPHONES] = strdup("SLIMBUS_6_RX");
hw_interface_table[SND_DEVICE_OUT_VOICE_TTY_FULL_HEADSET] = strdup("SLIMBUS_6_RX");
hw_interface_table[SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES] = strdup("SLIMBUS_6_RX");
- hw_interface_table[SND_DEVICE_OUT_VOICE_TTY_VCO_HEADSET] = strdup("SLIMBUS_6_RX");
hw_interface_table[SND_DEVICE_OUT_VOICE_TTY_HCO_HANDSET] = strdup("SLIMBUS_0_RX");
hw_interface_table[SND_DEVICE_OUT_VOICE_TTY_FULL_USB] = strdup("USB_AUDIO_RX");
hw_interface_table[SND_DEVICE_OUT_VOICE_TTY_VCO_USB] = strdup("USB_AUDIO_RX");
@@ -4432,11 +4441,6 @@
return device_id;
}
-int platform_get_haptics_pcm_device_id()
-{
- return HAPTICS_PCM_DEVICE;
-}
-
uint64_t getQtime()
{
uint64_t qTimerCount = 0;
@@ -5213,6 +5217,9 @@
port = USB_AUDIO_RX_BACKEND;
else if (strcmp(backend_tag_table[snd_device], "call-proxy") == 0)
port = CALL_PROXY_RX_BACKEND;
+ else if (strncmp(backend_tag_table[snd_device], "headphones-and-haptics",
+ sizeof("headphones-and-haptics")) == 0)
+ port = HEADPHONE_BACKEND;
}
} else if (snd_device >= SND_DEVICE_IN_BEGIN && snd_device < SND_DEVICE_IN_END) {
port = DEFAULT_CODEC_TX_BACKEND;
@@ -6327,13 +6334,7 @@
}
break;
case TTY_MODE_VCO:
- if (audio_extn_is_concurrent_capture_enabled() &&
- compare_device_type(&devices, AUDIO_DEVICE_OUT_WIRED_HEADSET)) {
- //Separate backend is added for headset-mic as part of concurrent capture
- snd_device = SND_DEVICE_OUT_VOICE_TTY_VCO_HEADSET;
- } else {
- snd_device = SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES;
- }
+ snd_device = SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES;
break;
case TTY_MODE_HCO:
snd_device = SND_DEVICE_OUT_VOICE_TTY_HCO_HANDSET;
@@ -6488,8 +6489,12 @@
snd_device = SND_DEVICE_OUT_HEADPHONES_HIFI_FILTER;
} else if (compare_device_type(&devices, AUDIO_DEVICE_OUT_LINE)) {
snd_device = SND_DEVICE_OUT_LINE;
- } else
- snd_device = SND_DEVICE_OUT_HEADPHONES;
+ } else {
+ if (out->usecase == USECASE_AUDIO_PLAYBACK_WITH_HAPTICS)
+ snd_device = SND_DEVICE_OUT_HEADPHONES_AND_HAPTICS;
+ else
+ snd_device = SND_DEVICE_OUT_HEADPHONES;
+ }
} else if (compare_device_type(&devices, AUDIO_DEVICE_OUT_LINE)) {
snd_device = SND_DEVICE_OUT_LINE;
} else if (compare_device_type(&devices, AUDIO_DEVICE_OUT_SPEAKER_SAFE)) {
@@ -6515,8 +6520,12 @@
snd_device = SND_DEVICE_OUT_SPEAKER_VBAT;
else if (my_data->is_wsa_speaker)
snd_device = SND_DEVICE_OUT_SPEAKER_WSA;
- else
- snd_device = SND_DEVICE_OUT_SPEAKER;
+ else {
+ if (out->usecase == USECASE_AUDIO_PLAYBACK_WITH_HAPTICS)
+ snd_device = SND_DEVICE_OUT_SPEAKER_AND_HAPTICS;
+ else
+ snd_device = SND_DEVICE_OUT_SPEAKER;
+ }
} else if (is_sco_out_device_type(&devices)) {
if (adev->swb_speech_mode != SPEECH_MODE_INVALID)
snd_device = SND_DEVICE_OUT_BT_SCO_SWB;
diff --git a/hal/msm8974/platform.h b/hal/msm8974/platform.h
index de5d2bd..c89fee0 100644
--- a/hal/msm8974/platform.h
+++ b/hal/msm8974/platform.h
@@ -72,6 +72,8 @@
SND_DEVICE_OUT_HEADPHONES_DSD,
SND_DEVICE_OUT_HEADPHONES_HIFI_FILTER,
SND_DEVICE_OUT_HEADPHONES_44_1,
+ SND_DEVICE_OUT_HEADPHONES_AND_HAPTICS,
+ SND_DEVICE_OUT_SPEAKER_AND_HAPTICS,
SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES,
SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES_HIFI_FILTER,
SND_DEVICE_OUT_SPEAKER_SAFE_AND_HEADPHONES,
diff --git a/hal/platform_api.h b/hal/platform_api.h
index 1da7198..9a50946 100644
--- a/hal/platform_api.h
+++ b/hal/platform_api.h
@@ -381,7 +381,6 @@
int platform_get_license_by_product(void *platform, const char* product_name, int *product_id, char* product_license);
bool platform_get_eccarstate(void *platform);
-int platform_get_haptics_pcm_device_id();
int platform_set_qtime(void *platform, int audio_pcm_device_id,
int haptic_pcm_device_id);
int platform_get_delay(void *platform, int pcm_device_id);