hal: Fix device selection at start of the voice call

Voice call setup latency value is exceeding 500 msec. It is due to
primary output selecting handset instead of voice handset causing
the extra delay. Fix this by starting voice usecase first before
changing device for primary output.

Change-Id: I39ac8186b62d86b2047bf73860e7027d15df7fd2
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index a8ebb6b..8660b5a 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -2306,14 +2306,6 @@
         if (val != 0) {
             out->devices = val;
 
-            if (!out->standby) {
-                audio_extn_perf_lock_acquire(&adev->perf_lock_handle, 0,
-                                             adev->perf_lock_opts,
-                                             adev->perf_lock_opts_size);
-                select_devices(adev, out->usecase);
-                audio_extn_perf_lock_release(&adev->perf_lock_handle);
-            }
-
             if (output_drives_call(adev, out)) {
                 if(!voice_is_in_call(adev)) {
                     if (adev->mode == AUDIO_MODE_IN_CALL) {
@@ -2325,6 +2317,14 @@
                     voice_update_devices_for_all_voice_usecases(adev);
                 }
             }
+
+            if (!out->standby) {
+                audio_extn_perf_lock_acquire(&adev->perf_lock_handle, 0,
+                                             adev->perf_lock_opts,
+                                             adev->perf_lock_opts_size);
+                select_devices(adev, out->usecase);
+                audio_extn_perf_lock_release(&adev->perf_lock_handle);
+            }
         }
 
         pthread_mutex_unlock(&adev->lock);