Snap for 4773106 from acbca59e60e1b97c95a04b3abb468b23adaf82a0 to pi-release

Change-Id: I32d900bca0d14cf37b5d42753f430735e36d1bb6
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index fc9d322..fbb166d 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -3311,17 +3311,17 @@
 
     if (kv_pairs == NULL) {
         ret = -EINVAL;
-        ALOGE("%s: key-value pair is NULL",__func__);
+        ALOGE("%s: key-value pair is NULL", __func__);
         goto done;
     }
 
     ALOGV("%s: enter: %s", __func__, kv_pairs);
 
     len = strlen(kv_pairs);
-    value = (char*)calloc(len+1, sizeof(char));
+    value = (char*)calloc(len + 1, sizeof(char));
     if (value == NULL) {
         ret = -ENOMEM;
-        ALOGE("[%s] failed to allocate memory",__func__);
+        ALOGE("[%s] failed to allocate memory", __func__);
         goto done;
     }
 
@@ -3350,7 +3350,7 @@
         ALOGV("%s: add operator[%s] mccmnc[%s]", __func__, info->name, info->mccmnc);
     }
 
-    memset(value, 0, sizeof(value));
+    memset(value, 0, len + 1);
     err = str_parms_get_str(parms, PLATFORM_CONFIG_KEY_MAX_MIC_COUNT,
                             value, len);
     if (err >= 0) {
diff --git a/hal/platform_info.c b/hal/platform_info.c
index 41483f4..58631f2 100644
--- a/hal/platform_info.c
+++ b/hal/platform_info.c
@@ -125,6 +125,17 @@
     AUDIO_MAKE_STRING_FROM_ENUM(AUDIO_DEVICE_IN_DEFAULT),
 };
 
+enum {
+    AUDIO_MICROPHONE_CHARACTERISTIC_NONE = 0u, // 0x0
+    AUDIO_MICROPHONE_CHARACTERISTIC_SENSITIVITY = 1u, // 0x1
+    AUDIO_MICROPHONE_CHARACTERISTIC_MAX_SPL = 2u, // 0x2
+    AUDIO_MICROPHONE_CHARACTERISTIC_MIN_SPL = 4u, // 0x4
+    AUDIO_MICROPHONE_CHARACTERISTIC_ORIENTATION = 8u, // 0x8
+    AUDIO_MICROPHONE_CHARACTERISTIC_GEOMETRIC_LOCATION = 16u, // 0x10
+    AUDIO_MICROPHONE_CHARACTERISTIC_ALL = 31u, /* ((((SENSITIVITY | MAX_SPL) | MIN_SPL)
+                                                  | ORIENTATION) | GEOMETRIC_LOCATION) */
+};
+
 static bool find_enum_by_string(const struct audio_string_to_enum * table, const char * name,
                                 int32_t len, unsigned int *value)
 {
@@ -433,7 +444,7 @@
         ALOGE("%s: valid_mask not found", __func__);
         goto done;
     }
-    microphone.valid_mask = atoi(attr[curIdx++]);
+    uint32_t valid_mask = atoi(attr[curIdx++]);
 
     if (strcmp(attr[curIdx++], "device_id")) {
         ALOGE("%s: device_id not found", __func__);
@@ -556,7 +567,7 @@
         }
     }
 
-    if (microphone.valid_mask & AUDIO_MICROPHONE_CHARACTERISTIC_SENSITIVITY) {
+    if (valid_mask & AUDIO_MICROPHONE_CHARACTERISTIC_SENSITIVITY) {
         if (strcmp(attr[curIdx++], "sensitivity")) {
             ALOGE("%s: sensitivity not found", __func__);
             goto done;
@@ -566,7 +577,7 @@
         microphone.sensitivity = AUDIO_MICROPHONE_SENSITIVITY_UNKNOWN;
     }
 
-    if (microphone.valid_mask & AUDIO_MICROPHONE_CHARACTERISTIC_MAX_SPL) {
+    if (valid_mask & AUDIO_MICROPHONE_CHARACTERISTIC_MAX_SPL) {
         if (strcmp(attr[curIdx++], "max_spl")) {
             ALOGE("%s: max_spl not found", __func__);
             goto done;
@@ -576,7 +587,7 @@
         microphone.max_spl = AUDIO_MICROPHONE_SPL_UNKNOWN;
     }
 
-    if (microphone.valid_mask & AUDIO_MICROPHONE_CHARACTERISTIC_MIN_SPL) {
+    if (valid_mask & AUDIO_MICROPHONE_CHARACTERISTIC_MIN_SPL) {
         if (strcmp(attr[curIdx++], "min_spl")) {
             ALOGE("%s: min_spl not found", __func__);
             goto done;
@@ -586,7 +597,7 @@
         microphone.min_spl = AUDIO_MICROPHONE_SPL_UNKNOWN;
     }
 
-    if (microphone.valid_mask & AUDIO_MICROPHONE_CHARACTERISTIC_ORIENTATION) {
+    if (valid_mask & AUDIO_MICROPHONE_CHARACTERISTIC_ORIENTATION) {
         if (strcmp(attr[curIdx++], "orientation")) {
             ALOGE("%s: orientation not found", __func__);
             goto done;
@@ -615,7 +626,7 @@
         microphone.orientation.z = 0.0f;
     }
 
-    if (microphone.valid_mask & AUDIO_MICROPHONE_CHARACTERISTIC_GEOMETRIC_LOCATION) {
+    if (valid_mask & AUDIO_MICROPHONE_CHARACTERISTIC_GEOMETRIC_LOCATION) {
         if (strcmp(attr[curIdx++], "geometric_location")) {
             ALOGE("%s: geometric_location not found", __func__);
             goto done;