merge in jb-mr2-release history after reset to jb-mr2-dev
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index b0afb0c..1c1adb2 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -530,10 +530,10 @@
         } else if (out_device & AUDIO_DEVICE_OUT_ALL_SCO) {
             snd_device = SND_DEVICE_IN_BT_SCO_MIC ;
         } else if (out_device & AUDIO_DEVICE_OUT_SPEAKER) {
-            if (adev->fluence_in_voice_call &&
+            if (adev->fluence_in_voice_call && adev->fluence_in_spkr_mode &&
                     adev->dualmic_config == DUALMIC_CONFIG_ENDFIRE) {
                 snd_device = SND_DEVICE_IN_VOICE_SPEAKER_DMIC_EF;
-            } else if (adev->fluence_in_voice_call &&
+            } else if (adev->fluence_in_voice_call && adev->fluence_in_spkr_mode &&
                        adev->dualmic_config == DUALMIC_CONFIG_BROADSIDE) {
                 snd_device = SND_DEVICE_IN_VOICE_SPEAKER_DMIC_BS;
             } else {
@@ -1959,6 +1959,7 @@
     char value[PROPERTY_VALUE_MAX];
 
     adev->dualmic_config = DUALMIC_CONFIG_NONE;
+    adev->fluence_in_spkr_mode = false;
     adev->fluence_in_voice_call = false;
     adev->fluence_in_voice_rec = false;
     adev->mic_type_analog = false;
@@ -1986,6 +1987,11 @@
         if (!strncmp("true", value, 4)) {
             adev->fluence_in_voice_rec = true;
         }
+
+        property_get("persist.audio.fluence.speaker",value,"");
+        if (!strncmp("true", value, 4)) {
+            adev->fluence_in_spkr_mode = true;
+        }
     }
 
     adev->acdb_handle = dlopen(LIB_ACDB_LOADER, RTLD_NOW);
diff --git a/hal/audio_hw.h b/hal/audio_hw.h
index 0c4f526..9a47389 100644
--- a/hal/audio_hw.h
+++ b/hal/audio_hw.h
@@ -226,6 +226,7 @@
     int acdb_settings;
 
     bool mic_type_analog;
+    bool fluence_in_spkr_mode;
     bool fluence_in_voice_call;
     bool fluence_in_voice_rec;
     int  dualmic_config;