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;
+ }
}
}