Merge "configs: trinket: Add backend tag for voice-handset-tmus device"
diff --git a/configs/apq8098_latv/apq8098_latv.mk b/configs/apq8098_latv/apq8098_latv.mk
index 7079ea7..c7a8cfa 100644
--- a/configs/apq8098_latv/apq8098_latv.mk
+++ b/configs/apq8098_latv/apq8098_latv.mk
@@ -271,7 +271,7 @@
 
 #enable headset calibration
 PRODUCT_PROPERTY_OVERRIDES += \
-audio.volume.headset.gain.depcal=true
+vendor.audio.volume.headset.gain.depcal=true
 
 #enable dualmic fluence for voice communication
 PRODUCT_PROPERTY_OVERRIDES += \
diff --git a/configs/atoll/atoll.mk b/configs/atoll/atoll.mk
index 818258d..93d4cc9 100644
--- a/configs/atoll/atoll.mk
+++ b/configs/atoll/atoll.mk
@@ -290,7 +290,7 @@
 
 #enable headset calibration
 PRODUCT_PROPERTY_OVERRIDES += \
-audio.volume.headset.gain.depcal=true
+vendor.audio.volume.headset.gain.depcal=true
 
 #enable dualmic fluence for voice communication
 PRODUCT_PROPERTY_OVERRIDES += \
diff --git a/configs/atoll/audio_policy_configuration.xml b/configs/atoll/audio_policy_configuration.xml
index d28a405..c6365ff 100644
--- a/configs/atoll/audio_policy_configuration.xml
+++ b/configs/atoll/audio_policy_configuration.xml
@@ -284,11 +284,11 @@
                 </devicePort>
                 <devicePort tagName="USB Device Out" type="AUDIO_DEVICE_OUT_USB_DEVICE" role="sink">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
-                             samplingRates="44100,48000,64000,88200,96000,128000,176400,192000" channelMasks="AUDIO_CHANNEL_OUT_MONO,AUDIO_CHANNEL_OUT_STEREO"/>
+                             samplingRates="44100,48000,64000,88200,96000,128000,176400,192000" channelMasks="dynamic"/>
                 </devicePort>
                 <devicePort tagName="USB Headset Out" type="AUDIO_DEVICE_OUT_USB_HEADSET" role="sink">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
-                             samplingRates="44100,48000,64000,88200,96000,128000,176400,192000" channelMasks="AUDIO_CHANNEL_OUT_MONO,AUDIO_CHANNEL_OUT_STEREO"/>
+                             samplingRates="44100,48000,64000,88200,96000,128000,176400,192000" channelMasks="dynamic"/>
                 </devicePort>
 
                 <!-- Input devices declaration, i.e. Source DEVICE PORT -->
diff --git a/configs/kona/kona.mk b/configs/kona/kona.mk
index 33a678f..e145509 100644
--- a/configs/kona/kona.mk
+++ b/configs/kona/kona.mk
@@ -363,7 +363,7 @@
 
 #enable headset calibration
 PRODUCT_PROPERTY_OVERRIDES += \
-audio.volume.headset.gain.depcal=true
+vendor.audio.volume.headset.gain.depcal=true
 
 #enable dualmic fluence for voice communication
 PRODUCT_PROPERTY_OVERRIDES += \
@@ -423,6 +423,7 @@
 vendor.audio.feature.hifi_audio.enable=false \
 vendor.audio.feature.hwdep_cal.enable=false \
 vendor.audio.feature.incall_music.enable=true \
+vendor.audio.feature.multi_voice_session.enable=true \
 vendor.audio.feature.keep_alive.enable=true \
 vendor.audio.feature.kpi_optimize.enable=true \
 vendor.audio.feature.maxx_audio.enable=false \
diff --git a/configs/lito/lito.mk b/configs/lito/lito.mk
index d87d627..0a91560 100644
--- a/configs/lito/lito.mk
+++ b/configs/lito/lito.mk
@@ -347,7 +347,7 @@
 
 #enable headset calibration
 PRODUCT_PROPERTY_OVERRIDES += \
-audio.volume.headset.gain.depcal=true
+vendor.audio.volume.headset.gain.depcal=true
 
 #enable dualmic fluence for voice communication
 PRODUCT_PROPERTY_OVERRIDES += \
@@ -411,6 +411,7 @@
 vendor.audio.feature.hifi_audio.enable=false \
 vendor.audio.feature.hwdep_cal.enable=false \
 vendor.audio.feature.incall_music.enable=true \
+vendor.audio.feature.multi_voice_session.enable=true \
 vendor.audio.feature.keep_alive.enable=true \
 vendor.audio.feature.kpi_optimize.enable=true \
 vendor.audio.feature.maxx_audio.enable=false \
diff --git a/configs/msm8909/msm8909.mk b/configs/msm8909/msm8909.mk
index b5cc947..4cef1df 100644
--- a/configs/msm8909/msm8909.mk
+++ b/configs/msm8909/msm8909.mk
@@ -171,7 +171,7 @@
 
 #enable headset calibration
 PRODUCT_PROPERTY_OVERRIDES += \
-audio.volume.headset.gain.depcal=true
+vendor.audio.volume.headset.gain.depcal=true
 
 PRODUCT_PACKAGES += \
     android.hardware.audio@2.0-service \
diff --git a/configs/msm8937/msm8937.mk b/configs/msm8937/msm8937.mk
index a41740f..5f896c7 100644
--- a/configs/msm8937/msm8937.mk
+++ b/configs/msm8937/msm8937.mk
@@ -234,7 +234,7 @@
 
 #enable headset calibration
 PRODUCT_PROPERTY_OVERRIDES += \
