Merge "configs: sdm845: update speaker path for QVR845"
diff --git a/configs/apq8098_latv/apq8098_latv.mk b/configs/apq8098_latv/apq8098_latv.mk
old mode 100644
new mode 100755
index c9178cf..7a74e58
--- a/configs/apq8098_latv/apq8098_latv.mk
+++ b/configs/apq8098_latv/apq8098_latv.mk
@@ -30,7 +30,7 @@
 AUDIO_FEATURE_ENABLED_AUDIOSPHERE := true
 AUDIO_FEATURE_ENABLED_USB_TUNNEL_AUDIO := true
 AUDIO_FEATURE_ENABLED_SPLIT_A2DP := true
-AUDIO_FEATURE_ENABLED_3D_AUDIO := false
+AUDIO_FEATURE_ENABLED_3D_AUDIO := true
 AUDIO_FEATURE_ENABLED_VOICE_PRINT := false
 USE_LEGACY_AUDIO_DAEMON := false
 USE_LEGACY_AUDIO_MEASUREMENT := false
@@ -46,7 +46,7 @@
 AUDIO_FEATURE_ENABLED_FLUENCE := true
 AUDIO_FEATURE_ENABLED_HDMI_EDID := true
 AUDIO_FEATURE_ENABLED_HDMI_PASSTHROUGH := true
-#AUDIO_FEATURE_ENABLED_KEEP_ALIVE := true
+AUDIO_FEATURE_ENABLED_KEEP_ALIVE := true
 AUDIO_FEATURE_ENABLED_DISPLAY_PORT := true
 AUDIO_FEATURE_ENABLED_DS2_DOLBY_DAP := false
 AUDIO_FEATURE_ENABLED_HFP := true
@@ -62,6 +62,7 @@
 AUDIO_FEATURE_ENABLED_SOURCE_TRACKING := true
 AUDIO_FEATURE_ENABLED_GEF_SUPPORT := true
 BOARD_SUPPORTS_QAHW := true
+AUDIO_FEATURE_ENABLED_QAF := true
 AUDIO_FEATURE_ENABLED_RAS := true
 AUDIO_FEATURE_ENABLED_DYNAMIC_LOG := true
 AUDIO_FEATURE_ENABLED_SND_MONITOR := true
@@ -97,8 +98,7 @@
     hardware/qcom/audio/configs/msm8998/sound_trigger_mixer_paths_wcd9340.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_mixer_paths_wcd9340.xml \
     hardware/qcom/audio/configs/msm8998/sound_trigger_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_platform_info.xml \
     hardware/qcom/audio/configs/msm8998/graphite_ipc_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/graphite_ipc_platform_info.xml \
-    hardware/qcom/audio/configs/msm8998/audio_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_info.xml \
-    vendor/qcom/proprietary/mm-audio/audio-log-utils/audio_dynamic_log.xml:$(TARGET_COPY_OUT_VENDOR)/data/vendor/misc/audio/audio_dynamic_log.xml
+    hardware/qcom/audio/configs/msm8998/audio_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_info.xml
 
 #XML Audio configuration files
 ifeq ($(USE_XML_AUDIO_POLICY_CONF), 1)
@@ -150,6 +150,14 @@
 PRODUCT_PROPERTY_OVERRIDES += \
 audio.offload.video=true
 
+#Enable 16 bit PCM offload by default
+PRODUCT_PROPERTY_OVERRIDES += \
+audio.offload.pcm.16bit.enable=true
+
+#Enable 24 bit PCM offload by default
+PRODUCT_PROPERTY_OVERRIDES += \
+audio.offload.pcm.24bit.enable=true
+
 #Enable audio track offload by default
 PRODUCT_PROPERTY_OVERRIDES += \
 vendor.audio.offload.track.enable=true
@@ -158,6 +166,10 @@
 PRODUCT_PROPERTY_OVERRIDES += \
 audio.deep_buffer.media=true
 
+#QC property used when calculating client heap size in audio flinger
+PRODUCT_PROPERTY_OVERRIDES += \
+audio.heap.size.multiplier=7
+
 #enable voice path for PCM VoIP by default
 PRODUCT_PROPERTY_OVERRIDES += \
 vendor.voice.path.for.pcm.voip=true
@@ -173,11 +185,11 @@
 
 #Disable Multiple offload sesison
 PRODUCT_PROPERTY_OVERRIDES += \
-vendor.audio.offload.multiple.enabled=false
+vendor.audio.offload.multiple.enabled=true
 
 #Disable Compress passthrough playback
 PRODUCT_PROPERTY_OVERRIDES += \
-vendor.audio.offload.passthrough=false
+vendor.audio.offload.passthrough=true
 
 #Disable surround sound recording
 PRODUCT_PROPERTY_OVERRIDES += \
