diff --git a/hal/Android.mk b/hal/Android.mk
index 3dd408a..ac6ea74 100644
--- a/hal/Android.mk
+++ b/hal/Android.mk
@@ -132,6 +132,10 @@
     LOCAL_CFLAGS += -DEXTERNAL_BT_SUPPORTED
 endif
 
+ifeq ($(strip $(AUDIO_FEATURE_FLICKER_SENSOR_INPUT)),true)
+    LOCAL_CFLAGS += -DFLICKER_SENSOR_INPUT
+endif
+
 ifeq ($(strip $(AUDIO_FEATURE_NO_AUDIO_OUT)),true)
     LOCAL_CFLAGS += -DNO_AUDIO_OUT
 endif
diff --git a/hal/audio_extn/a2dp.c b/hal/audio_extn/a2dp.c
index 6f278c2..3eebab7 100644
--- a/hal/audio_extn/a2dp.c
+++ b/hal/audio_extn/a2dp.c
@@ -76,7 +76,8 @@
 #define ENC_FMT_SBC                "sbc"
 
 // System properties used for A2DP Offload
-#define SYSPROP_A2DP_OFFLOAD_ENABLED   "persist.vendor.bluetooth.a2dp_offload.enable"
+#define SYSPROP_A2DP_OFFLOAD_SUPPORTED "ro.bluetooth.a2dp_offload.supported"
+#define SYSPROP_A2DP_OFFLOAD_DISABLED  "persist.bluetooth.a2dp_offload.disabled"
 #define SYSPROP_A2DP_CODEC_LATENCIES   "vendor.audio.a2dp.codec.latency"
 
 // Default encoder bit width
@@ -226,8 +227,8 @@
     bool a2dp_suspended;
     /* Number of active sessions on A2DP output */
     int  a2dp_total_active_session_request;
-    /* Flag to denote whether A2DP offload is supported */
-    bool is_a2dp_offload_supported;
+    /* Flag to denote whether A2DP offload is enabled */
+    bool is_a2dp_offload_enabled;
     /* Flag to denote whether codec reconfiguration/soft handoff is in progress */
     bool is_handoff_in_progress;
     /* Flag to denote whether APTX Dual Mono encoder is supported */
@@ -522,10 +523,12 @@
 
 static void update_offload_codec_support()
 {
-    a2dp.is_a2dp_offload_supported =
-            property_get_bool(SYSPROP_A2DP_OFFLOAD_ENABLED, false);
-    ALOGD("%s: A2DP offload supported = %d",
-                   __func__, a2dp.is_a2dp_offload_supported);
+    a2dp.is_a2dp_offload_enabled =
+            property_get_bool(SYSPROP_A2DP_OFFLOAD_SUPPORTED, false) &&
+            !property_get_bool(SYSPROP_A2DP_OFFLOAD_DISABLED, false);
+
+    ALOGD("%s: A2DP offload enabled = %d", __func__,
+          a2dp.is_a2dp_offload_enabled);
 }
 
 static int stop_abr()
@@ -1461,7 +1464,7 @@
      struct audio_usecase *uc_info;
      struct listnode *node;
 
-     if (a2dp.is_a2dp_offload_supported == false) {
+     if (a2dp.is_a2dp_offload_enabled == false) {
         ALOGV("%s: No supported encoders identified,ignoring A2DP setparam", __func__);
         return;
      }
@@ -1579,7 +1582,7 @@
         goto exit;
 
     if ((a2dp.bt_state != A2DP_STATE_DISCONNECTED) &&
-        (a2dp.is_a2dp_offload_supported) &&
+        (a2dp.is_a2dp_offload_enabled) &&
         (a2dp.audio_check_a2dp_ready))
            ret = a2dp.audio_check_a2dp_ready();
 
@@ -1598,7 +1601,7 @@
   a2dp.bt_lib_handle = NULL;
   a2dp_common_init();
   a2dp.enc_sampling_rate = 48000;
-  a2dp.is_a2dp_offload_supported = false;
+  a2dp.is_a2dp_offload_enabled = false;
   a2dp.is_handoff_in_progress = false;
   a2dp.is_aptx_dual_mono_supported = false;
   reset_a2dp_enc_config_params();
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 66c72fb..8f1cba9 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -1312,6 +1312,44 @@
     return 0;
 }
 
+static void configure_flicker_sensor_input(struct mixer *mixer)
+{
+    struct mixer_ctl *ctl;
+    const char* ctl1 = "AIF3_CAP Mixer SLIM TX2";
+    int setting1 = 1;
+    const char* ctl2 = "CDC_IF TX2 MUX";
+    const char* setting2 = "DEC2";
+    const char* ctl3 = "SLIM_1_TX Channels";
+    const char* setting3 = "One";
+    const char* ctl4 = "ADC MUX2";
+    const char* setting4 = "AMIC";
+    const char* ctl5 = "AMIC MUX2";
+    const char* setting5 = "ADC1";
+    const char* ctl6 = "DEC2 Volume";
+    int setting6 = 84;
+    const char* ctl7 = "MultiMedia2 Mixer SLIM_1_TX";
+    int setting7 = 1;
+    const char* ctl8 = "SLIM_1_TX SampleRate";
+    const char* setting8 = "KHZ_8";
+
+    ctl = mixer_get_ctl_by_name(mixer, ctl1);
+    mixer_ctl_set_value(ctl, 0, setting1);
+    ctl = mixer_get_ctl_by_name(mixer, ctl2);
+    mixer_ctl_set_enum_by_string(ctl, setting2);
+    ctl = mixer_get_ctl_by_name(mixer, ctl3);
+    mixer_ctl_set_enum_by_string(ctl, setting3);
+    ctl = mixer_get_ctl_by_name(mixer, ctl4);
+    mixer_ctl_set_enum_by_string(ctl, setting4);
+    ctl = mixer_get_ctl_by_name(mixer, ctl5);
+    mixer_ctl_set_enum_by_string(ctl, setting5);
+    ctl = mixer_get_ctl_by_name(mixer, ctl6);
+    mixer_ctl_set_value(ctl, 0, setting6);
+    ctl = mixer_get_ctl_by_name(mixer, ctl7);
+    mixer_ctl_set_value(ctl, 0, setting7);
+    ctl = mixer_get_ctl_by_name(mixer, ctl8);
+    mixer_ctl_set_enum_by_string(ctl, setting8);
+}
+
 void *platform_init(struct audio_device *adev)
 {
     char value[PROPERTY_VALUE_MAX];
@@ -1523,6 +1561,10 @@
             ALOGV("%s: Could not find the symbol acdb_loader_send_gain_dep_cal from %s",
                   __func__, LIB_ACDB_LOADER);
 
+#if defined (FLICKER_SENSOR_INPUT)
+        configure_flicker_sensor_input(adev->mixer);
+#endif
+
 #if defined (PLATFORM_MSM8994) || (PLATFORM_MSM8996) || (PLATFORM_MSM8998) || (PLATFORM_SDM845)
         acdb_init_v2_cvd_t acdb_init_local;
         acdb_init_local = (acdb_init_v2_cvd_t)dlsym(my_data->acdb_handle,