-audio.volume.headset.gain.depcal=true
+vendor.audio.volume.headset.gain.depcal=true
 
 #add dynamic feature flags here
 PRODUCT_PROPERTY_OVERRIDES += \
@@ -263,6 +263,7 @@
 vendor.audio.feature.hifi_audio.enable=true \
 vendor.audio.feature.hwdep_cal.enable=false \
 vendor.audio.feature.incall_music.enable=false \
+vendor.audio.feature.multi_voice_session.enable=true \
 vendor.audio.feature.keep_alive.enable=false \
 vendor.audio.feature.kpi_optimize.enable=true \
 vendor.audio.feature.maxx_audio.enable=false \
diff --git a/configs/msm8953/msm8953.mk b/configs/msm8953/msm8953.mk
index 0b0e6be..3a1462f 100644
--- a/configs/msm8953/msm8953.mk
+++ b/configs/msm8953/msm8953.mk
@@ -247,7 +247,7 @@
 
 #enable headset calibration
 PRODUCT_PROPERTY_OVERRIDES += \
-audio.volume.headset.gain.depcal=true
+vendor.audio.volume.headset.gain.depcal=true
 
 # for HIDL related packages
 PRODUCT_PACKAGES += \
diff --git a/configs/msm8996/msm8996.mk b/configs/msm8996/msm8996.mk
index c4e2fce..ced5eb3 100644
--- a/configs/msm8996/msm8996.mk
+++ b/configs/msm8996/msm8996.mk
@@ -199,7 +199,7 @@
 
 #enable headset calibration
 PRODUCT_PROPERTY_OVERRIDES += \
-audio.volume.headset.gain.depcal=true
+vendor.audio.volume.headset.gain.depcal=true
 
 #enable dualmic fluence for voice communication
 PRODUCT_PROPERTY_OVERRIDES += \
diff --git a/configs/msm8998/audio_policy_configuration.xml b/configs/msm8998/audio_policy_configuration.xml
index 62e75c2..91870ea 100644
--- a/configs/msm8998/audio_policy_configuration.xml
+++ b/configs/msm8998/audio_policy_configuration.xml
@@ -162,7 +162,7 @@
                              samplingRates="8000,16000,32000,48000" channelMasks="AUDIO_CHANNEL_OUT_MONO"/>
                 </mixPort>
 
-                <mixPort name="primary input" role="sink" maxOpenCount="2" maxActiveCount="2">
+                <mixPort name="primary input" role="sink">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
                              samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
                              channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK"/>
@@ -267,11 +267,11 @@
                 </devicePort>
                 <devicePort tagName="USB Device Out" type="AUDIO_DEVICE_OUT_USB_DEVICE" role="sink">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
-                             samplingRates="44100,48000,64000,88200,96000,128000,176400,192000" channelMasks="AUDIO_CHANNEL_OUT_MONO,AUDIO_CHANNEL_OUT_STEREO"/>
+                             samplingRates="44100,48000,64000,88200,96000,128000,176400,192000" channelMasks="dynamic"/>
                 </devicePort>
                 <devicePort tagName="USB Headset Out" type="AUDIO_DEVICE_OUT_USB_HEADSET" role="sink">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
-                             samplingRates="44100,48000,64000,88200,96000,128000,176400,192000" channelMasks="AUDIO_CHANNEL_OUT_MONO,AUDIO_CHANNEL_OUT_STEREO"/>
+                             samplingRates="44100,48000,64000,88200,96000,128000,176400,192000" channelMasks="dynamic"/>
                 </devicePort>
 
                 <!-- Input devices declaration, i.e. Source DEVICE PORT -->
diff --git a/configs/msm8998/msm8998.mk b/configs/msm8998/msm8998.mk
index bdef964..889c17f 100644
--- a/configs/msm8998/msm8998.mk
+++ b/configs/msm8998/msm8998.mk
@@ -246,7 +246,7 @@
 
 #enable headset calibration
 PRODUCT_PROPERTY_OVERRIDES += \
-audio.volume.headset.gain.depcal=true
+vendor.audio.volume.headset.gain.depcal=true
 
 #enable dualmic fluence for voice communication
 PRODUCT_PROPERTY_OVERRIDES += \
@@ -283,6 +283,7 @@
 vendor.audio.feature.hifi_audio.enable=false \
 vendor.audio.feature.hwdep_cal.enable=false \
 vendor.audio.feature.incall_music.enable=false \
+vendor.audio.feature.multi_voice_session.enable=true \
 vendor.audio.feature.keep_alive.enable=false \
 vendor.audio.feature.kpi_optimize.enable=true \
 vendor.audio.feature.maxx_audio.enable=false \
diff --git a/configs/msmnile/msmnile.mk b/configs/msmnile/msmnile.mk
index 3315b11..c3104c6 100644
--- a/configs/msmnile/msmnile.mk
+++ b/configs/msmnile/msmnile.mk
@@ -367,7 +367,7 @@
 
 #enable headset calibration
 PRODUCT_PROPERTY_OVERRIDES += \
-audio.volume.headset.gain.depcal=true
+vendor.audio.volume.headset.gain.depcal=true
 
 #enable dualmic fluence for voice communication
 PRODUCT_PROPERTY_OVERRIDES += \