diff --git a/configs/apq8098_latv/audio_policy_configuration.xml b/configs/apq8098_latv/audio_policy_configuration.xml
old mode 100644
new mode 100755
index c8707e3..484f96a
--- a/configs/apq8098_latv/audio_policy_configuration.xml
+++ b/configs/apq8098_latv/audio_policy_configuration.xml
@@ -68,6 +68,10 @@
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
                              samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
                 </mixPort>
+                <mixPort name="mmap_no_irq_out" role="source" flags="AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_MMAP_NOIRQ">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+                </mixPort>
                 <mixPort name="deep_buffer" role="source"
                         flags="AUDIO_OUTPUT_FLAG_DEEP_BUFFER">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
@@ -194,6 +198,11 @@
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
                              samplingRates="8000,16000,48000" channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO"/>
                 </mixPort>
+                <mixPort name="mmap_no_irq_in" role="sink" flags="AUDIO_INPUT_FLAG_MMAP_NOIRQ">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
+                             channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK,AUDIO_CHANNEL_INDEX_MASK_3"/>
+                </mixPort>
             </mixPorts>
 
             <devicePorts>
@@ -305,15 +314,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"/>
+                       sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx,mmap_no_irq_out"/>
                 <route type="mix" sink="Speaker"
-                       sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
+                       sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx,mmap_no_irq_out"/>
                 <route type="mix" sink="Wired Headset"
-                       sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,dsd_compress_passthrough,voip_rx"/>
+                       sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,dsd_compress_passthrough,voip_rx,mmap_no_irq_out"/>
                 <route type="mix" sink="Wired Headphones"
-                       sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,dsd_compress_passthrough,voip_rx"/>
+                       sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,dsd_compress_passthrough,voip_rx,mmap_no_irq_out"/>
                 <route type="mix" sink="Line"
-                       sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,dsd_compress_passthrough,voip_rx"/>
+                       sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,dsd_compress_passthrough,voip_rx,mmap_no_irq_out"/>
                 <route type="mix" sink="HDMI"
                        sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,compress_passthrough"/>
                 <route type="mix" sink="Proxy"
@@ -321,19 +330,21 @@
                 <route type="mix" sink="FM"
                        sources="primary output"/>
                 <route type="mix" sink="BT SCO All"
-                       sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
+                       sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx,mmap_no_irq_out"/>
                 <route type="mix" sink="USB Device Out"
-                       sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
+                       sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx,mmap_no_irq_out"/>
                 <route type="mix" sink="Telephony Tx"
                        sources="voice_tx"/>
                 <route type="mix" sink="voice_rx"
                        sources="Telephony Rx"/>
                 <route type="mix" sink="primary input"
-                       sources="Built-In Mic,Wired Headset Mic,BT SCO Headset Mic,FM Tuner,USB Device In,Telephony Rx"/>
+                       sources="Wired Headset Mic,BT SCO Headset Mic,FM Tuner,USB Device In,Telephony Rx"/>
                 <route type="mix" sink="surround_sound"
                        sources="Built-In Mic,Built-In Back Mic"/>
                 <route type="mix" sink="record_24"
                        sources="Built-In Mic,Built-In Back Mic,Wired Headset Mic"/>
+                <route type="mix" sink="mmap_no_irq_in"
+                       sources="Built-In Mic,Built-In Back Mic,Wired Headset Mic,USB Device In"/>
                 <route type="mix" sink="BT A2DP Out"
                        sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload"/>
                 <route type="mix" sink="BT A2DP Headphones"
diff --git a/configs/msm8909/msm8909.mk b/configs/msm8909/msm8909.mk
index c3305e9..9a32dee 100755
--- a/configs/msm8909/msm8909.mk
+++ b/configs/msm8909/msm8909.mk
@@ -65,8 +65,7 @@
     hardware/qcom/audio/configs/msm8909/sound_trigger_mixer_paths.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_mixer_paths.xml \
     hardware/qcom/audio/configs/msm8909/sound_trigger_mixer_paths_wcd9326.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_mixer_paths_wcd9326.xml \
     hardware/qcom/audio/configs/msm8909/sound_trigger_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_platform_info.xml \
-    hardware/qcom/audio/configs/msm8909/audio_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_info.xml \
-    vendor/qcom/proprietary/mm-audio/audio-log-utils/audio_dynamic_log.xml:$(TARGET_COPY_OUT_VENDOR)/data/vendor/misc/audio/audio_dynamic_log.xml
+    hardware/qcom/audio/configs/msm8909/audio_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_info.xml
 
 #XML Audio configuration files
 ifeq ($(USE_XML_AUDIO_POLICY_CONF), 1)
