Merge "hal: Add separate backend for headset-mic"
diff --git a/configs/msmnile/audio_platform_info.xml b/configs/msmnile/audio_platform_info.xml
index 9761f99..df2f46d 100644
--- a/configs/msmnile/audio_platform_info.xml
+++ b/configs/msmnile/audio_platform_info.xml
@@ -145,6 +145,12 @@
<device name="SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES" backend="headphones" interface="SLIMBUS_6_RX"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_BT_SCO" backend="speaker-and-bt-sco" interface="SLIMBUS_0_RX-and-SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_BT_SCO_WB" backend="speaker-and-bt-sco-wb" interface="SLIMBUS_0_RX-and-SLIMBUS_7_RX"/>
+ <device name="SND_DEVICE_IN_HEADSET_MIC" backend="headset-mic" interface="SLIMBUS_1_TX"/>
+ <device name="SND_DEVICE_IN_HEADSET_MIC_FLUENCE" backend="headset-mic" interface="SLIMBUS_1_TX"/>
+ <device name="SND_DEVICE_IN_VOICE_HEADSET_MIC" backend="headset-mic" interface="SLIMBUS_1_TX"/>
+ <device name="SND_DEVICE_IN_VOICE_TTY_FULL_HEADSET_MIC" backend="headset-mic" interface="SLIMBUS_1_TX"/>
+ <device name="SND_DEVICE_IN_VOICE_TTY_HCO_HEADSET_MIC" backend="headset-mic" interface="SLIMBUS_1_TX"/>
+ <device name="SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC" backend="headset-mic" interface="SLIMBUS_1_TX"/>
</backend_names>
<!-- below values are for ref purpose to OEM, doesn't contain actual hardware info on MTP -->
<microphone_characteristics>
diff --git a/configs/msmnile/mixer_paths_tavil.xml b/configs/msmnile/mixer_paths_tavil.xml
index 6104fbe..a684cc0 100644
--- a/configs/msmnile/mixer_paths_tavil.xml
+++ b/configs/msmnile/mixer_paths_tavil.xml
@@ -1383,6 +1383,10 @@
<ctl name="MultiMedia1 Mixer SLIM_0_TX" value="1" />
</path>
+ <path name="audio-record headset-mic">
+ <ctl name="MultiMedia1 Mixer SLIM_1_TX" value="1" />
+ </path>
+
<path name="audio-record usb-headset-mic">
<ctl name="MultiMedia1 Mixer USB_AUDIO_TX" value="1" />
</path>
@@ -1421,6 +1425,27 @@
<ctl name="MultiMedia17 Mixer SLIM_0_TX" value="1" />
</path>
+ <path name="audio-record-compress2 headset-mic">
+ <ctl name="MultiMedia17 Mixer SLIM_1_TX" value="1" />
+ </path>
+
+ <path name="audio-record-compress2 usb-headset-mic">
+ <ctl name="MultiMedia17 Mixer USB_AUDIO_TX" value="1" />
+ </path>
+
+ <path name="audio-record-compress2 bt-sco">
+ <ctl name="MultiMedia17 Mixer SLIM_7_TX" value="1" />
+ </path>
+
+ <path name="audio-record-compress2 bt-sco-wb">
+ <ctl name="BT SampleRate" value="KHZ_16" />
+ <path name="audio-record-compress2 bt-sco" />
+ </path>
+
+ <path name="audio-record-compress2">
+ <ctl name="MultiMedia17 Mixer SLIM_0_TX" value="1" />
+ </path>
+
<path name="audio-record-compress2 usb-headset-mic">
<ctl name="MultiMedia17 Mixer USB_AUDIO_TX" value="1" />
</path>
@@ -1817,12 +1842,12 @@
</path>
<path name="amic2">
- <ctl name="AIF1_CAP Mixer SLIM TX0" value="1"/>
- <ctl name="SLIM_0_TX Channels" value="One" />
- <ctl name="CDC_IF TX0 MUX" value="DEC0" />
- <ctl name="ADC MUX0" value="AMIC" />
- <ctl name="AMIC MUX0" value="ADC2" />
- <ctl name="IIR0 INP0 MUX" value="DEC0" />
+ <ctl name="AIF3_CAP Mixer SLIM TX1" value="1"/>
+ <ctl name="SLIM_1_TX Channels" value="One" />
+ <ctl name="CDC_IF TX1 MUX" value="DEC1" />
+ <ctl name="ADC MUX1" value="AMIC" />
+ <ctl name="AMIC MUX1" value="ADC2" />
+ <ctl name="IIR0 INP0 MUX" value="DEC1" />
</path>
<!-- For Tavil, DMIC numbered from 0 to 5 -->
diff --git a/hal/Android.mk b/hal/Android.mk
index 3f82b97..eac6636 100644
--- a/hal/Android.mk
+++ b/hal/Android.mk
@@ -333,6 +333,10 @@
LOCAL_SRC_FILES += audio_extn/compress_in.c
endif
+ifeq ($(strip $(AUDIO_FEATURE_ENABLED_CONCURRENT_CAPTURE)),true)
+ LOCAL_CFLAGS += -DCONCURRENT_CAPTURE_ENABLED
+endif
+
ifeq ($(strip $(BOARD_SUPPORTS_QAHW)),true)
LOCAL_CFLAGS += -DAUDIO_HW_EXTN_API_ENABLED
LOCAL_SRC_FILES += audio_hw_extn_api.c
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 1ebffba..9eb1dc2 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -2959,6 +2959,14 @@
strdup("SLIM_6_RX Format");
my_data->current_backend_cfg[HEADPHONE_BACKEND].samplerate_mixer_ctl =
strdup("SLIM_6_RX SampleRate");
+ //TODO: 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.
+#ifdef CONCURRENT_CAPTURE_ENABLED
+ my_data->current_backend_cfg[HEADSET_TX_BACKEND].bitwidth_mixer_ctl =
+ strdup("SLIM_1_RX Format");
+ my_data->current_backend_cfg[HEADSET_TX_BACKEND].samplerate_mixer_ctl =
+ strdup("SLIM_1_RX SampleRate");
+#endif
}
my_data->current_backend_cfg[USB_AUDIO_TX_BACKEND].bitwidth_mixer_ctl =
@@ -3876,6 +3884,8 @@
port = HDMI_TX_BACKEND;
else if (strcmp(backend_tag_table[snd_device], "hdmi-arc-in") == 0)
port = HDMI_ARC_TX_BACKEND;
+ else if (strcmp(backend_tag_table[snd_device], "headset-mic") == 0)
+ port = HEADSET_TX_BACKEND;
}
} else {
ALOGW("%s:napb: Invalid device - %d ", __func__, snd_device);
diff --git a/hal/msm8974/platform.h b/hal/msm8974/platform.h
index 78470fd..8aa3e3c 100644
--- a/hal/msm8974/platform.h
+++ b/hal/msm8974/platform.h
@@ -67,10 +67,15 @@
* All these devices are handled by the internal HW codec. We can
* enable any one of these devices at any time
*/
+#ifdef CONCURRENT_CAPTURE_ENABLED
+#define AUDIO_DEVICE_IN_ALL_CODEC_BACKEND \
+ (AUDIO_DEVICE_IN_BUILTIN_MIC | AUDIO_DEVICE_IN_BACK_MIC | \
+ AUDIO_DEVICE_IN_VOICE_CALL) & ~AUDIO_DEVICE_BIT_IN
+#else
#define AUDIO_DEVICE_IN_ALL_CODEC_BACKEND \
(AUDIO_DEVICE_IN_BUILTIN_MIC | AUDIO_DEVICE_IN_BACK_MIC | \
AUDIO_DEVICE_IN_WIRED_HEADSET | AUDIO_DEVICE_IN_VOICE_CALL) & ~AUDIO_DEVICE_BIT_IN
-
+#endif
/* Sound devices specific to the platform
* The DEVICE_OUT_* and DEVICE_IN_* should be mapped to these sound
* devices to enable corresponding mixer paths
@@ -306,6 +311,7 @@
SPDIF_TX_BACKEND,
HDMI_TX_BACKEND,
HDMI_ARC_TX_BACKEND,
+ HEADSET_TX_BACKEND,
MAX_CODEC_BACKENDS
};