@@ -402,6 +402,7 @@
 vendor.audio.feature.hifi_audio.enable=false \
 vendor.audio.feature.hwdep_cal.enable=true  \
 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=false \
 vendor.audio.feature.maxx_audio.enable=true  \
@@ -446,6 +447,7 @@
 vendor.audio.feature.hifi_audio.enable=false \
 vendor.audio.feature.hwdep_cal.enable=false \
 vendor.audio.feature.incall_music.enable=true \
+vendor.audio.feature.multi_voice_session.enable=true \
 vendor.audio.feature.keep_alive.enable=true \
 vendor.audio.feature.kpi_optimize.enable=true \
 vendor.audio.feature.maxx_audio.enable=false \
diff --git a/configs/msmnile_au/msmnile_au.mk b/configs/msmnile_au/msmnile_au.mk
index db33c9a..c027546 100644
--- a/configs/msmnile_au/msmnile_au.mk
+++ b/configs/msmnile_au/msmnile_au.mk
@@ -275,7 +275,7 @@
 
 #enable headset calibration
 PRODUCT_PROPERTY_OVERRIDES += \
-audio.volume.headset.gain.depcal=true
+vendor.audio.volume.headset.gain.depcal=true
 
 #enable dualmic fluence for voice communication
 PRODUCT_PROPERTY_OVERRIDES += \
diff --git a/configs/msmsteppe/audio_policy_configuration.xml b/configs/msmsteppe/audio_policy_configuration.xml
index 99f03bf..2d2adc3 100644
--- a/configs/msmsteppe/audio_policy_configuration.xml
+++ b/configs/msmsteppe/audio_policy_configuration.xml
@@ -162,7 +162,7 @@
                              samplingRates="8000,16000,32000,48000" channelMasks="AUDIO_CHANNEL_OUT_MONO"/>
                 </mixPort>
 
-                <mixPort name="primary input" role="sink" maxOpenCount="2" maxActiveCount="2">
+                <mixPort name="primary input" role="sink">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
                              samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
                              channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK"/>
@@ -279,11 +279,11 @@
                 </devicePort>
                 <devicePort tagName="USB Device Out" type="AUDIO_DEVICE_OUT_USB_DEVICE" role="sink">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
-                             samplingRates="44100,48000,64000,88200,96000,128000,176400,192000" channelMasks="AUDIO_CHANNEL_OUT_MONO,AUDIO_CHANNEL_OUT_STEREO"/>
+                             samplingRates="44100,48000,64000,88200,96000,128000,176400,192000" channelMasks="dynamic"/>
                 </devicePort>
                 <devicePort tagName="USB Headset Out" type="AUDIO_DEVICE_OUT_USB_HEADSET" role="sink">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
-                             samplingRates="44100,48000,64000,88200,96000,128000,176400,192000" channelMasks="AUDIO_CHANNEL_OUT_MONO,AUDIO_CHANNEL_OUT_STEREO"/>
+                             samplingRates="44100,48000,64000,88200,96000,128000,176400,192000" channelMasks="dynamic"/>
                 </devicePort>
 
                 <!-- Input devices declaration, i.e. Source DEVICE PORT -->
diff --git a/configs/msmsteppe/msmsteppe.mk b/configs/msmsteppe/msmsteppe.mk
index ec546ac..5565a0d 100644
--- a/configs/msmsteppe/msmsteppe.mk
+++ b/configs/msmsteppe/msmsteppe.mk
@@ -351,7 +351,7 @@
 
 #enable headset calibration
 PRODUCT_PROPERTY_OVERRIDES += \
-audio.volume.headset.gain.depcal=true
+vendor.audio.volume.headset.gain.depcal=true
 
 #enable dualmic fluence for voice communication
 PRODUCT_PROPERTY_OVERRIDES += \
@@ -384,6 +384,7 @@
 vendor.audio.feature.hifi_audio.enable=false \
 vendor.audio.feature.hwdep_cal.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 \
 vendor.audio.feature.maxx_audio.enable=false \
diff --git a/configs/sdm660/audio_policy_configuration.xml b/configs/sdm660/audio_policy_configuration.xml
index 5ec3c56..fc5440f 100644
--- a/configs/sdm660/audio_policy_configuration.xml
+++ b/configs/sdm660/audio_policy_configuration.xml
@@ -158,7 +158,7 @@
                              samplingRates="8000,16000,32000,48000" channelMasks="AUDIO_CHANNEL_OUT_MONO"/>
                 </mixPort>
 
-                <mixPort name="primary input" role="sink" maxOpenCount="2" maxActiveCount="2">
+                <mixPort name="primary input" role="sink">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
                              samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
                              channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK"/>
@@ -258,11 +258,11 @@
                 </devicePort>
                 <devicePort tagName="USB Device Out" type="AUDIO_DEVICE_OUT_USB_DEVICE" role="sink">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
-                             samplingRates="44100,48000,64000,88200,96000,128000,176400,192000" channelMasks="AUDIO_CHANNEL_OUT_MONO,AUDIO_CHANNEL_OUT_STEREO"/>
+                             samplingRates="44100,48000,64000,88200,96000,128000,176400,192000" channelMasks="dynamic"/>
                 </devicePort>
                 <devicePort tagName="USB Headset Out" type="AUDIO_DEVICE_OUT_USB_HEADSET" role="sink">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
-                             samplingRates="44100,48000,64000,88200,96000,128000,176400,192000" channelMasks="AUDIO_CHANNEL_OUT_MONO,AUDIO_CHANNEL_OUT_STEREO"/>
+                             samplingRates="44100,48000,64000,88200,96000,128000,176400,192000" channelMasks="dynamic"/>
                 </devicePort>
 
                 <!-- Input devices declaration, i.e. Source DEVICE PORT -->