diff --git a/configs/msm8937/msm8937.mk b/configs/msm8937/msm8937.mk
index 9de472f..6200705 100644
--- a/configs/msm8937/msm8937.mk
+++ b/configs/msm8937/msm8937.mk
@@ -95,8 +95,7 @@
 hardware/qcom/audio/configs/msm8937/mixer_paths_qrd_sku2.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths_qrd_sku2.xml \
 hardware/qcom/audio/configs/msm8937/audio_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_info.xml \
 hardware/qcom/audio/configs/msm8937/audio_platform_info_extcodec.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_info_extcodec.xml \
-hardware/qcom/audio/configs/msm8937/audio_tuning_mixer.txt:$(TARGET_COPY_OUT_VENDOR)/etc/audio_tuning_mixer.txt \
-vendor/qcom/proprietary/mm-audio/audio-log-utils/audio_dynamic_log.xml:$(TARGET_COPY_OUT_VENDOR)/data/vendor/misc/audio/audio_dynamic_log.xml
+hardware/qcom/audio/configs/msm8937/audio_tuning_mixer.txt:$(TARGET_COPY_OUT_VENDOR)/etc/audio_tuning_mixer.txt
 
 #XML Audio configuration files
 ifeq ($(USE_XML_AUDIO_POLICY_CONF), 1)
diff --git a/configs/msm8953/msm8953.mk b/configs/msm8953/msm8953.mk
index 035c3f3..068317d 100644
--- a/configs/msm8953/msm8953.mk
+++ b/configs/msm8953/msm8953.mk
@@ -94,8 +94,7 @@
 hardware/qcom/audio/configs/msm8953/sound_trigger_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_platform_info.xml \
 hardware/qcom/audio/configs/msm8953/audio_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_info.xml \
 hardware/qcom/audio/configs/msm8953/audio_platform_info_extcodec.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_info_extcodec.xml \
-hardware/qcom/audio/configs/msm8953/audio_tuning_mixer.txt:$(TARGET_COPY_OUT_VENDOR)/etc/audio_tuning_mixer.txt \
-vendor/qcom/proprietary/mm-audio/audio-log-utils/audio_dynamic_log.xml:$(TARGET_COPY_OUT_VENDOR)/data/vendor/misc/audio/audio_dynamic_log.xml
+hardware/qcom/audio/configs/msm8953/audio_tuning_mixer.txt:$(TARGET_COPY_OUT_VENDOR)/etc/audio_tuning_mixer.txt
 
 #XML Audio configuration files
 ifeq ($(USE_XML_AUDIO_POLICY_CONF), 1)
diff --git a/configs/msm8996/msm8996.mk b/configs/msm8996/msm8996.mk
index 178de2e..2b815ae 100644
--- a/configs/msm8996/msm8996.mk
+++ b/configs/msm8996/msm8996.mk
@@ -82,8 +82,7 @@
     hardware/qcom/audio/configs/msm8996/sound_trigger_mixer_paths.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_mixer_paths.xml \
     hardware/qcom/audio/configs/msm8996/sound_trigger_mixer_paths_wcd9330.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_mixer_paths_wcd9330.xml \
     hardware/qcom/audio/configs/msm8996/sound_trigger_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_platform_info.xml \
-    hardware/qcom/audio/configs/msm8996/audio_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_info.xml \
-    vendor/qcom/proprietary/mm-audio/audio-log-utils/audio_dynamic_log.xml:$(TARGET_COPY_OUT_VENDOR)/data/vendor/misc/audio/audio_dynamic_log.xml
+    hardware/qcom/audio/configs/msm8996/audio_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_info.xml
 
 #XML Audio configuration files
 ifeq ($(USE_XML_AUDIO_POLICY_CONF), 1)
diff --git a/configs/msm8998/msm8998.mk b/configs/msm8998/msm8998.mk
index e190e29..dd68841 100644
--- a/configs/msm8998/msm8998.mk
+++ b/configs/msm8998/msm8998.mk
@@ -96,8 +96,7 @@
     hardware/qcom/audio/configs/msm8998/sound_trigger_mixer_paths_wcd9340.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_mixer_paths_wcd9340.xml \
     hardware/qcom/audio/configs/msm8998/sound_trigger_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_platform_info.xml \
     hardware/qcom/audio/configs/msm8998/graphite_ipc_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/graphite_ipc_platform_info.xml \
-    hardware/qcom/audio/configs/msm8998/audio_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_info.xml \
-    vendor/qcom/proprietary/mm-audio/audio-log-utils/audio_dynamic_log.xml:$(TARGET_COPY_OUT_VENDOR)/data/vendor/misc/audio/audio_dynamic_log.xml
+    hardware/qcom/audio/configs/msm8998/audio_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_info.xml
 
 #XML Audio configuration files
 ifeq ($(USE_XML_AUDIO_POLICY_CONF), 1)
