diff --git a/hal/audio_extn/utils.c b/hal/audio_extn/utils.c
index cac1369..607b6ff 100644
--- a/hal/audio_extn/utils.c
+++ b/hal/audio_extn/utils.c
@@ -2069,8 +2069,8 @@
 #endif
 
 #define MAX_SND_CARD 8
-#define RETRY_US 500000
-#define RETRY_NUMBER 10
+#define RETRY_US 1000000
+#define RETRY_NUMBER 40
 
 int audio_extn_utils_get_snd_card_num()
 {
@@ -2078,24 +2078,31 @@
     void *hw_info = NULL;
     struct mixer *mixer = NULL;
     int retry_num = 0;
-    int snd_card_num = 0;
+    int snd_card_num = 0, min_snd_card_num = 0;
     char* snd_card_name = NULL;
 
-    while (snd_card_num < MAX_SND_CARD) {
-        mixer = mixer_open(snd_card_num);
+    /*
+    * Try with all the sound cards ( 0 to 8 ) and if none of them were detected
+    * sleep for 1 sec and try detections with sound card 0 again.
+    * If sound card gets detected, check if it is relevant, if not check with the
+    * other sound cards. To ensure that the irrelevant sound card is not check again,
+    * we maintain it in min_snd_card_num.
+    */
+    while (retry_num < RETRY_NUMBER) {
 
-        while (!mixer && retry_num < RETRY_NUMBER) {
-            usleep(RETRY_US);
-            mixer = mixer_open(snd_card_num);
-            retry_num++;
+        while (snd_card_num <= MAX_SND_CARD) {
+           mixer = mixer_open(snd_card_num);
+           if (!mixer)
+              snd_card_num++;
+           else
+              break;
         }
 
         if (!mixer) {
-            ALOGE("%s: Unable to open the mixer card: %d", __func__,
-                   snd_card_num);
-            retry_num = 0;
-            snd_card_num++;
-            continue;
+           usleep(RETRY_US);
+           snd_card_num = min_snd_card_num;
+           retry_num++;
+           continue;
         }
 
         snd_card_name = strdup(mixer_get_name(mixer));
@@ -2112,8 +2119,11 @@
             break;
         }
         ALOGE("%s: Failed to init hardware info", __func__);
-        retry_num = 0;
-        snd_card_num++;
+        min_snd_card_num++;
+        snd_card_num = min_snd_card_num;
+
+        if (snd_card_num >= MAX_SND_CARD)
+            break;
 
         free(snd_card_name);
         snd_card_name = NULL;
@@ -2123,12 +2133,14 @@
     }
     if (snd_card_name)
         free(snd_card_name);
+
     if (mixer)
         mixer_close(mixer);
+
     if (hw_info)
         hw_info_deinit(hw_info);
 
-    if (snd_card_num >= MAX_SND_CARD) {
+    if ((snd_card_num >= MAX_SND_CARD) || (retry_num >= RETRY_NUMBER)) {
         ALOGE("%s: Unable to find correct sound card, aborting.", __func__);
         return -1;
     }