diff --git a/configs/sdm660/sdm660.mk b/configs/sdm660/sdm660.mk
index 5c0dc9c..a4af966 100644
--- a/configs/sdm660/sdm660.mk
+++ b/configs/sdm660/sdm660.mk
@@ -261,7 +261,7 @@
 
 #enable headset calibration
 PRODUCT_PROPERTY_OVERRIDES += \
-audio.volume.headset.gain.depcal=true
+vendor.audio.volume.headset.gain.depcal=true
 
 #enable AAC frame ctl for A2DP sinks
 PRODUCT_PROPERTY_OVERRIDES += \
@@ -294,6 +294,7 @@
 vendor.audio.feature.hifi_audio.enable=true \
 vendor.audio.feature.hwdep_cal.enable=false \
 vendor.audio.feature.incall_music.enable=false \
+vendor.audio.feature.multi_voice_session.enable=true \
 vendor.audio.feature.keep_alive.enable=false \
 vendor.audio.feature.kpi_optimize.enable=true \
 vendor.audio.feature.maxx_audio.enable=false \
diff --git a/configs/sdm710/audio_policy_configuration.xml b/configs/sdm710/audio_policy_configuration.xml
index 3f17b95..b8bca1c 100644
--- a/configs/sdm710/audio_policy_configuration.xml
+++ b/configs/sdm710/audio_policy_configuration.xml
@@ -162,7 +162,7 @@
                              samplingRates="8000,16000,32000,48000" channelMasks="AUDIO_CHANNEL_OUT_MONO"/>
                 </mixPort>
 
-                <mixPort name="primary input" role="sink" maxOpenCount="2" maxActiveCount="2">
+                <mixPort name="primary input" role="sink">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
                              samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
                              channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK"/>
diff --git a/configs/sdm710/sdm710.mk b/configs/sdm710/sdm710.mk
index 5cb6a5a..ce955d4 100644
--- a/configs/sdm710/sdm710.mk
+++ b/configs/sdm710/sdm710.mk
@@ -356,7 +356,7 @@
 
 #enable headset calibration
 PRODUCT_PROPERTY_OVERRIDES += \
-audio.volume.headset.gain.depcal=true
+vendor.audio.volume.headset.gain.depcal=true
 
 #enable dualmic fluence for voice communication
 PRODUCT_PROPERTY_OVERRIDES += \
@@ -393,6 +393,7 @@
 vendor.audio.feature.hifi_audio.enable=true \
 vendor.audio.feature.hwdep_cal.enable=false \
 vendor.audio.feature.incall_music.enable=false \
+vendor.audio.feature.multi_voice_session.enable=true \
 vendor.audio.feature.keep_alive.enable=false \
 vendor.audio.feature.kpi_optimize.enable=true \
 vendor.audio.feature.maxx_audio.enable=false \
diff --git a/configs/sdm845/audio_policy_configuration.xml b/configs/sdm845/audio_policy_configuration.xml
index 65b503c..6099b32 100644
--- a/configs/sdm845/audio_policy_configuration.xml
+++ b/configs/sdm845/audio_policy_configuration.xml
@@ -161,7 +161,7 @@
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
                              samplingRates="8000,16000,32000,48000" channelMasks="AUDIO_CHANNEL_OUT_MONO"/>
                 </mixPort>
-                <mixPort name="primary input" role="sink" maxOpenCount="2" maxActiveCount="2">
+                <mixPort name="primary input" role="sink">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
                              samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
                              channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK"/>
diff --git a/configs/sdm845/sdm845.mk b/configs/sdm845/sdm845.mk
index 77da76c..2357c4b 100644
--- a/configs/sdm845/sdm845.mk
+++ b/configs/sdm845/sdm845.mk
@@ -305,7 +305,7 @@
 
 #enable headset calibration
 PRODUCT_PROPERTY_OVERRIDES += \
-audio.volume.headset.gain.depcal=true
+vendor.audio.volume.headset.gain.depcal=true
 
 #enable dualmic fluence for voice communication
 PRODUCT_PROPERTY_OVERRIDES += \
@@ -343,6 +343,7 @@
 vendor.audio.feature.hifi_audio.enable=false \
 vendor.audio.feature.hwdep_cal.enable=false \
 vendor.audio.feature.incall_music.enable=false \
+vendor.audio.feature.multi_voice_session.enable=true \
 vendor.audio.feature.keep_alive.enable=false \
 vendor.audio.feature.kpi_optimize.enable=true \
 vendor.audio.feature.maxx_audio.enable=false \
diff --git a/configs/trinket/audio_policy_configuration.xml b/configs/trinket/audio_policy_configuration.xml
index a5d7f88..6d92ad5 100644
--- a/configs/trinket/audio_policy_configuration.xml
+++ b/configs/trinket/audio_policy_configuration.xml
@@ -162,7 +162,7 @@
                              samplingRates="8000,16000,32000,48000" channelMasks="AUDIO_CHANNEL_OUT_MONO"/>
                 </mixPort>
 
-                <mixPort name="primary input" role="sink" maxOpenCount="2" maxActiveCount="2">
+                <mixPort name="primary input" role="sink">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
                              samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
                              channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK"/>
@@ -284,11 +284,11 @@
                 </devicePort>
                 <devicePort tagName="USB Device Out" type="AUDIO_DEVICE_OUT_USB_DEVICE" role="sink">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
