hal: Add support for QCHAT call
Define PCM device IDs and mixer controls for
QCHAT call for both internal and external
codec target.
CRs-Fixed: 1033324
Change-Id: I6ee6ce04e076377d31b9182905d28d4ea46ba229
diff --git a/configs/msm8937/audio_platform_info_extcodec.xml b/configs/msm8937/audio_platform_info_extcodec.xml
index 1fceb8e..fa38c4f 100644
--- a/configs/msm8937/audio_platform_info_extcodec.xml
+++ b/configs/msm8937/audio_platform_info_extcodec.xml
@@ -48,6 +48,8 @@
<usecase name="USECASE_VOICEMMODE2_CALL" type="in" id="36"/>
<usecase name="USECASE_VOICEMMODE2_CALL" type="out" id="36"/>
<usecase name="USECASE_AUDIO_SPKR_CALIB_TX" type="in" id="37"/>
+ <usecase name="USECASE_QCHAT_CALL" type="in" id="42"/>
+ <usecase name="USECASE_QCHAT_CALL" type="out" id="42"/>
</pcm_ids>
<config_params>
<param key="spkr_1_tz_name" value="wsatz.11"/>
diff --git a/configs/msm8937/mixer_paths_wcd9326.xml b/configs/msm8937/mixer_paths_wcd9326.xml
index 963dfea..8bd3ef6 100644
--- a/configs/msm8937/mixer_paths_wcd9326.xml
+++ b/configs/msm8937/mixer_paths_wcd9326.xml
@@ -455,6 +455,9 @@
<ctl name="QCHAT_Tx Mixer SLIM_0_TX_QCHAT" value="0" />
<ctl name="INTERNAL_BT_SCO_RX_Voice Mixer QCHAT" value="0" />
<ctl name="QCHAT_Tx Mixer INTERNAL_BT_SCO_TX_QCHAT" value="0" />
+ <ctl name="HDMI_RX_Voice Mixer QCHAT" value="0" />
+ <ctl name="AFE_PCM_RX_Voice Mixer QCHAT" value="0" />
+ <ctl name="QCHAT_Tx Mixer AFE_PCM_TX_QCHAT" value="0" />
<!-- QCHAT end-->
<!-- VoWLAN start -->
@@ -1567,6 +1570,46 @@
<path name="compress-voip-call"/>
</path>
+ <path name="qchat-call">
+ <ctl name="SLIM_0_RX_Voice Mixer QCHAT" value="1" />
+ <ctl name="QCHAT_Tx Mixer SLIM_0_TX_QCHAT" value="1" />
+ </path>
+
+ <path name="qchat-call bt-sco">
+ <ctl name="INTERNAL_BT_SCO_RX_Voice Mixer QCHAT" value="1" />
+ <ctl name="QCHAT_Tx Mixer INTERNAL_BT_SCO_TX_QCHAT" value="1" />
+ </path>
+
+ <path name="qchat-call bt-sco-wb">
+ <ctl name="Internal BTSCO SampleRate" value="BTSCO_RATE_16KHZ" />
+ <path name="qchat-call bt-sco" />
+ </path>
+
+ <path name="qchat-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer QCHAT" value="1" />
+ <ctl name="QCHAT_Tx Mixer SLIM_0_TX_QCHAT" value="1" />
+ </path>
+
+ <path name="qchat-call hdmi">
+ <ctl name="HDMI_RX_Voice Mixer QCHAT" value="1" />
+ <ctl name="QCHAT_Tx Mixer SLIM_0_TX_QCHAT" value="1" />
+ </path>
+
+ <path name="qchat-call afe-proxy">
+ <ctl name="AFE_PCM_RX_Voice Mixer QCHAT" value="1" />
+ <ctl name="QCHAT_Tx Mixer AFE_PCM_TX_QCHAT" value="1" />
+ </path>
+
+ <path name="qchat-call usb-headphones">
+ <ctl name="AFE_PCM_RX_Voice Mixer QCHAT" value="1" />
+ <ctl name="QCHAT_Tx Mixer AFE_PCM_TX_QCHAT" value="1" />
+ </path>
+
+ <path name="qchat-call vbat-voice-speaker">
+ <path name="echo-reference vbat-speaker-mono" />
+ <path name="qchat-call"/>
+ </path>
+
<path name="vowlan-call">
<ctl name="SLIM_0_RX_Voice Mixer VoWLAN" value="1" />
<ctl name="VoWLAN_Tx Mixer SLIM_0_TX_VoWLAN" value="1" />
diff --git a/configs/msm8937/mixer_paths_wcd9335.xml b/configs/msm8937/mixer_paths_wcd9335.xml
index e579d40..95e1f41 100644
--- a/configs/msm8937/mixer_paths_wcd9335.xml
+++ b/configs/msm8937/mixer_paths_wcd9335.xml
@@ -460,6 +460,9 @@
<ctl name="QCHAT_Tx Mixer SLIM_0_TX_QCHAT" value="0" />
<ctl name="INTERNAL_BT_SCO_RX_Voice Mixer QCHAT" value="0" />
<ctl name="QCHAT_Tx Mixer INTERNAL_BT_SCO_TX_QCHAT" value="0" />
+ <ctl name="HDMI_RX_Voice Mixer QCHAT" value="0" />
+ <ctl name="AFE_PCM_RX_Voice Mixer QCHAT" value="0" />
+ <ctl name="QCHAT_Tx Mixer AFE_PCM_TX_QCHAT" value="0" />
<!-- QCHAT end-->
<!-- VoWLAN start -->
@@ -1586,6 +1589,46 @@
<path name="compress-voip-call"/>
</path>
+ <path name="qchat-call">
+ <ctl name="SLIM_0_RX_Voice Mixer QCHAT" value="1" />
+ <ctl name="QCHAT_Tx Mixer SLIM_0_TX_QCHAT" value="1" />
+ </path>
+
+ <path name="qchat-call bt-sco">
+ <ctl name="INTERNAL_BT_SCO_RX_Voice Mixer QCHAT" value="1" />
+ <ctl name="QCHAT_Tx Mixer INTERNAL_BT_SCO_TX_QCHAT" value="1" />
+ </path>
+
+ <path name="qchat-call bt-sco-wb">
+ <ctl name="Internal BTSCO SampleRate" value="BTSCO_RATE_16KHZ" />
+ <path name="qchat-call bt-sco" />
+ </path>
+
+ <path name="qchat-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer QCHAT" value="1" />
+ <ctl name="QCHAT_Tx Mixer SLIM_0_TX_QCHAT" value="1" />
+ </path>
+
+ <path name="qchat-call hdmi">
+ <ctl name="HDMI_RX_Voice Mixer QCHAT" value="1" />
+ <ctl name="QCHAT_Tx Mixer SLIM_0_TX_QCHAT" value="1" />
+ </path>
+
+ <path name="qchat-call afe-proxy">
+ <ctl name="AFE_PCM_RX_Voice Mixer QCHAT" value="1" />
+ <ctl name="QCHAT_Tx Mixer AFE_PCM_TX_QCHAT" value="1" />
+ </path>
+
+ <path name="qchat-call usb-headphones">
+ <ctl name="AFE_PCM_RX_Voice Mixer QCHAT" value="1" />
+ <ctl name="QCHAT_Tx Mixer AFE_PCM_TX_QCHAT" value="1" />
+ </path>
+
+ <path name="qchat-call vbat-voice-speaker">
+ <path name="echo-reference vbat-speaker-mono" />
+ <path name="qchat-call"/>
+ </path>
+
<path name="vowlan-call">
<ctl name="SLIM_0_RX_Voice Mixer VoWLAN" value="1" />
<ctl name="VoWLAN_Tx Mixer SLIM_0_TX_VoWLAN" value="1" />
diff --git a/configs/msm8953/audio_platform_info_extcodec.xml b/configs/msm8953/audio_platform_info_extcodec.xml
index d06c6be..cf68190 100644
--- a/configs/msm8953/audio_platform_info_extcodec.xml
+++ b/configs/msm8953/audio_platform_info_extcodec.xml
@@ -47,6 +47,8 @@
<usecase name="USECASE_VOICEMMODE1_CALL" type="out" id="35"/>
<usecase name="USECASE_VOICEMMODE2_CALL" type="in" id="36"/>
<usecase name="USECASE_VOICEMMODE2_CALL" type="out" id="36"/>
+ <usecase name="USECASE_QCHAT_CALL" type="in" id="42"/>
+ <usecase name="USECASE_QCHAT_CALL" type="out" id="42"/>
</pcm_ids>
<config_params>
<param key="native_audio_mode" value="src"/>
diff --git a/configs/msm8953/mixer_paths_wcd9326.xml b/configs/msm8953/mixer_paths_wcd9326.xml
index 836610b..bf974cb 100644
--- a/configs/msm8953/mixer_paths_wcd9326.xml
+++ b/configs/msm8953/mixer_paths_wcd9326.xml
@@ -458,6 +458,9 @@
<ctl name="QCHAT_Tx Mixer SLIM_0_TX_QCHAT" value="0" />
<ctl name="INTERNAL_BT_SCO_RX_Voice Mixer QCHAT" value="0" />
<ctl name="QCHAT_Tx Mixer INTERNAL_BT_SCO_TX_QCHAT" value="0" />
+ <ctl name="HDMI_RX_Voice Mixer QCHAT" value="0" />
+ <ctl name="AFE_PCM_RX_Voice Mixer QCHAT" value="0" />
+ <ctl name="QCHAT_Tx Mixer AFE_PCM_TX_QCHAT" value="0" />
<!-- QCHAT end-->
<!-- VoWLAN start -->
@@ -1570,6 +1573,46 @@
<path name="compress-voip-call"/>
</path>
+ <path name="qchat-call">
+ <ctl name="SLIM_0_RX_Voice Mixer QCHAT" value="1" />
+ <ctl name="QCHAT_Tx Mixer SLIM_0_TX_QCHAT" value="1" />
+ </path>
+
+ <path name="qchat-call bt-sco">
+ <ctl name="INTERNAL_BT_SCO_RX_Voice Mixer QCHAT" value="1" />
+ <ctl name="QCHAT_Tx Mixer INTERNAL_BT_SCO_TX_QCHAT" value="1" />
+ </path>
+
+ <path name="qchat-call bt-sco-wb">
+ <ctl name="Internal BTSCO SampleRate" value="BTSCO_RATE_16KHZ" />
+ <path name="qchat-call bt-sco" />
+ </path>
+
+ <path name="qchat-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer QCHAT" value="1" />
+ <ctl name="QCHAT_Tx Mixer SLIM_0_TX_QCHAT" value="1" />
+ </path>
+
+ <path name="qchat-call hdmi">
+ <ctl name="HDMI_RX_Voice Mixer QCHAT" value="1" />
+ <ctl name="QCHAT_Tx Mixer SLIM_0_TX_QCHAT" value="1" />
+ </path>
+
+ <path name="qchat-call afe-proxy">
+ <ctl name="AFE_PCM_RX_Voice Mixer QCHAT" value="1" />
+ <ctl name="QCHAT_Tx Mixer AFE_PCM_TX_QCHAT" value="1" />
+ </path>
+
+ <path name="qchat-call usb-headphones">
+ <ctl name="AFE_PCM_RX_Voice Mixer QCHAT" value="1" />
+ <ctl name="QCHAT_Tx Mixer AFE_PCM_TX_QCHAT" value="1" />
+ </path>
+
+ <path name="qchat-call vbat-voice-speaker">
+ <path name="echo-reference vbat-speaker-mono" />
+ <path name="qchat-call"/>
+ </path>
+
<path name="vowlan-call">
<ctl name="SLIM_0_RX_Voice Mixer VoWLAN" value="1" />
<ctl name="VoWLAN_Tx Mixer SLIM_0_TX_VoWLAN" value="1" />
diff --git a/configs/msm8953/mixer_paths_wcd9335.xml b/configs/msm8953/mixer_paths_wcd9335.xml
index 657198f..1eb65b9 100644
--- a/configs/msm8953/mixer_paths_wcd9335.xml
+++ b/configs/msm8953/mixer_paths_wcd9335.xml
@@ -462,6 +462,9 @@
<ctl name="QCHAT_Tx Mixer SLIM_0_TX_QCHAT" value="0" />
<ctl name="INTERNAL_BT_SCO_RX_Voice Mixer QCHAT" value="0" />
<ctl name="QCHAT_Tx Mixer INTERNAL_BT_SCO_TX_QCHAT" value="0" />
+ <ctl name="HDMI_RX_Voice Mixer QCHAT" value="0" />
+ <ctl name="AFE_PCM_RX_Voice Mixer QCHAT" value="0" />
+ <ctl name="QCHAT_Tx Mixer AFE_PCM_TX_QCHAT" value="0" />
<!-- QCHAT end-->
<!-- VoWLAN start -->
@@ -1588,6 +1591,46 @@
<path name="compress-voip-call"/>
</path>
+ <path name="qchat-call">
+ <ctl name="SLIM_0_RX_Voice Mixer QCHAT" value="1" />
+ <ctl name="QCHAT_Tx Mixer SLIM_0_TX_QCHAT" value="1" />
+ </path>
+
+ <path name="qchat-call bt-sco">
+ <ctl name="INTERNAL_BT_SCO_RX_Voice Mixer QCHAT" value="1" />
+ <ctl name="QCHAT_Tx Mixer INTERNAL_BT_SCO_TX_QCHAT" value="1" />
+ </path>
+
+ <path name="qchat-call bt-sco-wb">
+ <ctl name="Internal BTSCO SampleRate" value="BTSCO_RATE_16KHZ" />
+ <path name="qchat-call bt-sco" />
+ </path>
+
+ <path name="qchat-call headphones">
+ <ctl name="SLIM_6_RX_Voice Mixer QCHAT" value="1" />
+ <ctl name="QCHAT_Tx Mixer SLIM_0_TX_QCHAT" value="1" />
+ </path>
+
+ <path name="qchat-call hdmi">
+ <ctl name="HDMI_RX_Voice Mixer QCHAT" value="1" />
+ <ctl name="QCHAT_Tx Mixer SLIM_0_TX_QCHAT" value="1" />
+ </path>
+
+ <path name="qchat-call afe-proxy">
+ <ctl name="AFE_PCM_RX_Voice Mixer QCHAT" value="1" />
+ <ctl name="QCHAT_Tx Mixer AFE_PCM_TX_QCHAT" value="1" />
+ </path>
+
+ <path name="qchat-call usb-headphones">
+ <ctl name="AFE_PCM_RX_Voice Mixer QCHAT" value="1" />
+ <ctl name="QCHAT_Tx Mixer AFE_PCM_TX_QCHAT" value="1" />
+ </path>
+
+ <path name="qchat-call vbat-voice-speaker">
+ <path name="echo-reference vbat-speaker-mono" />
+ <path name="qchat-call"/>
+ </path>
+
<path name="vowlan-call">
<ctl name="SLIM_0_RX_Voice Mixer VoWLAN" value="1" />
<ctl name="VoWLAN_Tx Mixer SLIM_0_TX_VoWLAN" value="1" />
diff --git a/hal/msm8916/platform.c b/hal/msm8916/platform.c
index 64475a3..90b98ef 100644
--- a/hal/msm8916/platform.c
+++ b/hal/msm8916/platform.c
@@ -254,12 +254,6 @@
};
static bool is_external_codec = false;
-static const int pcm_device_table_of_ext_codec[AUDIO_USECASE_MAX][2] = {
- [USECASE_QCHAT_CALL] = {QCHAT_CALL_PCM_DEVICE_OF_EXT_CODEC, QCHAT_CALL_PCM_DEVICE_OF_EXT_CODEC}
-};
-
-/* List of use cases that has different PCM device ID's for internal and external codecs */
-static const int misc_usecase[AUDIO_USECASE_MAX] = { USECASE_QCHAT_CALL };
int pcm_device_table[AUDIO_USECASE_MAX][2] = {
[USECASE_AUDIO_PLAYBACK_DEEP_BUFFER] = {DEEP_BUFFER_PCM_DEVICE,
@@ -774,20 +768,6 @@
#define PCM_OFFLOAD_PLATFORM_DELAY (30*1000LL)
#define LOW_LATENCY_PLATFORM_DELAY (13*1000LL)
-static bool is_misc_usecase(audio_usecase_t usecase) {
- bool ret = false;
- int i;
-
- for (i = 0; i < AUDIO_USECASE_MAX; i++) {
- if(usecase == misc_usecase[i]) {
- ret = true;
- break;
- }
- }
- return ret;
-}
-
-
static void update_codec_type(const char *snd_card_name) {
if (!strncmp(snd_card_name, "msm8939-tapan-snd-card",
@@ -2097,17 +2077,10 @@
{
int device_id = -1;
- if (is_external_codec && is_misc_usecase(usecase)) {
- if (device_type == PCM_PLAYBACK)
- device_id = pcm_device_table_of_ext_codec[usecase][0];
- else
- device_id = pcm_device_table_of_ext_codec[usecase][1];
- } else {
- if (device_type == PCM_PLAYBACK)
- device_id = pcm_device_table[usecase][0];
- else
- device_id = pcm_device_table[usecase][1];
- }
+ if (device_type == PCM_PLAYBACK)
+ device_id = pcm_device_table[usecase][0];
+ else
+ device_id = pcm_device_table[usecase][1];
return device_id;
}
diff --git a/hal/msm8916/platform.h b/hal/msm8916/platform.h
index 7c877b5..756c749 100644
--- a/hal/msm8916/platform.h
+++ b/hal/msm8916/platform.h
@@ -302,8 +302,7 @@
#define VOICE_CALL_PCM_DEVICE 2
#define VOICE2_CALL_PCM_DEVICE 13
#define VOLTE_CALL_PCM_DEVICE 15
-#define QCHAT_CALL_PCM_DEVICE 26
-#define QCHAT_CALL_PCM_DEVICE_OF_EXT_CODEC 28
+#define QCHAT_CALL_PCM_DEVICE 37
#define VOWLAN_CALL_PCM_DEVICE 16
#define AFE_PROXY_PLAYBACK_PCM_DEVICE 7