diff --git a/configs/sdm660/sdm660.mk b/configs/sdm660/sdm660.mk
index f805467..6834479 100644
--- a/configs/sdm660/sdm660.mk
+++ b/configs/sdm660/sdm660.mk
@@ -100,8 +100,7 @@
     hardware/qcom/audio/configs/sdm660/sound_trigger_mixer_paths_wcd9335.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_mixer_paths_wcd9335.xml \
     hardware/qcom/audio/configs/sdm660/sound_trigger_mixer_paths_wcd9340.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_mixer_paths_wcd9340.xml \
     hardware/qcom/audio/configs/sdm660/sound_trigger_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_platform_info.xml \
-    hardware/qcom/audio/configs/sdm660/graphite_ipc_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/graphite_ipc_platform_info.xml \
-    vendor/qcom/proprietary/mm-audio/audio-log-utils/audio_dynamic_log.xml:$(TARGET_COPY_OUT_VENDOR)/data/vendor/misc/audio/audio_dynamic_log.xml
+    hardware/qcom/audio/configs/sdm660/graphite_ipc_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/graphite_ipc_platform_info.xml
 
 #XML Audio configuration files
 ifeq ($(USE_XML_AUDIO_POLICY_CONF), 1)
diff --git a/configs/sdm670/sdm670.mk b/configs/sdm670/sdm670.mk
index ae7ddbf..d220650 100644
--- a/configs/sdm670/sdm670.mk
+++ b/configs/sdm670/sdm670.mk
@@ -100,8 +100,7 @@
     hardware/qcom/audio/configs/sdm670/sound_trigger_mixer_paths_wcd9335.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_mixer_paths_wcd9335.xml \
     hardware/qcom/audio/configs/sdm670/sound_trigger_mixer_paths_wcd9340.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_mixer_paths_wcd9340.xml \
     hardware/qcom/audio/configs/sdm670/sound_trigger_mixer_paths_wcd9340.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_mixer_paths_wcd9340.xml \
-    hardware/qcom/audio/configs/sdm670/graphite_ipc_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/graphite_ipc_platform_info.xml \
-    vendor/qcom/proprietary/mm-audio/audio-log-utils/audio_dynamic_log.xml:$(TARGET_COPY_OUT_VENDOR)/data/vendor/misc/audio/audio_dynamic_log.xml
+    hardware/qcom/audio/configs/sdm670/graphite_ipc_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/graphite_ipc_platform_info.xml
 
 #XML Audio configuration files
 ifeq ($(USE_XML_AUDIO_POLICY_CONF), 1)
diff --git a/configs/sdm845/audio_platform_info_i2s.xml b/configs/sdm845/audio_platform_info_i2s.xml
index 5458b60..0dbc7c9 100644
--- a/configs/sdm845/audio_platform_info_i2s.xml
+++ b/configs/sdm845/audio_platform_info_i2s.xml
@@ -25,11 +25,19 @@
 <!-- OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -->
 <!-- IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                          -->
 <audio_platform_info_i2s>
-    <device name="SND_DEVICE_IN_HANDSET_MIC" acdb_id="8" />
-    <device name="SND_DEVICE_IN_SPEAKER_MIC" acdb_id="8" />
-    <device name="SND_DEVICE_IN_VOICE_SPEAKER_MIC" acdb_id="8" />
-    <device name="SND_DEVICE_OUT_HANDSET" acdb_id="10" />
-    <device name="SND_DEVICE_OUT_VOICE_HANDSET" acdb_id="10" />
-    <device name="SND_DEVICE_OUT_SPEAKER" acdb_id="10" />
-    <device name="SND_DEVICE_OUT_VOICE_SPEAKER" acdb_id="10" />
+    <acdb_ids>
+        <device name="SND_DEVICE_IN_HANDSET_MIC" acdb_id="8" />
+        <device name="SND_DEVICE_IN_SPEAKER_MIC" acdb_id="8" />
+        <device name="SND_DEVICE_IN_VOICE_SPEAKER_MIC" acdb_id="8" />
+        <device name="SND_DEVICE_OUT_HANDSET" acdb_id="10" />
+        <device name="SND_DEVICE_OUT_VOICE_HANDSET" acdb_id="10" />
+        <device name="SND_DEVICE_OUT_SPEAKER" acdb_id="10" />
+        <device name="SND_DEVICE_OUT_VOICE_SPEAKER" acdb_id="10" />
+    </acdb_ids>
+    <pcm_ids>
+        <usecase name="USECASE_VOICEMMODE1_CALL" type="in" id="2"/>
+        <usecase name="USECASE_VOICEMMODE1_CALL" type="out" id="2"/>
+        <usecase name="USECASE_VOICEMMODE2_CALL" type="in" id="3"/>
+        <usecase name="USECASE_VOICEMMODE2_CALL" type="out" id="3"/>
+    </pcm_ids>
 </audio_platform_info_i2s>
