Merge "sthal: Dynamic access of sound trigger mixer paths."
diff --git a/sound_trigger_platform.c b/sound_trigger_platform.c
index fce06e8..d09ae91 100644
--- a/sound_trigger_platform.c
+++ b/sound_trigger_platform.c
@@ -3029,43 +3029,52 @@
         strlcpy(mixer_path_xml, MIXER_PATH_FILE_NAME,
                          sizeof(MIXER_PATH_FILE_NAME));
     }
-    /* check if qrd/cdp specific mixer path file exists */
-    if (strstr(snd_card_name, "qrd")) {
-        char *tmp = NULL;
-        char *snd_internal_name = NULL;
-        char temp_path[MIXER_PATH_MAX_LENGTH];
+    /* create mixer path file name from sound card name
+    and attach cdp/qrd if sound card name has cdp/qrd */
+    char *tmp = NULL;
+    char *snd_internal_name = NULL;
+    char temp_path[MIXER_PATH_MAX_LENGTH];
 
-        strlcpy(temp_path, mixer_path_xml, MIXER_PATH_MAX_LENGTH);
+    strlcpy(temp_path, mixer_path_xml, MIXER_PATH_MAX_LENGTH);
 
-        char *snd_card_name_t = strdup(snd_card_name);
-        if (snd_card_name_t != NULL) {
-            snd_internal_name = strtok_r(snd_card_name_t, "-", &tmp);
-            while (snd_internal_name != NULL) {
-                snd_internal_name = strtok_r(NULL, "-", &tmp);
-                if ((snd_internal_name != NULL) &&
-                    strstr(snd_internal_name, "qrd"))
-                    break;
-            }
-            if (snd_internal_name != NULL) {
-                strlcat(temp_path, "_", MIXER_PATH_MAX_LENGTH);
-                strlcat(temp_path, snd_internal_name, MIXER_PATH_MAX_LENGTH);
-                strlcat(temp_path, MIXER_FILE_EXT, MIXER_PATH_MAX_LENGTH);
-                if (access(temp_path, R_OK) == 0) {
-                    strlcat(mixer_path_xml, "_", MIXER_PATH_MAX_LENGTH);
-                    strlcat(mixer_path_xml, snd_internal_name, MIXER_PATH_MAX_LENGTH);
-                }
-            }
-            free(snd_card_name_t);
+    char *snd_card_name_t = strdup(snd_card_name);
+    if (snd_card_name_t != NULL) {
+        snd_internal_name = strtok_r(snd_card_name_t, "-", &tmp);
+        while (snd_internal_name != NULL) {
+           snd_internal_name = strtok_r(NULL, "-", &tmp);
+           if (snd_internal_name != NULL) {
+               strlcat(temp_path, "_", MIXER_PATH_MAX_LENGTH);
+               strlcat(temp_path, snd_internal_name, MIXER_PATH_MAX_LENGTH);
+               strlcat(temp_path, MIXER_FILE_EXT, MIXER_PATH_MAX_LENGTH);
+               if (access(temp_path, R_OK) == 0) {
+                   strlcat(mixer_path_xml, "_", MIXER_PATH_MAX_LENGTH);
+                   strlcat(mixer_path_xml, snd_internal_name, MIXER_PATH_MAX_LENGTH);
+                   break;
+               }
+               strlcpy(temp_path, mixer_path_xml, MIXER_PATH_MAX_LENGTH);
+           }
         }
-    } else if (strstr(snd_card_name, "cdp")) {
-        char temp_path[MIXER_PATH_MAX_LENGTH];
-
         strlcpy(temp_path, mixer_path_xml, MIXER_PATH_MAX_LENGTH);
-        strlcat(temp_path, "_cdp", MIXER_PATH_MAX_LENGTH);
-        strlcat(temp_path, MIXER_FILE_EXT, MIXER_PATH_MAX_LENGTH);
-        if (access(temp_path, R_OK) == 0)
-            strlcat(mixer_path_xml, "_cdp", MIXER_PATH_MAX_LENGTH);
+        if (strstr(snd_card_name, "qrd")) {
+            strlcat(temp_path, "_qrd", MIXER_PATH_MAX_LENGTH);
+            strlcat(temp_path, MIXER_FILE_EXT, MIXER_PATH_MAX_LENGTH);
+            if (access(temp_path, R_OK) == 0)
+                strlcat(mixer_path_xml, "_qrd", MIXER_PATH_MAX_LENGTH);
+        }
+        else if (strstr(snd_card_name, "cdp")) {
+            strlcat(temp_path, "_cdp", MIXER_PATH_MAX_LENGTH);
+            strlcat(temp_path, MIXER_FILE_EXT, MIXER_PATH_MAX_LENGTH);
+            if (access(temp_path, R_OK) == 0)
+                strlcat(mixer_path_xml, "_cdp", MIXER_PATH_MAX_LENGTH);
+        }
+        free(snd_card_name_t);
     }
+    if (!strncmp(snd_card_name, "sm6150-wcd9375qrd-snd-card",
+        sizeof("sm6150-wcd9375qrd-snd-card"))) {
+        strlcpy(mixer_path_xml, MIXER_PATH_FILE_NAME,
+                        sizeof(MIXER_PATH_FILE_NAME));
+    }
+
     strlcat(mixer_path_xml, MIXER_FILE_EXT, MIXER_PATH_MAX_LENGTH);
 
     /* Default sw_mad value will be overwritten if it