hal: Support config selection for playback on speaker

Support bit width selection for playback on speakers based on
platform info.
Change-Id: I8dd2cc7049186e7468615a43db550d7d580a81d1

hal: add support for source tracking feature
Change-Id: I019b22d6541e6d1a10552d808c3320a998b86e48

hal: Add source tracking support for bear family PLs
Change-Id: Ib455933c14fd4cb920ab5e19d879a48ef61686a3

hal: Add provision to select backend based on codec type
Change-Id: I9c0dd7d952ab9d6b9bf738074d97597622e09590

Change-Id: I9c0dd7d952ab9d6b9bf738074d97597622e09590
diff --git a/msm8909/hal/audio_hw.c b/msm8909/hal/audio_hw.c
index 1c177fc..7417c39 100644
--- a/msm8909/hal/audio_hw.c
+++ b/msm8909/hal/audio_hw.c
@@ -727,14 +727,15 @@
     return ret;
 }
 
-static audio_usecase_t get_voice_usecase_id_from_list(struct audio_device *adev)
+audio_usecase_t get_usecase_id_from_usecase_type(struct audio_device *adev,
+                                                 usecase_type_t type)
 {
     struct audio_usecase *usecase;
     struct listnode *node;
 
     list_for_each(node, &adev->usecase_list) {
         usecase = node_to_item(node, struct audio_usecase, list);
-        if (usecase->type == VOICE_CALL) {
+        if (usecase->type == type) {
             ALOGV("%s: usecase id %d", __func__, usecase->id);
             return usecase->id;
         }
@@ -791,7 +792,7 @@
          */
         if (voice_is_in_call(adev) && adev->mode == AUDIO_MODE_IN_CALL) {
             vc_usecase = get_usecase_from_list(adev,
-                                               get_voice_usecase_id_from_list(adev));
+                                               get_usecase_id_from_usecase_type(adev, VOICE_CALL));
             if ((vc_usecase) && ((vc_usecase->devices & AUDIO_DEVICE_OUT_ALL_CODEC_BACKEND) ||
                 (usecase->devices == AUDIO_DEVICE_IN_VOICE_CALL))) {
                 in_snd_device = vc_usecase->in_snd_device;