audio: add support for bluetooth wideband voice calls

Change-Id: I02bf23a83c52389cc02ba1f61572eb651418fe24
diff --git a/audio/audio_hw.c b/audio/audio_hw.c
index 076a469..2f8ce97 100644
--- a/audio/audio_hw.c
+++ b/audio/audio_hw.c
@@ -312,6 +312,7 @@
     [SND_DEVICE_OUT_HDMI] = "hdmi",
     [SND_DEVICE_OUT_SPEAKER_AND_HDMI] = "speaker-and-hdmi",
     [SND_DEVICE_OUT_BT_SCO] = "bt-sco-headset",
+    [SND_DEVICE_OUT_BT_SCO_WB] = "bt-sco-headset-wb",
 
     /* Capture sound devices */
     [SND_DEVICE_IN_EARPIECE_MIC] = "earpiece-mic",
@@ -329,6 +330,7 @@
     [SND_DEVICE_IN_VOICE_HEADSET_MIC_WB] = "voice-headset-mic-wb",
     [SND_DEVICE_IN_HDMI_MIC] = "hdmi-mic",
     [SND_DEVICE_IN_BT_SCO_MIC] = "bt-sco-mic",
+    [SND_DEVICE_IN_BT_SCO_MIC_WB] = "bt-sco-mic-wb",
     [SND_DEVICE_IN_CAMCORDER_MIC] = "camcorder-mic",
     [SND_DEVICE_IN_VOICE_REC_HEADSET_MIC] = "voice-rec-headset-mic",
     [SND_DEVICE_IN_VOICE_REC_MIC] = "voice-rec-mic",
@@ -531,6 +533,8 @@
         if (devices & AUDIO_DEVICE_OUT_WIRED_HEADPHONE ||
             devices & AUDIO_DEVICE_OUT_WIRED_HEADSET) {
             snd_device = SND_DEVICE_OUT_VOICE_HEADPHONES;
+        } else if (devices & AUDIO_DEVICE_OUT_ALL_SCO) {
+            snd_device = SND_DEVICE_OUT_BT_SCO;
         } else if (devices & AUDIO_DEVICE_OUT_SPEAKER) {
             snd_device = SND_DEVICE_OUT_VOICE_SPEAKER;
         } else if (devices & AUDIO_DEVICE_OUT_EARPIECE) {
@@ -541,6 +545,8 @@
             if (devices & AUDIO_DEVICE_OUT_WIRED_HEADPHONE ||
                 devices & AUDIO_DEVICE_OUT_WIRED_HEADSET) {
                 snd_device = SND_DEVICE_OUT_VOICE_HEADPHONES_WB;
+            } else if (devices & AUDIO_DEVICE_OUT_ALL_SCO) {
+                snd_device = SND_DEVICE_OUT_BT_SCO_WB;
             } else if (devices & AUDIO_DEVICE_OUT_SPEAKER) {
                 snd_device = SND_DEVICE_OUT_VOICE_SPEAKER_WB;
             } else if (devices & AUDIO_DEVICE_OUT_EARPIECE) {
@@ -548,10 +554,6 @@
             }
         }
 
-        if (devices & AUDIO_DEVICE_OUT_ALL_SCO) {
-            snd_device = SND_DEVICE_OUT_BT_SCO;
-        }
-
         if (snd_device != SND_DEVICE_NONE) {
             goto exit;
         }
@@ -660,7 +662,11 @@
             snd_device = SND_DEVICE_IN_VOICE_MIC;
 
             if (out_device & AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET) {
-                snd_device = SND_DEVICE_IN_BT_SCO_MIC;
+                if (voice_session_uses_wideband(adev->voice.session)) {
+                    snd_device = SND_DEVICE_IN_BT_SCO_MIC_WB;
+                } else {
+                    snd_device = SND_DEVICE_IN_BT_SCO_MIC;
+                }
             } else if (voice_session_uses_twomic(adev->voice.session)) {
                 snd_device = SND_DEVICE_IN_VOICE_EARPIECE_MIC;
             }