audio: mode specific devices for USB
Add enums and selection for mode specific USB devices.
CRs-Fixed: 2062903
Change-Id: Ia7c2769bec79e84625d4b4e0f2b362fc96a72be1
diff --git a/hal/msm8916/platform.c b/hal/msm8916/platform.c
index 3fc1ef2..ad55cac 100644
--- a/hal/msm8916/platform.c
+++ b/hal/msm8916/platform.c
@@ -416,7 +416,9 @@
[SND_DEVICE_OUT_VOICE_TX] = "voice-tx",
[SND_DEVICE_OUT_AFE_PROXY] = "afe-proxy",
[SND_DEVICE_OUT_USB_HEADSET] = "usb-headset",
+ [SND_DEVICE_OUT_VOICE_USB_HEADSET] = "usb-headset",
[SND_DEVICE_OUT_USB_HEADPHONES] = "usb-headphones",
+ [SND_DEVICE_OUT_VOICE_USB_HEADPHONES] = "usb-headphones",
[SND_DEVICE_OUT_SPEAKER_AND_USB_HEADSET] = "speaker-and-usb-headphones",
[SND_DEVICE_OUT_TRANSMISSION_FM] = "transmission-fm",
[SND_DEVICE_OUT_ANC_HEADSET] = "anc-headphones",
@@ -481,6 +483,10 @@
[SND_DEVICE_IN_VOICE_REC_DMIC_FLUENCE] = "voice-rec-dmic-ef-fluence",
[SND_DEVICE_IN_VOICE_RX] = "voice-rx",
[SND_DEVICE_IN_USB_HEADSET_MIC] = "usb-headset-mic",
+ [SND_DEVICE_IN_VOICE_USB_HEADSET_MIC] ="usb-headset-mic",
+ [SND_DEVICE_IN_USB_HEADSET_MIC_AEC] = "usb-headset-mic",
+ [SND_DEVICE_IN_UNPROCESSED_USB_HEADSET_MIC] = "usb-headset-mic",
+ [SND_DEVICE_IN_VOICE_RECOG_USB_HEADSET_MIC] = "usb-headset-mic",
[SND_DEVICE_IN_CAPTURE_FM] = "capture-fm",
[SND_DEVICE_IN_AANC_HANDSET_MIC] = "aanc-handset-mic",
[SND_DEVICE_IN_QUAD_MIC] = "quad-mic",
@@ -555,7 +561,9 @@
[SND_DEVICE_OUT_VOICE_TX] = 45,
[SND_DEVICE_OUT_AFE_PROXY] = 0,
[SND_DEVICE_OUT_USB_HEADSET] = 45,
+ [SND_DEVICE_OUT_VOICE_USB_HEADSET] = 45,
[SND_DEVICE_OUT_USB_HEADPHONES] = 45,
+ [SND_DEVICE_OUT_VOICE_USB_HEADPHONES] = 45,
[SND_DEVICE_OUT_SPEAKER_AND_USB_HEADSET] = 45,
[SND_DEVICE_OUT_TRANSMISSION_FM] = 0,
[SND_DEVICE_OUT_ANC_HEADSET] = 26,
@@ -617,6 +625,10 @@
[SND_DEVICE_IN_VOICE_REC_DMIC_FLUENCE] = 41,
[SND_DEVICE_IN_VOICE_RX] = 44,
[SND_DEVICE_IN_USB_HEADSET_MIC] = 44,
+ [SND_DEVICE_IN_VOICE_USB_HEADSET_MIC] = 44,
+ [SND_DEVICE_IN_UNPROCESSED_USB_HEADSET_MIC] = 44,
+ [SND_DEVICE_IN_VOICE_RECOG_USB_HEADSET_MIC] = 44,
+ [SND_DEVICE_IN_USB_HEADSET_MIC_AEC] = 44,
[SND_DEVICE_IN_CAPTURE_FM] = 0,
[SND_DEVICE_IN_AANC_HANDSET_MIC] = 104,
[SND_DEVICE_IN_QUAD_MIC] = 46,
@@ -692,7 +704,9 @@
{TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_TX)},
{TO_NAME_INDEX(SND_DEVICE_OUT_AFE_PROXY)},
{TO_NAME_INDEX(SND_DEVICE_OUT_USB_HEADSET)},
+ {TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_USB_HEADSET)},
{TO_NAME_INDEX(SND_DEVICE_OUT_USB_HEADPHONES)},
+ {TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_USB_HEADPHONES)},
{TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_AND_USB_HEADSET)},
{TO_NAME_INDEX(SND_DEVICE_OUT_TRANSMISSION_FM)},
{TO_NAME_INDEX(SND_DEVICE_OUT_ANC_HEADSET)},
@@ -753,6 +767,10 @@
{TO_NAME_INDEX(SND_DEVICE_IN_VOICE_REC_DMIC_FLUENCE)},
{TO_NAME_INDEX(SND_DEVICE_IN_VOICE_RX)},
{TO_NAME_INDEX(SND_DEVICE_IN_USB_HEADSET_MIC)},
+ {TO_NAME_INDEX(SND_DEVICE_IN_VOICE_USB_HEADSET_MIC)},
+ {TO_NAME_INDEX(SND_DEVICE_IN_UNPROCESSED_USB_HEADSET_MIC)},
+ {TO_NAME_INDEX(SND_DEVICE_IN_VOICE_RECOG_USB_HEADSET_MIC)},
+ {TO_NAME_INDEX(SND_DEVICE_IN_USB_HEADSET_MIC_AEC)},
{TO_NAME_INDEX(SND_DEVICE_IN_CAPTURE_FM)},
{TO_NAME_INDEX(SND_DEVICE_IN_AANC_HANDSET_MIC)},
{TO_NAME_INDEX(SND_DEVICE_IN_QUAD_MIC)},
@@ -1417,10 +1435,16 @@
backend_tag_table[SND_DEVICE_IN_VOICE_RX] = strdup("afe-proxy");
backend_tag_table[SND_DEVICE_OUT_AFE_PROXY] = strdup("afe-proxy");
backend_tag_table[SND_DEVICE_OUT_USB_HEADSET] = strdup("usb-headset");
+ backend_tag_table[SND_DEVICE_OUT_VOICE_USB_HEADSET] = strdup("usb-headset");
backend_tag_table[SND_DEVICE_OUT_USB_HEADPHONES] = strdup("usb-headphones");
+ backend_tag_table[SND_DEVICE_OUT_VOICE_USB_HEADPHONES] = strdup("usb-headphones");
backend_tag_table[SND_DEVICE_OUT_SPEAKER_AND_USB_HEADSET] =
strdup("speaker-and-usb-headphones");
backend_tag_table[SND_DEVICE_IN_USB_HEADSET_MIC] = strdup("usb-headset-mic");
+ backend_tag_table[SND_DEVICE_IN_VOICE_USB_HEADSET_MIC] = strdup("usb-headset-mic");
+ backend_tag_table[SND_DEVICE_IN_UNPROCESSED_USB_HEADSET_MIC] = strdup("usb-headset-mic");
+ backend_tag_table[SND_DEVICE_IN_VOICE_RECOG_USB_HEADSET_MIC] = strdup("usb-headset-mic");
+ backend_tag_table[SND_DEVICE_IN_USB_HEADSET_MIC_AEC] = strdup("usb-headset-mic");
backend_tag_table[SND_DEVICE_IN_CAPTURE_FM] = strdup("capture-fm");
backend_tag_table[SND_DEVICE_OUT_TRANSMISSION_FM] = strdup("transmission-fm");
backend_tag_table[SND_DEVICE_OUT_HEADPHONES_DSD] = strdup("headphones-dsd");
@@ -1469,7 +1493,9 @@
hw_interface_table[SND_DEVICE_OUT_VOICE_TX] = strdup("RT_PROXY_DAI_001_RX");
hw_interface_table[SND_DEVICE_OUT_AFE_PROXY] = strdup("RT_PROXY_DAI_001_RX");
hw_interface_table[SND_DEVICE_OUT_USB_HEADSET] = strdup("USB_AUDIO_RX");
+ hw_interface_table[SND_DEVICE_OUT_VOICE_USB_HEADSET] = strdup("USB_AUDIO_RX");
hw_interface_table[SND_DEVICE_OUT_USB_HEADPHONES] = strdup("USB_AUDIO_RX");
+ hw_interface_table[SND_DEVICE_OUT_VOICE_USB_HEADPHONES] = strdup("USB_AUDIO_RX");
hw_interface_table[SND_DEVICE_OUT_SPEAKER_AND_USB_HEADSET] = strdup("SLIMBUS_0_RX-and-USB_AUDIO_RX");
hw_interface_table[SND_DEVICE_OUT_TRANSMISSION_FM] = strdup("SLIMBUS_8_TX");
hw_interface_table[SND_DEVICE_OUT_ANC_HEADSET] = strdup("SLIMBUS_6_RX");
@@ -3721,6 +3747,12 @@
} else {
snd_device = SND_DEVICE_OUT_VOICE_HEADPHONES;
}
+ } else if (devices & AUDIO_DEVICE_OUT_USB_DEVICE) {
+ if (snd_device == SND_DEVICE_NONE) {
+ snd_device = audio_extn_usb_is_capture_supported() ?
+ SND_DEVICE_OUT_VOICE_USB_HEADSET :
+ SND_DEVICE_OUT_VOICE_USB_HEADPHONES;
+ }
} else if (devices & AUDIO_DEVICE_OUT_ALL_SCO) {
if (adev->bt_wb_speech_enabled)
snd_device = SND_DEVICE_OUT_BT_SCO_WB;
@@ -4000,8 +4032,13 @@
if (audio_extn_hfp_is_active(adev))
platform_set_echo_reference(adev, true, out_device);
}
- } else if (out_device & AUDIO_DEVICE_OUT_TELEPHONY_TX)
+ } else if (out_device & AUDIO_DEVICE_OUT_TELEPHONY_TX) {
snd_device = SND_DEVICE_IN_VOICE_RX;
+ } else if (out_device & AUDIO_DEVICE_OUT_USB_DEVICE) {
+ if (audio_extn_usb_is_capture_supported()) {
+ snd_device = SND_DEVICE_IN_VOICE_USB_HEADSET_MIC;
+ }
+ }
} else if (source == AUDIO_SOURCE_CAMCORDER) {
if (in_device & AUDIO_DEVICE_IN_BUILTIN_MIC ||
in_device & AUDIO_DEVICE_IN_BACK_MIC) {
@@ -4065,7 +4102,9 @@
else
snd_device = SND_DEVICE_IN_VOICE_REC_MIC;
}
- }
+ } else if (in_device & AUDIO_DEVICE_IN_USB_DEVICE) {
+ snd_device = SND_DEVICE_IN_VOICE_RECOG_USB_HEADSET_MIC;
+ }
} else if (source == AUDIO_SOURCE_UNPROCESSED) {
if (in_device & AUDIO_DEVICE_IN_BUILTIN_MIC) {
if (((channel_mask == AUDIO_CHANNEL_IN_FRONT_BACK) ||
@@ -4083,6 +4122,8 @@
}
} else if (in_device & AUDIO_DEVICE_IN_WIRED_HEADSET) {
snd_device = SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC;
+ } else if (in_device & AUDIO_DEVICE_IN_USB_DEVICE) {
+ snd_device = SND_DEVICE_IN_UNPROCESSED_USB_HEADSET_MIC;
}
} else if ((source == AUDIO_SOURCE_VOICE_COMMUNICATION) ||
(mode == AUDIO_MODE_IN_COMMUNICATION)) {
@@ -4116,6 +4157,8 @@
snd_device = SND_DEVICE_IN_HANDSET_MIC_AEC_NS;
} else if (in_device & AUDIO_DEVICE_IN_WIRED_HEADSET) {
snd_device = SND_DEVICE_IN_HEADSET_MIC_FLUENCE;
+ } else if (in_device & AUDIO_DEVICE_IN_USB_DEVICE) {
+ snd_device = SND_DEVICE_IN_USB_HEADSET_MIC_AEC;
}
platform_set_echo_reference(adev, true, out_device);
} else if (my_data->fluence_type != FLUENCE_NONE &&
@@ -4144,6 +4187,8 @@
snd_device = SND_DEVICE_IN_HANDSET_MIC_AEC;
} else if (in_device & AUDIO_DEVICE_IN_WIRED_HEADSET) {
snd_device = SND_DEVICE_IN_HEADSET_MIC_FLUENCE;
+ } else if (in_device & AUDIO_DEVICE_IN_USB_DEVICE) {
+ snd_device = SND_DEVICE_IN_USB_HEADSET_MIC_AEC;
}
platform_set_echo_reference(adev, true, out_device);
} else if (my_data->fluence_type != FLUENCE_NONE &&
diff --git a/hal/msm8916/platform.h b/hal/msm8916/platform.h
index 5aa02a0..f8c7280 100644
--- a/hal/msm8916/platform.h
+++ b/hal/msm8916/platform.h
@@ -119,6 +119,8 @@
SND_DEVICE_OUT_USB_HEADSET,
SND_DEVICE_OUT_USB_HEADPHONES,
SND_DEVICE_OUT_SPEAKER_AND_USB_HEADSET,
+ SND_DEVICE_OUT_VOICE_USB_HEADPHONES,
+ SND_DEVICE_OUT_VOICE_USB_HEADSET,
SND_DEVICE_OUT_TRANSMISSION_FM,
SND_DEVICE_OUT_ANC_HEADSET,
SND_DEVICE_OUT_ANC_FB_HEADSET,
@@ -188,6 +190,10 @@
SND_DEVICE_IN_VOICE_REC_DMIC_FLUENCE,
SND_DEVICE_IN_VOICE_RX,
SND_DEVICE_IN_USB_HEADSET_MIC,
+ SND_DEVICE_IN_USB_HEADSET_MIC_AEC,
+ SND_DEVICE_IN_VOICE_USB_HEADSET_MIC,
+ SND_DEVICE_IN_UNPROCESSED_USB_HEADSET_MIC,
+ SND_DEVICE_IN_VOICE_RECOG_USB_HEADSET_MIC,
SND_DEVICE_IN_CAPTURE_FM,
SND_DEVICE_IN_AANC_HANDSET_MIC,
SND_DEVICE_IN_QUAD_MIC,
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 9c23f16..efd8fcc 100755
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -394,7 +394,9 @@
[SND_DEVICE_OUT_VOICE_TX] = "voice-tx",
[SND_DEVICE_OUT_AFE_PROXY] = "afe-proxy",
[SND_DEVICE_OUT_USB_HEADSET] = "usb-headset",
+ [SND_DEVICE_OUT_VOICE_USB_HEADSET] = "usb-headset",
[SND_DEVICE_OUT_USB_HEADPHONES] = "usb-headphones",
+ [SND_DEVICE_OUT_VOICE_USB_HEADPHONES] = "usb-headphones",
[SND_DEVICE_OUT_SPEAKER_AND_USB_HEADSET] = "speaker-and-usb-headphones",
[SND_DEVICE_OUT_TRANSMISSION_FM] = "transmission-fm",
[SND_DEVICE_OUT_ANC_HEADSET] = "anc-headphones",
@@ -459,6 +461,10 @@
[SND_DEVICE_IN_VOICE_REC_DMIC_STEREO] = "voice-rec-dmic-ef",
[SND_DEVICE_IN_VOICE_REC_DMIC_FLUENCE] = "voice-rec-dmic-ef-fluence",
[SND_DEVICE_IN_USB_HEADSET_MIC] = "usb-headset-mic",
+ [SND_DEVICE_IN_VOICE_USB_HEADSET_MIC] ="usb-headset-mic",
+ [SND_DEVICE_IN_USB_HEADSET_MIC_AEC] = "usb-headset-mic",
+ [SND_DEVICE_IN_UNPROCESSED_USB_HEADSET_MIC] = "usb-headset-mic",
+ [SND_DEVICE_IN_VOICE_RECOG_USB_HEADSET_MIC] = "usb-headset-mic",
[SND_DEVICE_IN_CAPTURE_FM] = "capture-fm",
[SND_DEVICE_IN_AANC_HANDSET_MIC] = "aanc-handset-mic",
[SND_DEVICE_IN_VOICE_FLUENCE_DMIC_AANC] = "aanc-handset-mic",
@@ -534,7 +540,9 @@
[SND_DEVICE_OUT_VOICE_TX] = 45,
[SND_DEVICE_OUT_AFE_PROXY] = 0,
[SND_DEVICE_OUT_USB_HEADSET] = 45,
+ [SND_DEVICE_OUT_VOICE_USB_HEADSET] = 45,
[SND_DEVICE_OUT_USB_HEADPHONES] = 45,
+ [SND_DEVICE_OUT_VOICE_USB_HEADPHONES] = 45,
[SND_DEVICE_OUT_SPEAKER_AND_USB_HEADSET] = 14,
[SND_DEVICE_OUT_TRANSMISSION_FM] = 0,
[SND_DEVICE_OUT_ANC_HEADSET] = 26,
@@ -594,6 +602,10 @@
[SND_DEVICE_IN_VOICE_REC_DMIC_STEREO] = 34,
[SND_DEVICE_IN_VOICE_REC_DMIC_FLUENCE] = 41,
[SND_DEVICE_IN_USB_HEADSET_MIC] = 44,
+ [SND_DEVICE_IN_VOICE_USB_HEADSET_MIC] = 44,
+ [SND_DEVICE_IN_UNPROCESSED_USB_HEADSET_MIC] = 44,
+ [SND_DEVICE_IN_VOICE_RECOG_USB_HEADSET_MIC] = 44,
+ [SND_DEVICE_IN_USB_HEADSET_MIC_AEC] = 44,
[SND_DEVICE_IN_CAPTURE_FM] = 0,
[SND_DEVICE_IN_AANC_HANDSET_MIC] = 104,
[SND_DEVICE_IN_VOICE_FLUENCE_DMIC_AANC] = 105,
@@ -669,7 +681,9 @@
{TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_TX)},
{TO_NAME_INDEX(SND_DEVICE_OUT_AFE_PROXY)},
{TO_NAME_INDEX(SND_DEVICE_OUT_USB_HEADSET)},
+ {TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_USB_HEADSET)},
{TO_NAME_INDEX(SND_DEVICE_OUT_USB_HEADPHONES)},
+ {TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_USB_HEADPHONES)},
{TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_AND_USB_HEADSET)},
{TO_NAME_INDEX(SND_DEVICE_OUT_TRANSMISSION_FM)},
{TO_NAME_INDEX(SND_DEVICE_OUT_ANC_HEADSET)},
@@ -728,6 +742,10 @@
{TO_NAME_INDEX(SND_DEVICE_IN_VOICE_REC_DMIC_FLUENCE)},
{TO_NAME_INDEX(SND_DEVICE_IN_VOICE_RX)},
{TO_NAME_INDEX(SND_DEVICE_IN_USB_HEADSET_MIC)},
+ {TO_NAME_INDEX(SND_DEVICE_IN_VOICE_USB_HEADSET_MIC)},
+ {TO_NAME_INDEX(SND_DEVICE_IN_UNPROCESSED_USB_HEADSET_MIC)},
+ {TO_NAME_INDEX(SND_DEVICE_IN_VOICE_RECOG_USB_HEADSET_MIC)},
+ {TO_NAME_INDEX(SND_DEVICE_IN_USB_HEADSET_MIC_AEC)},
{TO_NAME_INDEX(SND_DEVICE_IN_CAPTURE_FM)},
{TO_NAME_INDEX(SND_DEVICE_IN_AANC_HANDSET_MIC)},
{TO_NAME_INDEX(SND_DEVICE_IN_VOICE_FLUENCE_DMIC_AANC)},
@@ -1263,12 +1281,18 @@
backend_tag_table[SND_DEVICE_IN_VOICE_RX] = strdup("afe-proxy");
backend_tag_table[SND_DEVICE_OUT_AFE_PROXY] = strdup("afe-proxy");
backend_tag_table[SND_DEVICE_OUT_USB_HEADSET] = strdup("usb-headset");
+ backend_tag_table[SND_DEVICE_OUT_VOICE_USB_HEADSET] = strdup("usb-headset");
backend_tag_table[SND_DEVICE_OUT_USB_HEADPHONES] = strdup("usb-headphones");
backend_tag_table[SND_DEVICE_OUT_VOICE_TTY_FULL_USB] = strdup("usb-headset");
backend_tag_table[SND_DEVICE_OUT_VOICE_TTY_VCO_USB] = strdup("usb-headphones");
+ backend_tag_table[SND_DEVICE_OUT_VOICE_USB_HEADPHONES] = strdup("usb-headphones");
backend_tag_table[SND_DEVICE_OUT_SPEAKER_AND_USB_HEADSET] =
strdup("speaker-and-usb-headphones");
backend_tag_table[SND_DEVICE_IN_USB_HEADSET_MIC] = strdup("usb-headset-mic");
+ backend_tag_table[SND_DEVICE_IN_VOICE_USB_HEADSET_MIC] = strdup("usb-headset-mic");
+ backend_tag_table[SND_DEVICE_IN_UNPROCESSED_USB_HEADSET_MIC] = strdup("usb-headset-mic");
+ backend_tag_table[SND_DEVICE_IN_VOICE_RECOG_USB_HEADSET_MIC] = strdup("usb-headset-mic");
+ backend_tag_table[SND_DEVICE_IN_USB_HEADSET_MIC_AEC] = strdup("usb-headset-mic");
backend_tag_table[SND_DEVICE_IN_CAPTURE_FM] = strdup("capture-fm");
backend_tag_table[SND_DEVICE_OUT_TRANSMISSION_FM] = strdup("transmission-fm");
backend_tag_table[SND_DEVICE_OUT_HEADPHONES_DSD] = strdup("headphones-dsd");
@@ -1321,7 +1345,9 @@
hw_interface_table[SND_DEVICE_OUT_VOICE_TX] = strdup("RT_PROXY_DAI_001_RX");
hw_interface_table[SND_DEVICE_OUT_AFE_PROXY] = strdup("RT_PROXY_DAI_001_RX");
hw_interface_table[SND_DEVICE_OUT_USB_HEADSET] = strdup("USB_AUDIO_RX");
+ hw_interface_table[SND_DEVICE_OUT_VOICE_USB_HEADSET] = strdup("USB_AUDIO_RX");
hw_interface_table[SND_DEVICE_OUT_USB_HEADPHONES] = strdup("USB_AUDIO_RX");
+ hw_interface_table[SND_DEVICE_OUT_VOICE_USB_HEADPHONES] = strdup("USB_AUDIO_RX");
hw_interface_table[SND_DEVICE_OUT_SPEAKER_AND_USB_HEADSET] = strdup("SLIMBUS_0_RX-and-USB_AUDIO_RX");
hw_interface_table[SND_DEVICE_OUT_TRANSMISSION_FM] = strdup("SLIMBUS_8_TX");
hw_interface_table[SND_DEVICE_OUT_ANC_HEADSET] = strdup("SLIMBUS_6_RX");
@@ -3501,11 +3527,18 @@
// since Hearing will be on handset\speaker, use existing device
snd_device = SND_DEVICE_OUT_VOICE_TTY_HCO_HANDSET;
break;
+ case TTY_MODE_OFF:
+ break;
default:
ALOGE("%s: Invalid TTY mode (%#x)",
__func__, adev->voice.tty_mode);
}
}
+ if (snd_device == SND_DEVICE_NONE) {
+ snd_device = audio_extn_usb_is_capture_supported() ?
+ SND_DEVICE_OUT_VOICE_USB_HEADSET :
+ SND_DEVICE_OUT_VOICE_USB_HEADPHONES;
+ }
} else if (devices & AUDIO_DEVICE_OUT_ALL_SCO) {
if (adev->bt_wb_speech_enabled)
snd_device = SND_DEVICE_OUT_BT_SCO_WB;
@@ -3767,8 +3800,13 @@
if (audio_extn_hfp_is_active(adev))
platform_set_echo_reference(adev, true, out_device);
}
- } else if (out_device & AUDIO_DEVICE_OUT_TELEPHONY_TX)
+ } else if (out_device & AUDIO_DEVICE_OUT_TELEPHONY_TX) {
snd_device = SND_DEVICE_IN_VOICE_RX;
+ } else if (out_device & AUDIO_DEVICE_OUT_USB_DEVICE) {
+ if (audio_extn_usb_is_capture_supported()) {
+ snd_device = SND_DEVICE_IN_VOICE_USB_HEADSET_MIC;
+ }
+ }
} else if (source == AUDIO_SOURCE_CAMCORDER) {
if (in_device & AUDIO_DEVICE_IN_BUILTIN_MIC ||
in_device & AUDIO_DEVICE_IN_BACK_MIC) {
@@ -3832,6 +3870,8 @@
else
snd_device = SND_DEVICE_IN_VOICE_REC_MIC;
}
+ } else if (in_device & AUDIO_DEVICE_IN_USB_DEVICE) {
+ snd_device = SND_DEVICE_IN_VOICE_RECOG_USB_HEADSET_MIC;
}
} else if (source == AUDIO_SOURCE_UNPROCESSED) {
if (in_device & AUDIO_DEVICE_IN_BUILTIN_MIC) {
@@ -3850,6 +3890,8 @@
}
} else if (in_device & AUDIO_DEVICE_IN_WIRED_HEADSET) {
snd_device = SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC;
+ } else if (in_device & AUDIO_DEVICE_IN_USB_DEVICE) {
+ snd_device = SND_DEVICE_IN_UNPROCESSED_USB_HEADSET_MIC;
}
} else if ((source == AUDIO_SOURCE_VOICE_COMMUNICATION) ||
(mode == AUDIO_MODE_IN_COMMUNICATION)) {
@@ -3883,6 +3925,8 @@
snd_device = SND_DEVICE_IN_HANDSET_MIC_AEC_NS;
} else if (in_device & AUDIO_DEVICE_IN_WIRED_HEADSET) {
snd_device = SND_DEVICE_IN_HEADSET_MIC_FLUENCE;
+ } else if (in_device & AUDIO_DEVICE_IN_USB_DEVICE) {
+ snd_device = SND_DEVICE_IN_USB_HEADSET_MIC_AEC;
}
platform_set_echo_reference(adev, true, out_device);
} else if (my_data->fluence_type != FLUENCE_NONE &&
@@ -3911,6 +3955,8 @@
snd_device = SND_DEVICE_IN_HANDSET_MIC_AEC;
} else if (in_device & AUDIO_DEVICE_IN_WIRED_HEADSET) {
snd_device = SND_DEVICE_IN_HEADSET_MIC_FLUENCE;
+ } else if (in_device & AUDIO_DEVICE_IN_USB_DEVICE) {
+ snd_device = SND_DEVICE_IN_USB_HEADSET_MIC_AEC;
}
platform_set_echo_reference(adev, true, out_device);
} else if (my_data->fluence_type != FLUENCE_NONE &&
diff --git a/hal/msm8974/platform.h b/hal/msm8974/platform.h
index 7329e7a..fca940f 100644
--- a/hal/msm8974/platform.h
+++ b/hal/msm8974/platform.h
@@ -116,6 +116,8 @@
SND_DEVICE_OUT_USB_HEADSET,
SND_DEVICE_OUT_USB_HEADPHONES,
SND_DEVICE_OUT_SPEAKER_AND_USB_HEADSET,
+ SND_DEVICE_OUT_VOICE_USB_HEADPHONES,
+ SND_DEVICE_OUT_VOICE_USB_HEADSET,
SND_DEVICE_OUT_TRANSMISSION_FM,
SND_DEVICE_OUT_ANC_HEADSET,
SND_DEVICE_OUT_ANC_FB_HEADSET,
@@ -187,6 +189,10 @@
SND_DEVICE_IN_VOICE_REC_DMIC_FLUENCE,
SND_DEVICE_IN_VOICE_RX,
SND_DEVICE_IN_USB_HEADSET_MIC,
+ SND_DEVICE_IN_USB_HEADSET_MIC_AEC,
+ SND_DEVICE_IN_VOICE_USB_HEADSET_MIC,
+ SND_DEVICE_IN_UNPROCESSED_USB_HEADSET_MIC,
+ SND_DEVICE_IN_VOICE_RECOG_USB_HEADSET_MIC,
SND_DEVICE_IN_CAPTURE_FM,
SND_DEVICE_IN_AANC_HANDSET_MIC,
SND_DEVICE_IN_QUAD_MIC,