hal: Fix audio leak issue on speaker during A2DP and SCO concurrency.

-To ensure that A2DP stream is suspended before SCO starts, force
route to speaker is done, update the logic to ensure that force
routing to speaker only happens when there is no A2DP device active.
-Ensure that a2dp_start retry happens on routing request if the earlier
start failed.

Change-Id: I29ea0d8857fc4b9d837f9954423861be9b43b9a6
diff --git a/hal/msm8916/platform.c b/hal/msm8916/platform.c
index 4dd5383..90fffb4 100644
--- a/hal/msm8916/platform.c
+++ b/hal/msm8916/platform.c
@@ -1368,6 +1368,7 @@
     hw_interface_table[SND_DEVICE_OUT_USB_HEADPHONES] = strdup("USB_AUDIO_RX");
     hw_interface_table[SND_DEVICE_OUT_SPEAKER_AND_USB_HEADSET] = strdup("SLIMBUS_0_RX-and-USB_AUDIO_RX");
     hw_interface_table[SND_DEVICE_OUT_VOICE_TX] = strdup("AFE_PCM_RX");
+    hw_interface_table[SND_DEVICE_OUT_AFE_PROXY] = strdup("PROXY_PORT_RX");
 
     my_data->max_mic_count = PLATFORM_DEFAULT_MIC_COUNT;
     /*remove ALAC & APE from DSP decoder list based on software decoder availability*/
@@ -4789,6 +4790,14 @@
     int na_mode = platform_get_native_support();
     bool channels_updated = false;
 
+    /*BT devices backend is not configured from HAL hence skip*/
+    if (snd_device == SND_DEVICE_OUT_BT_A2DP ||
+        snd_device == SND_DEVICE_OUT_BT_SCO ||
+        snd_device == SND_DEVICE_OUT_BT_SCO_WB) {
+        backend_change = false;
+        return backend_change;
+    }
+
     backend_idx = platform_get_backend_index(snd_device);
 
     bit_width = backend_cfg->bit_width;