diff --git a/configs/sdm845/mixer_paths_i2s.xml b/configs/sdm845/mixer_paths_i2s.xml
index fa8377b..10d5ec5 100644
--- a/configs/sdm845/mixer_paths_i2s.xml
+++ b/configs/sdm845/mixer_paths_i2s.xml
@@ -68,15 +68,30 @@
     <ctl name="SLIM RX3 MUX" value="AIF1_PB" />
     <ctl name="CLASS_H_DSM MUX" value="ZERO" />
 
+    <!-- Multimode Voice1 -->
+    <ctl name="Voice Stub Tx Mixer TERT_MI2S_TX" value="0" />
+    <ctl name="QUAT_MI2S_RX_Voice Mixer Voice Stub" value="0" />
+    <ctl name="Voice Stub Tx Mixer QUAT_MI2S_TX" value="0" />
+    <ctl name="TERT_MI2S_RX_Voice Mixer Voice Stub" value="0" />
+    <ctl name="QUAT_MI2S_RX Port Mixer TERT_MI2S_TX" value="0" />
+    <ctl name="TERT_MI2S_RX Port Mixer QUAT_MI2S_TX" value="0" />
+    <!-- Multimode Voice1 end -->
+
+    <!-- Multimode Voice2 -->
+    <ctl name="Voice2 Stub Tx Mixer TERT_MI2S_TX" value="0" />
+    <ctl name="QUAT_MI2S_RX_Voice Mixer Voice2 Stub" value="0" />
+    <ctl name="Voice2 Stub Tx Mixer QUAT_MI2S_TX" value="0" />
+    <ctl name="TERT_MI2S_RX_Voice Mixer Voice2 Stub" value="0" />
+    <ctl name="QUAT_MI2S_RX Port Mixer TERT_MI2S_TX" value="0" />
+    <ctl name="TERT_MI2S_RX Port Mixer QUAT_MI2S_TX" value="0" />
+    <!-- Multimode Voice2 end -->
+
+
     <!-- RT Proxy Cal -->
     <ctl name="RT_PROXY_1_RX SetCalMode" value="CAL_MODE_NONE" />
     <ctl name="RT_PROXY_1_TX SetCalMode" value="CAL_MODE_NONE" />
     <!-- RT Proxy Cal end -->
 
-    <!-- mixer control to disable lowlatency qos voting -->
-    <ctl name="MultiMedia5_RX QOS Vote" value="Disable" />
-    <!-- mixer control to disable lowlatency qos voting end -->
-
     <!-- These are audio route (FE to BE) specific mixer settings -->
     <path name="deep-buffer-playback">
         <ctl name="AUX_PCM_RX Audio Mixer MultiMedia1" value="1" />
@@ -86,10 +101,6 @@
         <ctl name="AUX_PCM_RX Audio Mixer MultiMedia5" value="1" />
     </path>
 
-    <path name="low-latency-playback resume">
-        <ctl name="MultiMedia5_RX QOS Vote" value="Enable" />
-    </path>
-
     <path name="compress-offload-playback">
         <ctl name="AUX_PCM_RX Audio Mixer MultiMedia4" value="1" />
     </path>
@@ -102,6 +113,28 @@
         <ctl name="MultiMedia8 Mixer AUX_PCM_UL_TX" value="1" />
     </path>
 
+    <path name="voicemmode1-call">
+        <ctl name="Voice Stub Tx Mixer TERT_MI2S_TX" value="1" />
+        <ctl name="QUAT_MI2S_RX_Voice Mixer Voice Stub" value="1" />
+        <ctl name="Voice Stub Tx Mixer QUAT_MI2S_TX" value="1" />
+        <ctl name="TERT_MI2S_RX_Voice Mixer Voice Stub" value="1" />
+        <ctl name="QUAT_MI2S_RX Port Mixer TERT_MI2S_TX" value="1" />
+        <ctl name="TERT_MI2S_RX Port Mixer QUAT_MI2S_TX" value="1" />
+    </path>
+
+    <path name="voicemmode2-call">
+        <ctl name="Voice2 Stub Tx Mixer TERT_MI2S_TX" value="1" />
+        <ctl name="QUAT_MI2S_RX_Voice Mixer Voice2 Stub" value="1" />
+        <ctl name="Voice2 Stub Tx Mixer QUAT_MI2S_TX" value="1" />
+        <ctl name="TERT_MI2S_RX_Voice Mixer Voice2 Stub" value="1" />
+        <ctl name="QUAT_MI2S_RX Port Mixer TERT_MI2S_TX" value="1" />
+        <ctl name="TERT_MI2S_RX Port Mixer QUAT_MI2S_TX" value="1" />
+    </path>
+
+    <path name="gsm-mode">
+        <ctl name="GSM mode Enable" value="ON" />
+    </path>
+
     <!-- These are actual sound device specific mixer settings -->
     <path name="adc1">
         <ctl name="AIF1_CAP Mixer SLIM TX9" value="1"/>
@@ -111,10 +144,11 @@
     </path>
 
     <path name="adc2">
