hal: Fix device list initializations and comparisons

Update missing device list initializations.
Correct device list comparisons and assignments.

Change-Id: I19e2712972a86d7a9b1af1bd725156d2c36c3dd2
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 58bbfb5..8d768ce 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -1867,7 +1867,7 @@
                 (usecase->in_snd_device != snd_device || force_routing) &&
                 ((backend_check_cond &&
                  (is_codec_backend_in_device_type(&usecase->device_list) ||
-                  (usecase->type == VOIP_CALL))) &&
+                  (usecase->type == VOIP_CALL))) ||
                 ((uc_info->type == VOICE_CALL &&
                  is_single_device_type_equal(&usecase->device_list,
                                             AUDIO_DEVICE_IN_VOICE_CALL)) ||
@@ -4649,7 +4649,8 @@
      * turned off, the write gets blocked.
      * Avoid this by routing audio to speaker until standby.
      */
-    if (compare_device_type(&out->device_list, AUDIO_DEVICE_OUT_AUX_DIGITAL) &&
+    if (is_single_device_type_equal(&out->device_list,
+                AUDIO_DEVICE_OUT_AUX_DIGITAL) &&
             list_empty(&new_devices) &&
             !audio_extn_passthru_is_passthrough_stream(out) &&
             (platform_get_edid_info(adev->platform) != 0) /* HDMI disconnected */) {
@@ -9559,13 +9560,16 @@
             memset(&uc_info, 0, sizeof(uc_info));
             uc_info.id = audio_usecase;
             uc_info.type = usecase_type;
+            list_init(&uc_info.device_list);
             if (dir) {
                 memset(&in, 0, sizeof(in));
+                list_init(&in.device_list);
                 update_device_list(&in.device_list, audio_device, "", true);
                 in.source = AUDIO_SOURCE_VOICE_COMMUNICATION;
                 uc_info.stream.in = ∈
             }
             memset(&out, 0, sizeof(out));
+            list_init(&out.device_list);
             update_device_list(&out.device_list, audio_device, "", true);
             uc_info.stream.out = &out;
             update_device_list(&uc_info.device_list, audio_device, "", true);
@@ -10047,6 +10051,7 @@
               __func__, out->usecase);
         return -EINVAL;
     }
+    list_init(&devices);
 
     ALOGD("%s: enter: usecase(%d: %s)", __func__,
           out->usecase, use_case_table[out->usecase]);