Merge "hal: Add provision to select hpx backend based on the codec type"
diff --git a/hal/msm8916/platform.c b/hal/msm8916/platform.c
index e5de13f..8acfa43 100644
--- a/hal/msm8916/platform.c
+++ b/hal/msm8916/platform.c
@@ -1207,6 +1207,8 @@
     const char *snd_card_name;
     char mixer_xml_path[100],ffspEnable[PROPERTY_VALUE_MAX];
     char *cvd_version = NULL;
+    const char *mixer_ctl_name = "Set HPX ActiveBe";
+    struct mixer_ctl *ctl = NULL;
 
     my_data = calloc(1, sizeof(struct platform_data));
     if (!my_data) {
@@ -1414,6 +1416,13 @@
         closedir(dir);
     }
 
+    /* Configure active back end for HPX*/
+    ctl = mixer_get_ctl_by_name(adev->mixer, mixer_ctl_name);
+    if (ctl) {
+        ALOGE(" sending HPX Active BE information ");
+        mixer_ctl_set_value(ctl, 0, is_external_codec);
+    }
+
 acdb_init_fail:
 
     set_platform_defaults();
diff --git a/hal/msm8960/platform.c b/hal/msm8960/platform.c
index f9b7851..e5ecda1 100644
--- a/hal/msm8960/platform.c
+++ b/hal/msm8960/platform.c
@@ -230,6 +230,8 @@
     char value[PROPERTY_VALUE_MAX];
     struct platform_data *my_data;
     const char *snd_card_name;
+    const char *mixer_ctl_name = "Set HPX ActiveBe";
+    struct mixer_ctl *ctl = NULL;
 
     adev->mixer = mixer_open(MIXER_CARD);
 
@@ -340,6 +342,13 @@
         }
     }
 
+    /* Configure active back end for HPX*/
+    ctl = mixer_get_ctl_by_name(adev->mixer, mixer_ctl_name);
+    if (ctl) {
+        ALOGI(" sending HPX Active BE information ");
+        mixer_ctl_set_value(ctl, 0, false);
+    }
+
     return my_data;
 }
 
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index b4c4c44..9c1115c 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -1028,6 +1028,8 @@
     char *snd_internal_name = NULL;
     char *tmp = NULL;
     char mixer_xml_file[MIXER_PATH_MAX_LENGTH]= {0};
+    const char *mixer_ctl_name = "Set HPX ActiveBe";
+    struct mixer_ctl *ctl = NULL;
 
     my_data = calloc(1, sizeof(struct platform_data));
 
@@ -1250,6 +1252,13 @@
             free(cvd_version);
     }
 
+    /* Configure active back end for HPX*/
+    ctl = mixer_get_ctl_by_name(adev->mixer, mixer_ctl_name);
+    if (ctl) {
+        ALOGI(" sending HPX Active BE information ");
+        mixer_ctl_set_value(ctl, 0, true);
+    }
+
 acdb_init_fail:
 
     set_platform_defaults();