-        <ctl name="AIF1_CAP Mixer SLIM TX9" value="1"/>
-        <ctl name="QUAT_MI2S_TX Channels" value="One" />
-        <ctl name="SLIM TX9 MUX" value="DEC5" />
-        <ctl name="DEC5 MUX" value="ADC2" />
+        <ctl name="MI2S_TX Channels" value="One" />
+        <ctl name="AIF1_CAP Mixer SLIM TX8" value="1"/>
+        <ctl name="SLIM TX8 MUX" value="DEC8" />
+        <ctl name="ADC MUX8" value="AMIC" />
+        <ctl name="AMIC MUX8" value="ADC2" />
     </path>
 
     <path name="dmic1">
@@ -176,23 +210,20 @@
     </path>
 
     <path name="headphones">
+        <ctl name="SLIM RX2 MUX" value="AIF1_PB" />
         <ctl name="SLIM RX3 MUX" value="AIF1_PB" />
-        <ctl name="SLIM RX4 MUX" value="AIF1_PB" />
-        <ctl name="QUAT_MI2S_RX Channels" value="Two" />
-        <ctl name="RX1 MIX1 INP1" value="RX3" />
-        <ctl name="RX2 MIX1 INP1" value="RX4" />
-        <ctl name="CLASS_H_DSM MUX" value="DSM_HPHL_RX1" />
-        <ctl name="HPHL DAC Switch" value="1" />
+        <ctl name="MI2S_RX Channels" value="Two" />
+        <ctl name="RX INT1_1 MIX1 INP0" value="RX2" />
+        <ctl name="RX INT2_1 MIX1 INP0" value="RX3" />
+        <ctl name="RX INT1 DEM MUX" value="CLSH_DSM_OUT" />
+        <ctl name="RX INT2 DEM MUX" value="CLSH_DSM_OUT" />
         <ctl name="COMP1 Switch" value="1" />
-    </path>
-
-    <path name="line">
-        <path name="headphones" />
+        <ctl name="COMP2 Switch" value="1" />
     </path>
 
     <path name="headset-mic">
         <path name="adc2" />
-        <ctl name="ADC2 Volume" value="13" />
+        <ctl name="DEC8 Volume" value="84" />
     </path>
 
     <path name="voice-handset">
@@ -215,10 +246,6 @@
         <path name="headphones" />
     </path>
 
-    <path name="voice-line">
-        <path name="voice-headphones" />
-    </path>
-
     <path name="voice-headset-mic">
         <path name="headset-mic" />
         <path name="sidetone-headphones" />
@@ -231,10 +258,6 @@
         <ctl name="COMP0 Switch" value="1" />
     </path>
 
-    <path name="speaker-and-line">
-        <path name="speaker-and-headphones" />
-    </path>
-
     <path name="voice-rec-mic">
         <path name="handset-mic" />
     </path>
diff --git a/configs/sdm845/sdm845.mk b/configs/sdm845/sdm845.mk
index 72e00c9..e6f2b3d 100644
--- a/configs/sdm845/sdm845.mk
+++ b/configs/sdm845/sdm845.mk
@@ -88,8 +88,7 @@
     hardware/qcom/audio/configs/sdm845/sound_trigger_mixer_paths_wcd9340.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_mixer_paths_wcd9340.xml \
     hardware/qcom/audio/configs/sdm845/sound_trigger_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_platform_info.xml \
     hardware/qcom/audio/configs/sdm845/graphite_ipc_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/graphite_ipc_platform_info.xml \
-    hardware/qcom/audio/configs/sdm845/audio_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_info.xml \
-    vendor/qcom/proprietary/mm-audio/audio-log-utils/audio_dynamic_log.xml:$(TARGET_COPY_OUT_VENDOR)/data/vendor/misc/audio/audio_dynamic_log.xml
+    hardware/qcom/audio/configs/sdm845/audio_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_info.xml
 
 #XML Audio configuration files
 ifeq ($(USE_XML_AUDIO_POLICY_CONF), 1)
diff --git a/hal/audio_extn/keep_alive.c b/hal/audio_extn/keep_alive.c
index 3e9a91c..dad4946 100644
--- a/hal/audio_extn/keep_alive.c
+++ b/hal/audio_extn/keep_alive.c
@@ -124,7 +124,7 @@
 
     if (cmd == NULL) {
         ALOGE("%s: cmd is NULL", __func__);
-        return -ENOMEM;
+        return;
     }
 
     cmd->req = r;
diff --git a/hal/audio_extn/qaf.c b/hal/audio_extn/qaf.c
index 44d471c..20d0ae4 100644
--- a/hal/audio_extn/qaf.c
+++ b/hal/audio_extn/qaf.c
@@ -2541,7 +2541,12 @@
     struct stream_out *out = (struct stream_out *)stream;
     struct qaf_module* qaf_mod = get_qaf_module_for_input_stream(out);
 