-                             samplingRates="44100,48000,64000,88200,96000,128000,176400,192000" channelMasks="AUDIO_CHANNEL_OUT_MONO,AUDIO_CHANNEL_OUT_STEREO"/>
+                             samplingRates="44100,48000,64000,88200,96000,128000,176400,192000" channelMasks="dynamic"/>
                 </devicePort>
                 <devicePort tagName="USB Headset Out" type="AUDIO_DEVICE_OUT_USB_HEADSET" role="sink">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
-                             samplingRates="44100,48000,64000,88200,96000,128000,176400,192000" channelMasks="AUDIO_CHANNEL_OUT_MONO,AUDIO_CHANNEL_OUT_STEREO"/>
+                             samplingRates="44100,48000,64000,88200,96000,128000,176400,192000" channelMasks="dynamic"/>
                 </devicePort>
 
                 <!-- Input devices declaration, i.e. Source DEVICE PORT -->
diff --git a/configs/trinket/trinket.mk b/configs/trinket/trinket.mk
index be9142c..aedb0a8 100644
--- a/configs/trinket/trinket.mk
+++ b/configs/trinket/trinket.mk
@@ -253,7 +253,7 @@
 
 #enable headset calibration
 PRODUCT_PROPERTY_OVERRIDES += \
-audio.volume.headset.gain.depcal=true
+vendor.audio.volume.headset.gain.depcal=true
 
 #enable dualmic fluence for voice communication
 PRODUCT_PROPERTY_OVERRIDES += \
@@ -286,6 +286,7 @@
 vendor.audio.feature.hifi_audio.enable=false \
 vendor.audio.feature.hwdep_cal.enable=false \
 vendor.audio.feature.incall_music.enable=false \
+vendor.audio.feature.multi_voice_session.enable=true \
 vendor.audio.feature.keep_alive.enable=false \
 vendor.audio.feature.kpi_optimize.enable=true \
 vendor.audio.feature.maxx_audio.enable=false \
diff --git a/hal/audio_extn/spkr_protection.c b/hal/audio_extn/spkr_protection.c
index b51a7d5..58fd16e 100644
--- a/hal/audio_extn/spkr_protection.c
+++ b/hal/audio_extn/spkr_protection.c
@@ -2049,8 +2049,6 @@
     handle.thread_exit = false;
     handle.cal_thrd_created = false;
     if ((property_get("persist.vendor.audio.speaker.prot.enable",
-                      value, NULL) > 0) ||
-        (property_get("persist.speaker.prot.enable",
                       value, NULL) > 0)) {
         if (!strncmp("true", value, 4))
              handle.spkr_prot_enable = true;
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index fd9d06b..d0e429a 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -3056,7 +3056,7 @@
 
     be_dai_name_table = NULL;
 
-    property_get("persist.audio.dualmic.config",value,"");
+    property_get("persist.vendor.audio.dualmic.config",value,"");
     if (!strcmp("endfire", value)) {
         dual_mic_config = true;
     }
diff --git a/hal/voice.c b/hal/voice.c
index c455537..0000d72 100644
--- a/hal/voice.c
+++ b/hal/voice.c
@@ -330,7 +330,7 @@
     }
 #endif
 
-    if(adev->mic_break_enabled)
+    if (adev->mic_break_enabled)
         platform_set_mic_break_det(adev->platform, true);
 
     ret = pcm_start(session->pcm_tx);
