hal: always allow afe proxy for WFD if USB tunnel mode is enabled

Allow afe proxy consistently for WFD if the platforms support USB
tunnel mode.

CRs-Fixed: 2139116
Change-Id: I0b8f59440b9d18426b8e15d41183928d912df77e
diff --git a/hal/audio_extn/audio_extn.h b/hal/audio_extn/audio_extn.h
index 81f51e4..e64473e 100644
--- a/hal/audio_extn/audio_extn.h
+++ b/hal/audio_extn/audio_extn.h
@@ -216,6 +216,7 @@
 #define audio_extn_usb_get_max_channels(p)                             (0)
 #define audio_extn_usb_get_max_bit_width(p)                            (0)
 #define audio_extn_usb_get_sup_sample_rates(t, s, l)                   (0)
+#define audio_extn_usb_is_tunnel_supported()                           (0)
 #else
 void audio_extn_usb_init(void *adev);
 void audio_extn_usb_deinit();
@@ -232,6 +233,7 @@
 int audio_extn_usb_get_max_channels(bool playback);
 int audio_extn_usb_get_max_bit_width(bool playback);
 int audio_extn_usb_get_sup_sample_rates(int type, uint32_t *sr, uint32_t l);
+bool audio_extn_usb_is_tunnel_supported();
 #endif
 
 #ifndef SPLIT_A2DP_ENABLED
diff --git a/hal/audio_extn/usb.c b/hal/audio_extn/usb.c
index 60216b1..8fa47a8 100644
--- a/hal/audio_extn/usb.c
+++ b/hal/audio_extn/usb.c
@@ -1005,6 +1005,11 @@
     return usbmod->is_capture_supported;
 }
 
+bool audio_extn_usb_is_tunnel_supported()
+{
+    return true;
+}
+
 void audio_extn_usb_add_device(audio_devices_t device, int card)
 {
     struct usb_card_config *usb_card_info;
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index aa52ef8..78baeea 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -6253,8 +6253,8 @@
                 goto done;
             }
             platform_cache_edid(adev->platform);
-        } else if ((audio_is_output_device(val) && (val & AUDIO_DEVICE_OUT_USB_DEVICE)) ||
-                   (audio_is_input_device(val) && ((uint32_t)val & AUDIO_DEVICE_IN_USB_DEVICE))) {
+        } else if (((audio_devices_t)val == AUDIO_DEVICE_OUT_USB_DEVICE) ||
+                   ((audio_devices_t)val == AUDIO_DEVICE_IN_USB_DEVICE)) {
             /*
              * Do not allow AFE proxy port usage by WFD source when USB headset is connected.
              * Per AudioPolicyManager, USB device is higher priority than WFD.
@@ -6269,8 +6269,10 @@
                 else
                     audio_extn_usb_add_device(AUDIO_DEVICE_IN_USB_DEVICE, atoi(value));
             }
-            ALOGV("detected USB connect .. disable proxy");
-            adev->allow_afe_proxy_usage = false;
+            if (!audio_extn_usb_is_tunnel_supported()) {
+                ALOGV("detected USB connect .. disable proxy");
+                adev->allow_afe_proxy_usage = false;
+            }
         }
     }
 
@@ -6283,8 +6285,8 @@
          * invalidated prior to updating sysfs of the disconnect event
          * Invalidate will be handled by audio_extn_ext_disp_set_parameters()
          */
-        if ((audio_is_output_device(val) && (val & AUDIO_DEVICE_OUT_USB_DEVICE)) ||
-            (audio_is_input_device(val) && ((uint32_t)val == AUDIO_DEVICE_IN_USB_DEVICE))) {
+        if (((audio_devices_t)val == AUDIO_DEVICE_OUT_USB_DEVICE) ||
+            ((audio_devices_t)val == AUDIO_DEVICE_IN_USB_DEVICE)) {
             ret = str_parms_get_str(parms, "card", value, sizeof(value));
             if (ret >= 0) {
                 if (audio_is_output_device(val))
@@ -6292,8 +6294,10 @@
                 else
                     audio_extn_usb_remove_device(AUDIO_DEVICE_IN_USB_DEVICE, atoi(value));
             }
-            ALOGV("detected USB disconnect .. enable proxy");
-            adev->allow_afe_proxy_usage = true;
+            if (!audio_extn_usb_is_tunnel_supported()) {
+                ALOGV("detected USB disconnect .. enable proxy");
+                adev->allow_afe_proxy_usage = true;
+            }
         }
     }