-    if (!qaf_mod) return;
+    if (!qaf_mod) {
+        DEBUG_MSG("qaf module is NULL, by passing qaf on close output stream");
+        /*closing non-MS12/default output stream opened with qaf */
+        adev_close_output_stream(dev, stream);
+        return;
+    }
 
     DEBUG_MSG("stream_handle(%p) format = %x", out, out->format);
 
diff --git a/hal/audio_extn/utils.c b/hal/audio_extn/utils.c
index 9f99a94..4b48e3d 100644
--- a/hal/audio_extn/utils.c
+++ b/hal/audio_extn/utils.c
@@ -705,7 +705,7 @@
     if (!strncmp("true", value, sizeof("true"))) {
         if ((popcount(channel_mask) > 2) &&
                 (sample_rate > CODEC_BACKEND_DEFAULT_SAMPLE_RATE) &&
-                !(flags & AUDIO_OUTPUT_FLAG_COMPRESS_PASSTHROUGH))  {
+                !(flags & (audio_output_flags_t)AUDIO_OUTPUT_FLAG_COMPRESS_PASSTHROUGH))  {
                     sample_rate = CODEC_BACKEND_DEFAULT_SAMPLE_RATE;
                     ALOGD("%s: MCH session defaulting sample rate to %d",
                                __func__, sample_rate);
@@ -717,7 +717,7 @@
      * Set Bit Width to 16. output will be 16 bit
      * post DoP in ASM.
      */
-    if ((flags & AUDIO_OUTPUT_FLAG_COMPRESS_PASSTHROUGH) &&
+    if ((flags & (audio_output_flags_t)AUDIO_OUTPUT_FLAG_COMPRESS_PASSTHROUGH) &&
         (format == AUDIO_FORMAT_DSD)) {
         bit_width = 16;
         if (sample_rate == INPUT_SAMPLING_RATE_DSD64)
@@ -951,7 +951,8 @@
         if (!strncmp("true", value, sizeof("true"))) {
             if ((popcount(usecase->stream.out->channel_mask) > 2) &&
                    (usecase->stream.out->app_type_cfg.sample_rate > CODEC_BACKEND_DEFAULT_SAMPLE_RATE) &&
-                   !(usecase->stream.out->flags & AUDIO_OUTPUT_FLAG_COMPRESS_PASSTHROUGH))
+                   !(usecase->stream.out->flags &
+                            (audio_output_flags_t)AUDIO_OUTPUT_FLAG_COMPRESS_PASSTHROUGH))
                sample_rate = CODEC_BACKEND_DEFAULT_SAMPLE_RATE;
         }
 
@@ -985,12 +986,12 @@
          */
         list_for_each(node, &adev->streams_output_cfg_list) {
             s_info = node_to_item(node, struct streams_io_cfg, list);
-            if (s_info->flags.out_flags == (AUDIO_OUTPUT_FLAG_BD |
+            if (s_info->flags.out_flags == (audio_output_flags_t)(AUDIO_OUTPUT_FLAG_BD |
                                             AUDIO_OUTPUT_FLAG_DIRECT_PCM |
                                             AUDIO_OUTPUT_FLAG_DIRECT))
                 bd_app_type = s_info->app_type_cfg.app_type;
         }
-        if (usecase->stream.out->flags == AUDIO_OUTPUT_FLAG_INTERACTIVE)
+        if (usecase->stream.out->flags == (audio_output_flags_t)AUDIO_OUTPUT_FLAG_INTERACTIVE)
             app_type = bd_app_type;
         else
             app_type = usecase->stream.out->app_type_cfg.app_type;
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 3ba3f77..be65139 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -5628,12 +5628,10 @@
             goto error_open;
         }
 
-        if (out->devices & AUDIO_DEVICE_OUT_AUX_DIGITAL) {
-            if(config->offload_info.format == 0)
-                config->offload_info.format = out->supported_formats[0];
-            if (config->offload_info.sample_rate == 0)
-                config->offload_info.sample_rate = out->supported_sample_rates[0];
-        }
+        if (config->offload_info.format == 0)
+            config->offload_info.format = config->format;
+        if (config->offload_info.sample_rate == 0)
+            config->offload_info.sample_rate = config->sample_rate;
 
         if (!is_supported_format(config->offload_info.format) &&
                 !audio_extn_passthru_is_supported_format(config->offload_info.format)) {
diff --git a/hal/msm8916/platform.c b/hal/msm8916/platform.c
index 45b02e3..50ab6f9 100644
--- a/hal/msm8916/platform.c
+++ b/hal/msm8916/platform.c
@@ -6708,6 +6708,9 @@
      } else
          *sample_rate = stream_sr;
 
+     if (snd_device == SND_DEVICE_OUT_HDMI)
+         *sample_rate = platform_get_supported_sampling_rate_on_hdmi(stream_sr);
+
      ALOGI("sn_device %d device sr %d stream sr %d copp sr %d", snd_device, device_sr, stream_sr
 , *sample_rate);
 
@@ -7811,6 +7814,48 @@
     return MAX_CODEC_BACKENDS;
 }
 
+int platform_get_supported_sampling_rate_on_hdmi(uint32_t stream_sr)
+{
+    int sample_rate;
+    switch (stream_sr){
+        case 8000:
+        case 11025:
+        case 16000:
+        case 22050:
+        case 32000:
+        case 48000:
+            sample_rate = 48000;
+            break;
+        case 44100:
+            sample_rate = 44100;
+            break;
+        case 64000:
+        case 96000:
+            sample_rate = 96000;
+            break;
+        case 88200:
+            sample_rate = 88200;
+            break;
+        case 176400:
+            sample_rate = 176400;
+            break;
+        case 192000:
+            sample_rate = 192000;
+            break;
+        case 352800:
+            sample_rate = 352800;
+            break;
+        case 384000:
+            sample_rate = 384000;
+            break;
+        case 144000:
+        default:
+            sample_rate = 48000;
+            break;
+    }
+    return sample_rate;
+}
+
 #if defined(PLATFORM_MSMFALCON)
 int platform_get_mmap_data_fd(void *platform, int fe_dev, int dir, int *fd,
                               uint32_t *size)
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 64dde86..2f2128a 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -6739,8 +6739,10 @@
      } else
          *sample_rate = stream_sr;
 
-     ALOGI("sn_device %d device sr %d stream sr %d copp sr %d", snd_device, device_sr, stream_sr
-, *sample_rate);
+    if (snd_device == SND_DEVICE_OUT_HDMI)
+        *sample_rate = platform_get_supported_sampling_rate_on_hdmi(stream_sr);
+
+     ALOGI("sn_device %d device sr %d stream sr %d copp sr %d", snd_device, device_sr, stream_sr, *sample_rate);
 
 }
 
@@ -7548,6 +7550,47 @@
 
     return MAX_CODEC_BACKENDS;
 }