@@ -786,6 +786,10 @@
 void voice_init(struct audio_device *adev)
 {
     int i = 0;
+    int max_voice_sessions = MAX_VOICE_SESSIONS;
+
+    if (!voice_extn_is_multi_session_supported())
+        max_voice_sessions = 1;
 
     memset(&adev->voice, 0, sizeof(adev->voice));
     adev->voice.tty_mode = TTY_MODE_OFF;
@@ -793,7 +797,7 @@
     adev->voice.volume = 1.0f;
     adev->voice.mic_mute = false;
     adev->voice.in_call = false;
-    for (i = 0; i < MAX_VOICE_SESSIONS; i++) {
+    for (i = 0; i < max_voice_sessions; i++) {
         adev->voice.session[i].pcm_rx = NULL;
         adev->voice.session[i].pcm_tx = NULL;
         adev->voice.session[i].state.current = CALL_INACTIVE;
diff --git a/hal/voice_extn/voice_extn.c b/hal/voice_extn/voice_extn.c
index d278742..e6a4ed6 100644
--- a/hal/voice_extn/voice_extn.c
+++ b/hal/voice_extn/voice_extn.c
@@ -87,6 +87,7 @@
 static bool voice_extn_compress_voip_enabled = false;
 static bool voice_extn_dynamic_ecns_feature_enabled = false;
 static bool voice_extn_incall_music_enabled = false;
+static bool voice_extn_multi_session_enabled = false;
 
 int voice_extn_is_call_state_active(struct audio_device *adev, bool *is_call_active);
 
@@ -184,10 +185,14 @@
     struct voice_session *session = NULL;
     int i = 0;
     uint32_t session_id = 0;
+    int max_voice_sessions = MAX_VOICE_SESSIONS;
 
-    for (i = 0; i < MAX_VOICE_SESSIONS; i++) {
+    if (!voice_extn_is_multi_session_supported())
+        max_voice_sessions = 1;
+
+    for (i = 0; i < max_voice_sessions; i++) {
         session = &adev->voice.session[i];
-        if(session->state.current == call_state){
+        if (session->state.current == call_state){
             session_id = session->vsid;
             break;
         }
@@ -203,10 +208,13 @@
     enum voice_lch_mode lch_mode;
     struct voice_session *session = NULL;
     int ret = 0;
+    int max_voice_sessions = MAX_VOICE_SESSIONS;
 
     ALOGD("%s: enter:", __func__);
+    if (!voice_extn_is_multi_session_supported())
+        max_voice_sessions = 1;
 
-    for (i = 0; i < MAX_VOICE_SESSIONS; i++) {
+    for (i = 0; i < max_voice_sessions; i++) {
         usecase_id = voice_extn_get_usecase_for_session_idx(i);
         session = &adev->voice.session[i];
         ALOGD("%s: cur_state=%d new_state=%d vsid=%x",
@@ -220,7 +228,7 @@
             case CALL_INACTIVE:
                 ALOGD("%s: INACTIVE -> ACTIVE vsid:%x", __func__, session->vsid);
                 ret = voice_start_usecase(adev, usecase_id);
-                if(ret < 0) {
+                if (ret < 0) {
                     ALOGE("%s: voice_start_usecase() failed for usecase: %d\n",
                           __func__, usecase_id);
                 } else {
@@ -258,7 +266,7 @@
             case CALL_LOCAL_HOLD:
                 ALOGD("%s: ACTIVE/HOLD/LOCAL_HOLD -> INACTIVE vsid:%x", __func__, session->vsid);
                 ret = voice_stop_usecase(adev, usecase_id);
-                if(ret < 0) {
+                if (ret < 0) {
                     ALOGE("%s: voice_stop_usecase() failed for usecase: %d\n",
                           __func__, usecase_id);
                 } else {
@@ -334,8 +342,12 @@
     struct voice_session *session = NULL;
     int i = 0;
     bool is_call_active;
+    int max_voice_sessions = MAX_VOICE_SESSIONS;
 
-    for (i = 0; i < MAX_VOICE_SESSIONS; i++) {
+    if (!voice_extn_is_multi_session_supported())
+        max_voice_sessions = 1;
+
+    for (i = 0; i < max_voice_sessions; i++) {
         if (vsid == adev->voice.session[i].vsid) {
             session = &adev->voice.session[i];
             break;
@@ -370,6 +382,9 @@
 int voice_extn_get_active_session_id(struct audio_device *adev,
                                      uint32_t *session_id)
 {
+    if (!voice_extn_is_multi_session_supported())
+        return -ENOSYS;
+
     *session_id = get_session_id_with_state(adev, CALL_ACTIVE);
     return 0;
 }
@@ -378,11 +393,14 @@
 {
     struct voice_session *session = NULL;
     int i = 0;
-    *is_call_active = false;
 
+    if (!voice_extn_is_multi_session_supported())
+        return -ENOSYS;
+
+    *is_call_active = false;
     for (i = 0; i < MAX_VOICE_SESSIONS; i++) {
         session = &adev->voice.session[i];
-        if(session->state.current != CALL_INACTIVE){
+        if (session->state.current != CALL_INACTIVE){
             *is_call_active = true;
             break;
         }
@@ -403,14 +421,17 @@
     return voice_extn_dynamic_ecns_feature_enabled;
 }
 
-// START: INCALL_MUSIC ===================================================================
 void incall_music_feature_init(bool is_feature_enabled)
 {
     voice_extn_incall_music_enabled = is_feature_enabled;
     ALOGV("%s: ---- Feature INCALL_MUSIC is %s----", __func__,
                                 is_feature_enabled ? "ENABLED" : "NOT ENABLED");
 }
-// END: INCALL_MUSIC ===================================================================
+
+bool voice_extn_is_incall_music_enabled()
+{
+    return voice_extn_incall_music_enabled;
+}
 
 void compr_voip_feature_init(bool is_feature_enabled)
 {
@@ -424,6 +445,18 @@
     return voice_extn_compress_voip_enabled;
 }
 
+void multi_voice_session_feature_init(bool is_feature_enabled)
+{
+    voice_extn_multi_session_enabled = is_feature_enabled;
+    ALOGV("%s:: ---- Feature MULTI VOICE SESSION is %s ----", __func__,
+                                is_feature_enabled ? "ENABLED" : "NOT ENABLED");
+}
+
+bool voice_extn_is_multi_session_supported()
+{
+    return voice_extn_multi_session_enabled;
+}
+
 void voice_extn_feature_init()
 {
     // Register feature function here
@@ -437,10 +470,17 @@
     incall_music_feature_init(
        property_get_bool("vendor.audio.feature.incall_music.enable",
                           true));
+    multi_voice_session_feature_init(
+       property_get_bool("vendor.audio.feature.multi_voice_session.enable",
+                          true));
+
 }
 
 void voice_extn_init(struct audio_device *adev)
 {
+    if (!voice_extn_is_multi_session_supported())
+        return;
+
     adev->voice.session[VOICE_SESS_IDX].vsid =  VOICE_VSID;
     adev->voice.session[VOICE2_SESS_IDX].vsid = VOICE2_VSID;
     adev->voice.session[VOLTE_SESS_IDX].vsid =  VOLTE_VSID;
@@ -454,6 +494,8 @@
                                          const audio_usecase_t usecase_id,
                                          struct voice_session **session)
 {
+    if (!voice_extn_is_multi_session_supported())
+        return -ENOSYS;
 
     switch(usecase_id)
     {
@@ -500,6 +542,9 @@
      * udpated.
      */
     ALOGV("%s: enter:", __func__);
+    if (!voice_extn_is_multi_session_supported())
+        return -ENOSYS;
+
     return update_calls(adev);
 }
 
@@ -510,6 +555,9 @@
 
     ALOGV("%s: enter:", __func__);
 
+    if (!voice_extn_is_multi_session_supported())
+        return -ENOSYS;
+
     /* If BT device is enabled and voice calls are ended, telephony will call
      * set_mode(AUDIO_MODE_NORMAL) which will trigger audio policy manager to
      * set routing with device BT A2DP profile. Hence end all voice calls when
@@ -616,8 +664,12 @@
     int ret = 0;
     char *cur_ptr = value;
     int i, len=0;
+    int max_voice_sessions = MAX_VOICE_SESSIONS;
 
-    for (i = 0; i < MAX_VOICE_SESSIONS; i++) {
+    if (!voice_extn_is_multi_session_supported())
+        max_voice_sessions = 1;
+
+    for (i = 0; i < max_voice_sessions; i++) {
         snprintf(cur_ptr, VOICE_EXTN_PARAMETER_VALUE_MAX_LEN - len,
                  "%d:%d,",adev->voice.session[i].vsid,
                  adev->voice.session[i].state.current);
@@ -655,7 +707,7 @@
         }
         str_parms_add_str(reply, AUDIO_PARAMETER_KEY_ALL_CALL_STATES, value);
     }
-    if(voice_extn_compress_voip_enabled)
+    if (voice_extn_compress_voip_enabled)
         voice_extn_compress_voip_get_parameters(query, reply);
 
     str = str_parms_to_str(reply);
@@ -667,7 +719,7 @@
                                    struct str_parms *query,
                                    struct str_parms *reply)
 {
-    if(voice_extn_compress_voip_enabled)
+    if (voice_extn_compress_voip_enabled)
         voice_extn_compress_voip_out_get_parameters(out, query, reply);
 }
 
@@ -675,7 +727,7 @@
                                   struct str_parms *query,
                                   struct str_parms *reply)
 {
-    if(voice_extn_compress_voip_enabled)
+    if (voice_extn_compress_voip_enabled)
         voice_extn_compress_voip_in_get_parameters(in, query, reply);
 }
 
@@ -683,7 +735,7 @@
 int voice_extn_check_and_set_incall_music_usecase(struct audio_device *adev,
                                                   struct stream_out *out)
 {
-    if(voice_extn_incall_music_enabled) {
+    if (voice_extn_incall_music_enabled) {
         uint32_t session_id = get_session_id_with_state(adev, CALL_ACTIVE);
         if (session_id == VOICEMMODE1_VSID) {
             out->usecase = USECASE_INCALL_MUSIC_UPLINK;
@@ -707,10 +759,10 @@
 
 
 int voice_extn_compress_voip_set_parameters(struct audio_device *adev,
-                                             struct str_parms *parms) 
+                                            struct str_parms *parms)
 {
     int ret = -ENOSYS;
-    if(voice_extn_compress_voip_enabled)
+    if (voice_extn_compress_voip_enabled)
         ret = compress_voip_set_parameters(adev, parms);
     return ret;
 }
@@ -718,7 +770,7 @@
 void voice_extn_compress_voip_get_parameters(struct str_parms *query,
                                              struct str_parms *reply)
 {
-    if(voice_extn_compress_voip_enabled)
+    if (voice_extn_compress_voip_enabled)
         compress_voip_get_parameters(query, reply);
 }
 
@@ -727,7 +779,7 @@
                                                  struct str_parms *query,
                                                  struct str_parms *reply)
 {
-    if(voice_extn_compress_voip_enabled)
+    if (voice_extn_compress_voip_enabled)
         compress_voip_out_get_parameters(out, query, reply);
 }
 
@@ -735,14 +787,14 @@
                                                 struct str_parms *query,
                                                 struct str_parms *reply)
 {
-    if(voice_extn_compress_voip_enabled)
+    if (voice_extn_compress_voip_enabled)
         compress_voip_in_get_parameters(in, query, reply);
 }
 
 int voice_extn_compress_voip_out_get_buffer_size(struct stream_out *out)
 {
     int ret = -1;
-    if(voice_extn_compress_voip_enabled)
+    if (voice_extn_compress_voip_enabled)
         ret = compress_voip_out_get_buffer_size(out);
     return ret;
 }
@@ -750,7 +802,7 @@
 int voice_extn_compress_voip_in_get_buffer_size(struct stream_in *in)
 {
     int ret = -1;
-    if(voice_extn_compress_voip_enabled)
+    if (voice_extn_compress_voip_enabled)
         ret = compress_voip_in_get_buffer_size(in);
     return ret;
 }
@@ -759,7 +811,7 @@
 int voice_extn_compress_voip_start_output_stream(struct stream_out *out)
 {
     int ret = -1;
-    if(voice_extn_compress_voip_enabled)
+    if (voice_extn_compress_voip_enabled)
         ret = compress_voip_start_output_stream(out);
     return ret;
 }
@@ -768,7 +820,7 @@
 int voice_extn_compress_voip_start_input_stream(struct stream_in *in)
 {
     int ret = -1;
-    if(voice_extn_compress_voip_enabled)
+    if (voice_extn_compress_voip_enabled)
         ret = compress_voip_start_input_stream(in);
     return ret;
 }
@@ -776,7 +828,7 @@
 int voice_extn_compress_voip_close_output_stream(struct audio_stream *stream)
 {
     int ret = -1;
-    if(voice_extn_compress_voip_enabled)
+    if (voice_extn_compress_voip_enabled)
         ret = compress_voip_close_output_stream(stream);
     return ret;
 }
@@ -785,7 +837,7 @@
 int voice_extn_compress_voip_close_input_stream(struct audio_stream *stream)
 {
     int ret = -1;
-    if(voice_extn_compress_voip_enabled)
+    if (voice_extn_compress_voip_enabled)
         ret = compress_voip_close_input_stream(stream);
     return ret;
 }
@@ -793,7 +845,7 @@
 int voice_extn_compress_voip_open_output_stream(struct stream_out *out)
 {
     int ret = -1;
-    if(voice_extn_compress_voip_enabled)
+    if (voice_extn_compress_voip_enabled)
         ret = compress_voip_open_output_stream(out);
     return ret;
 }
@@ -802,7 +854,7 @@
 int voice_extn_compress_voip_open_input_stream(struct stream_in *in)
 {
     int ret = -1;
-    if(voice_extn_compress_voip_enabled)
+    if (voice_extn_compress_voip_enabled)
         ret = compress_voip_open_input_stream(in);
     return ret;
 }
@@ -810,7 +862,7 @@
 int voice_extn_compress_voip_set_volume(struct audio_device *adev, float volume)
 {
     int ret = -1;
-    if(voice_extn_compress_voip_enabled)
+    if (voice_extn_compress_voip_enabled)
         ret = compress_voip_set_volume(adev, volume);
     return ret;
 }
@@ -818,7 +870,7 @@
 int voice_extn_compress_voip_set_mic_mute(struct audio_device *adev, bool state)
 {
     int ret = -1;
-    if(voice_extn_compress_voip_enabled)
+    if (voice_extn_compress_voip_enabled)
         ret = compress_voip_set_mic_mute(adev, state);
     return ret;
 }
@@ -826,7 +878,7 @@
 bool voice_extn_compress_voip_pcm_prop_check()
 {
     bool ret = false;
-    if(voice_extn_compress_voip_enabled)
+    if (voice_extn_compress_voip_enabled)
         ret = compress_voip_pcm_prop_check();
     return ret;
 }
@@ -834,7 +886,7 @@
 bool voice_extn_compress_voip_is_active(const struct audio_device *adev)
 {
     bool ret = false;
-    if(voice_extn_compress_voip_enabled)
+    if (voice_extn_compress_voip_enabled)
         ret = compress_voip_is_active(adev);
     return ret;
 }
@@ -842,7 +894,7 @@
 bool voice_extn_compress_voip_is_format_supported(audio_format_t format)
 {
     bool ret = false;
-    if(voice_extn_compress_voip_enabled)
+    if (voice_extn_compress_voip_enabled)
         ret = compress_voip_is_format_supported(format);
     return ret;
 }
@@ -850,7 +902,7 @@
 bool voice_extn_compress_voip_is_config_supported(struct audio_config *config)
 {
     bool ret = false;
-    if(voice_extn_compress_voip_enabled)
+    if (voice_extn_compress_voip_enabled)
         ret = compress_voip_is_config_supported(config);
     return ret;
 }
@@ -858,7 +910,7 @@
 bool voice_extn_compress_voip_is_started(struct audio_device *adev)
 {
     bool ret = false;
-    if(voice_extn_compress_voip_enabled)
+    if (voice_extn_compress_voip_enabled)
         ret = compress_voip_is_started(adev);
     return ret;
 }
diff --git a/hal/voice_extn/voice_extn.h b/hal/voice_extn/voice_extn.h
index c4f0d49..b2aab7e 100644
--- a/hal/voice_extn/voice_extn.h
+++ b/hal/voice_extn/voice_extn.h
@@ -78,10 +78,14 @@
 bool voice_extn_compress_voip_is_config_supported(struct audio_config *config);
 bool voice_extn_compress_voip_is_started(struct audio_device *adev);
 void voice_extn_feature_init();
-void compr_voip_feature_init(bool is_feature_enabled);
-bool voice_extn_is_compress_voip_supported();
 void dynamic_ecns_feature_init(bool is_feature_enabled);
 bool voice_extn_is_dynamic_ecns_enabled();
+void incall_music_feature_init(bool is_feature_enabled);
+bool voice_extn_is_incall_music_enabled();
+void compr_voip_feature_init(bool is_feature_enabled);
+bool voice_extn_is_compress_voip_supported();
+void multi_voice_session_feature_init(bool is_feature_enabled);
+bool voice_extn_is_multi_session_supported();
 
 
 #endif //VOICE_EXTN_H
diff --git a/post_proc/volume_listener.c b/post_proc/volume_listener.c
index 36aa496..44d1702 100644
--- a/post_proc/volume_listener.c
+++ b/post_proc/volume_listener.c
@@ -714,13 +714,9 @@
     property_get("vendor.audio.volume.listener.dump", check_dump_val, "0");
     if (atoi(check_dump_val))
         dumping_enabled = true;
-    else {
-        property_get("audio.volume.listener.dump", check_dump_val, "0");
-        if (atoi(check_dump_val))
-            dumping_enabled = true;
-    }
+
     headset_cal_enabled = property_get_bool(
-                            "audio.volume.headset.gain.depcal", false);
+                            "vendor.audio.volume.headset.gain.depcal", false);
 
     init_status = 0;
     list_init(&vol_effect_list);