Merge "HAL: Add new device for voice headset"
diff --git a/configs/msmnile/audio_platform_info.xml b/configs/msmnile/audio_platform_info.xml
index 4e7c344..6bfadc8 100644
--- a/configs/msmnile/audio_platform_info.xml
+++ b/configs/msmnile/audio_platform_info.xml
@@ -138,6 +138,7 @@
<device name="SND_DEVICE_OUT_SPEAKER_AND_ANC_HEADSET" backend="speaker-and-headphones" interface="SLIMBUS_0_RX-and-SLIMBUS_6_RX"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_ANC_FB_HEADSET" backend="speaker-and-headphones" interface="SLIMBUS_0_RX-and-SLIMBUS_6_RX"/>
<device name="SND_DEVICE_OUT_VOICE_HEADPHONES" backend="headphones" interface="SLIMBUS_6_RX"/>
+ <device name="SND_DEVICE_OUT_VOICE_HEADSET" backend="headset" interface="SLIMBUS_6_RX"/>
<device name="SND_DEVICE_OUT_VOICE_ANC_HEADSET" backend="headphones" interface="SLIMBUS_6_RX"/>
<device name="SND_DEVICE_OUT_VOICE_ANC_FB_HEADSET" backend="headphones" interface="SLIMBUS_6_RX"/>
<device name="SND_DEVICE_OUT_VOICE_LINE" backend="headphones" interface="SLIMBUS_6_RX"/>
diff --git a/configs/msmnile/mixer_paths_tavil.xml b/configs/msmnile/mixer_paths_tavil.xml
index c8e22e8..fd29629 100644
--- a/configs/msmnile/mixer_paths_tavil.xml
+++ b/configs/msmnile/mixer_paths_tavil.xml
@@ -568,6 +568,10 @@
<ctl name="AUDIO_REF_EC_UL1 MUX" value="SLIM_6_RX" />
</path>
+ <path name="echo-reference headset">
+ <path name="echo-reference headphones" />
+ </path>
+
<path name="echo-reference display-port">
<ctl name="AUDIO_REF_EC_UL1 MUX" value="DISPLAY_PORT" />
</path>
@@ -583,6 +587,10 @@
<ctl name="AUDIO_REF_EC_UL10 MUX" value="SLIM_6_RX" />
</path>
+ <path name="echo-reference-voip headset">
+ <path name="echo-reference-voip headphones" />
+ </path>
+
<path name="echo-reference-voip display-port">
<ctl name="AUDIO_REF_EC_UL10 MUX" value="DISPLAY_PORT" />
</path>
@@ -634,6 +642,10 @@
<ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia1" value="1" />
</path>
+ <path name="deep-buffer-playback headset">
+ <path name="deep-buffer-playback headphones" />
+ </path>
+
<path name="deep-buffer-playback speaker-and-headphones">
<path name="deep-buffer-playback headphones" />
<path name="deep-buffer-playback" />
@@ -696,6 +708,10 @@
<ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia5" value="1" />
</path>
+ <path name="low-latency-playback headset">
+ <path name="low-latency-playback headphones" />
+ </path>
+
<path name="low-latency-playback speaker-and-headphones">
<path name="low-latency-playback headphones" />
<path name="low-latency-playback" />
@@ -727,6 +743,10 @@
<ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia8" value="1" />
</path>
+ <path name="audio-ull-playback headset">
+ <path name="audio-ull-playback headphones" />
+ </path>
+
<path name="audio-ull-playback speaker-and-headphones">
<path name="audio-ull-playback" />
<path name="audio-ull-playback headphones" />
@@ -831,6 +851,10 @@
<ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia4" value="1" />
</path>
+ <path name="compress-offload-playback headset">
+ <path name="compress-offload-playback headphones" />
+ </path>
+
<path name="compress-offload-playback headphones-44.1">
<ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia4" value="1" />
</path>
@@ -897,6 +921,10 @@
<ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia7" value="1" />
</path>
+ <path name="compress-offload-playback2 headset">
+ <path name="compress-offload-playback2 headphones" />
+ </path>
+
<path name="compress-offload-playback2 headphones-44.1">
<ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia7" value="1" />
</path>
@@ -963,6 +991,10 @@
<ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia10" value="1" />
</path>
+ <path name="compress-offload-playback3 headset">
+ <path name="compress-offload-playback3 headphones" />
+ </path>
+
<path name="compress-offload-playback3 headphones-44.1">
<ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia10" value="1" />
</path>
@@ -1030,6 +1062,10 @@
<ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia11" value="1" />
</path>
+ <path name="compress-offload-playback4 headset">
+ <path name="compress-offload-playback4 headphones" />
+ </path>
+
<path name="compress-offload-playback4 headphones-44.1">
<ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia11" value="1" />
</path>
@@ -1096,6 +1132,10 @@
<ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia12" value="1" />
</path>
+ <path name="compress-offload-playback5 headset">
+ <path name="compress-offload-playback5 headphones" />
+ </path>
+
<path name="compress-offload-playback5 headphones-44.1">
<ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia12" value="1" />
</path>
@@ -1162,6 +1202,10 @@
<ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia13" value="1" />
</path>
+ <path name="compress-offload-playback6 headset">
+ <path name="compress-offload-playback6 headphones" />
+ </path>
+
<path name="compress-offload-playback6 headphones-44.1">
<ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia13" value="1" />
</path>
@@ -1228,6 +1272,10 @@
<ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia14" value="1" />
</path>
+ <path name="compress-offload-playback7 headset">
+ <path name="compress-offload-playback7 headphones" />
+ </path>
+
<path name="compress-offload-playback7 headphones-44.1">
<ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia14" value="1" />
</path>
@@ -1294,6 +1342,10 @@
<ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia15" value="1" />
</path>
+ <path name="compress-offload-playback8 headset">
+ <path name="compress-offload-playback8 headphones" />
+ </path>
+
<path name="compress-offload-playback8 headphones-44.1">
<ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia15" value="1" />
</path>
@@ -1360,6 +1412,10 @@
<ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia16" value="1" />
</path>
+ <path name="compress-offload-playback9 headset">
+ <path name="compress-offload-playback9 headphones" />
+ </path>
+
<path name="compress-offload-playback9 headphones-44.1">
<ctl name="SLIMBUS_5_RX Audio Mixer MultiMedia16" value="1" />
</path>
@@ -1491,6 +1547,10 @@
<ctl name="SLIMBUS6_DL_HL Switch" value="1" />
</path>
+ <path name="play-fm headset">
+ <path name="play-fm headphones" />
+ </path>
+
<path name="incall-rec-uplink">
<ctl name="MultiMedia1 Mixer VOC_REC_UL" value="1" />
</path>
@@ -1643,6 +1703,10 @@
<path name="hfp-sco headphones">
</path>
+ <path name="hfp-sco headset">
+ <path name="hfp-sco headphones" />
+ </path>
+
<path name="hfp-sco-wb">
<path name="hfp-sco" />
</path>
@@ -1651,6 +1715,10 @@
<path name="hfp-sco headphones" />
</path>
+ <path name="hfp-sco-wb headset">
+ <path name="hfp-sco headphones" />
+ </path>
+
<path name="compress-voip-call">
<ctl name="SLIM_0_RX_Voice Mixer Voip" value="1" />
<ctl name="Voip_Tx Mixer SLIM_0_TX_Voip" value="1" />
@@ -1663,9 +1731,13 @@
<path name="compress-voip-call headphones">
<ctl name="SLIM_6_RX_Voice Mixer Voip" value="1" />
- <ctl name="Voip_Tx Mixer SLIM_1_TX_Voip" value="1" />
+ <ctl name="Voip_Tx Mixer SLIM_0_TX_Voip" value="1" />
</path>
+ <path name="compress-voip-call headset">
+ <ctl name="SLIM_6_RX_Voice Mixer Voip" value="1" />
+ <ctl name="Voip_Tx Mixer SLIM_1_TX_Voip" value="1" />
+ </path>
<path name="compress-voip-call bt-sco">
<ctl name="SLIM_7_RX_Voice Mixer Voip" value="1" />
@@ -1699,6 +1771,11 @@
<path name="voicemmode1-call headphones">
<ctl name="SLIM_6_RX_Voice Mixer VoiceMMode1" value="1" />
+ <ctl name="VoiceMMode1_Tx Mixer SLIM_0_TX_MMode1" value="1" />
+ </path>
+
+ <path name="voicemmode1-call headset">
+ <ctl name="SLIM_6_RX_Voice Mixer VoiceMMode1" value="1" />
<ctl name="VoiceMMode1_Tx Mixer SLIM_1_TX_MMode1" value="1" />
</path>
@@ -1744,6 +1821,11 @@
<path name="voicemmode2-call headphones">
<ctl name="SLIM_6_RX_Voice Mixer VoiceMMode2" value="1" />
+ <ctl name="VoiceMMode2_Tx Mixer SLIM_0_TX_MMode2" value="1" />
+ </path>
+
+ <path name="voicemmode2-call headset">
+ <ctl name="SLIM_6_RX_Voice Mixer VoiceMMode2" value="1" />
<ctl name="VoiceMMode2_Tx Mixer SLIM_1_TX_MMode2" value="1" />
</path>
@@ -1791,6 +1873,10 @@
<ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia10" value="1" />
</path>
+ <path name="audio-playback-voip headset">
+ <path name="audio-playback-voip headphones" />
+ </path>
+
<path name="audio-playback-voip bt-sco">
<ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia10" value="1" />
</path>
@@ -2295,6 +2381,10 @@
<path name="headphones" />
</path>
+ <path name="voice-headset">
+ <path name="headphones" />
+ </path>
+
<path name="voice-line">
<path name="voice-headphones" />
</path>
@@ -2986,6 +3076,10 @@
<ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia16" value="1" />
</path>
+ <path name="mmap-playback headset">
+ <path name="mmap-playback headphones" />
+ </path>
+
<path name="mmap-playback speaker-and-headphones">
<path name="mmap-playback" />
<path name="mmap-playback headphones" />
diff --git a/hal/audio_extn/dev_arbi.c b/hal/audio_extn/dev_arbi.c
index d83d6bd..4eb5dee 100644
--- a/hal/audio_extn/dev_arbi.c
+++ b/hal/audio_extn/dev_arbi.c
@@ -142,6 +142,7 @@
{SND_DEVICE_OUT_VOICE_HEADPHONES, AUDIO_DEVICE_OUT_WIRED_HEADPHONE},
{SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES,
AUDIO_DEVICE_OUT_SPEAKER | AUDIO_DEVICE_OUT_WIRED_HEADPHONE}
+ {SND_DEVICE_OUT_VOICE_HEADSET, AUDIO_DEVICE_OUT_WIRED_HEADSET},
};
audio_devices_t aud_device = AUDIO_DEVICE_NONE;
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 6437009..9c2e990 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -503,6 +503,7 @@
[SND_DEVICE_OUT_VOICE_SPEAKER_2_WSA] = "wsa-voice-speaker-2",
[SND_DEVICE_OUT_VOICE_SPEAKER_2_VBAT] = "voice-speaker-2-vbat",
[SND_DEVICE_OUT_VOICE_HEADPHONES] = "voice-headphones",
+ [SND_DEVICE_OUT_VOICE_HEADSET] = "voice-headset",
[SND_DEVICE_OUT_VOICE_LINE] = "voice-line",
[SND_DEVICE_OUT_HDMI] = "hdmi",
[SND_DEVICE_OUT_SPEAKER_AND_HDMI] = "speaker-and-hdmi",
@@ -762,6 +763,7 @@
[SND_DEVICE_OUT_VOICE_SPEAKER_2_VBAT] = 14,
[SND_DEVICE_OUT_VOICE_HAC_HANDSET] = 53,
[SND_DEVICE_OUT_VOICE_HEADPHONES] = 10,
+ [SND_DEVICE_OUT_VOICE_HEADSET] = 10,
[SND_DEVICE_OUT_VOICE_LINE] = 10,
[SND_DEVICE_OUT_VOICE_SPEAKER_AND_VOICE_HEADPHONES] = 10,
[SND_DEVICE_OUT_VOICE_SPEAKER_AND_VOICE_ANC_HEADSET] = 10,
@@ -982,6 +984,7 @@
{TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_SPEAKER_2_WSA)},
{TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_SPEAKER_2_VBAT)},
{TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_HEADPHONES)},
+ {TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_HEADSET)},
{TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_LINE)},
{TO_NAME_INDEX(SND_DEVICE_OUT_HDMI)},
{TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_AND_HDMI)},
@@ -2089,6 +2092,7 @@
hw_interface_table[SND_DEVICE_OUT_VOICE_SPEAKER_2] = strdup("SLIMBUS_0_RX");
hw_interface_table[SND_DEVICE_OUT_VOICE_SPEAKER_2_VBAT] = strdup("SLIMBUS_0_RX");
hw_interface_table[SND_DEVICE_OUT_VOICE_HEADPHONES] = strdup("SLIMBUS_6_RX");
+ hw_interface_table[SND_DEVICE_OUT_VOICE_HEADSET] = strdup("SLIMBUS_6_RX");
hw_interface_table[SND_DEVICE_OUT_VOICE_MUSIC_TX] = strdup("VOICE_PLAYBACK_TX");
hw_interface_table[SND_DEVICE_OUT_VOICE_LINE] = strdup("SLIMBUS_6_RX");
hw_interface_table[SND_DEVICE_OUT_HDMI] = strdup("HDMI");
@@ -3467,14 +3471,14 @@
strdup("SLIM_6_RX SampleRate");
}
- //TODO: enable CONCURRENT_CAPTURE_ENABLED flag only if separate backend is defined
+ //NOTE: enable CONCURRENT_CAPTURE_ENABLED flag only if separate backend is defined
//for headset-mic. This is to capture separate data from headset-mic and handset-mic.
- if(audio_extn_is_concurrent_capture_enabled())
+ if(audio_extn_is_concurrent_capture_enabled()) {
my_data->current_backend_cfg[HEADSET_TX_BACKEND].bitwidth_mixer_ctl =
- strdup("SLIM_1_TX Format");
- else
+ strdup("SLIM_1_TX Format");
my_data->current_backend_cfg[HEADSET_TX_BACKEND].samplerate_mixer_ctl =
- strdup("SLIM_1_TX SampleRate");
+ strdup("SLIM_1_TX SampleRate");
+ }
}
my_data->current_backend_cfg[USB_AUDIO_TX_BACKEND].bitwidth_mixer_ctl =
@@ -5577,6 +5581,10 @@
snd_device = SND_DEVICE_OUT_VOICE_ANC_FB_HEADSET;
else
snd_device = SND_DEVICE_OUT_VOICE_ANC_HEADSET;
+ } else if (audio_extn_is_concurrent_capture_enabled() &&
+ (devices & AUDIO_DEVICE_OUT_WIRED_HEADSET)) {
+ //Separate backend is added for headset-mic as part of concurrent capture
+ snd_device = SND_DEVICE_OUT_VOICE_HEADSET;
} else {
snd_device = SND_DEVICE_OUT_VOICE_HEADPHONES;
}
diff --git a/hal/msm8974/platform.h b/hal/msm8974/platform.h
index c23ea6d..fba1077 100644
--- a/hal/msm8974/platform.h
+++ b/hal/msm8974/platform.h
@@ -106,6 +106,7 @@
SND_DEVICE_OUT_VOICE_SPEAKER_2,
SND_DEVICE_OUT_VOICE_SPEAKER_2_VBAT,
SND_DEVICE_OUT_VOICE_HEADPHONES,
+ SND_DEVICE_OUT_VOICE_HEADSET,
SND_DEVICE_OUT_VOICE_LINE,
SND_DEVICE_OUT_HDMI,
SND_DEVICE_OUT_SPEAKER_AND_HDMI,
diff --git a/hal/voice.c b/hal/voice.c
index b0b75e5..729ab27 100644
--- a/hal/voice.c
+++ b/hal/voice.c
@@ -73,6 +73,7 @@
strlcpy(mixer_path, "sidetone-handset", MIXER_PATH_MAX_LENGTH);
break;
case SND_DEVICE_OUT_VOICE_HEADPHONES:
+ case SND_DEVICE_OUT_VOICE_HEADSET:
case SND_DEVICE_OUT_VOICE_ANC_HEADSET:
case SND_DEVICE_OUT_VOICE_ANC_FB_HEADSET:
is_sidetone_dev = true;