+int platform_get_supported_sampling_rate_on_hdmi(uint32_t stream_sr)
+{
+    int sample_rate;
+    switch (stream_sr){
+        case 8000:
+        case 11025:
+        case 16000:
+        case 22050:
+        case 32000:
+        case 48000:
+            sample_rate = 48000;
+            break;
+        case 44100:
+            sample_rate = 44100;
+            break;
+        case 64000:
+        case 96000:
+            sample_rate = 96000;
+            break;
+        case 88200:
+            sample_rate = 88200;
+            break;
+        case 176400:
+            sample_rate = 176400;
+            break;
+        case 192000:
+            sample_rate = 192000;
+            break;
+        case 352800:
+            sample_rate = 352800;
+            break;
+        case 384000:
+            sample_rate = 384000;
+            break;
+        case 144000:
+        default:
+            sample_rate = 48000;
+            break;
+    }
+    return sample_rate;
+}
 
 #if defined (PLATFORM_MSM8998) || (PLATFORM_SDM845) || (PLATFORM_SDM670)
 int platform_get_mmap_data_fd(void *platform, int fe_dev, int dir, int *fd,
diff --git a/hal/msm8974/platform.h b/hal/msm8974/platform.h
index 387ef25..4fa9442 100644
--- a/hal/msm8974/platform.h
+++ b/hal/msm8974/platform.h
@@ -491,7 +491,7 @@
 #define FM_RX_VOLUME "PRI MI2S LOOPBACK Volume"
 #elif PLATFORM_MSM8996
 #define FM_RX_VOLUME "Tert MI2S LOOPBACK Volume"
-#elif defined (PLATFORM_MSM8998) || defined (PLATFORM_SDM845) || defined (PLATFORM_MSMFALCON)
+#elif defined (PLATFORM_MSM8998) || defined (PLATFORM_SDM845) || defined (PLATFORM_MSMFALCON) || defined (PLATFORM_SDM670)
 #define FM_RX_VOLUME "SLIMBUS_8 LOOPBACK Volume"
 #else
 #define FM_RX_VOLUME "Internal FM RX Volume"
diff --git a/hal/platform_api.h b/hal/platform_api.h
index 4407d2c..0674761 100644
--- a/hal/platform_api.h
+++ b/hal/platform_api.h
@@ -184,6 +184,7 @@
 
 int platform_set_channel_allocation(void *platform, int channel_alloc);
 int platform_get_edid_info(void *platform);
+int platform_get_supported_sampling_rate_on_hdmi(uint32_t stream_sr);
 int platform_set_channel_map(void *platform, int ch_count, char *ch_map,
                              int snd_id);
 int platform_set_stream_channel_map(void *platform, audio_channel_mask_t channel_mask,