summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--hal/Android.mk4
-rw-r--r--hal/audio_extn/hfp.c4
-rw-r--r--hal/msm8974/platform.c11
-rw-r--r--hal/msm8974/platform.h20
4 files changed, 37 insertions, 2 deletions
diff --git a/hal/Android.mk b/hal/Android.mk
index 0bb29b59..a51fac70 100644
--- a/hal/Android.mk
+++ b/hal/Android.mk
@@ -64,6 +64,10 @@ ifeq ($(strip $(AUDIO_FEATURE_ENABLED_HFP)),true)
LOCAL_SRC_FILES += audio_extn/hfp.c
endif
+ifeq ($(strip $(AUDIO_FEATURE_SUPPORTED_EXTERNAL_BT)),true)
+ LOCAL_CFLAGS += -DEXTERNAL_BT_SUPPORTED
+endif
+
ifeq ($(strip $(AUDIO_FEATURE_NO_AUDIO_OUT)),true)
LOCAL_CFLAGS += -DNO_AUDIO_OUT
endif
diff --git a/hal/audio_extn/hfp.c b/hal/audio_extn/hfp.c
index a1087309..bfeb6e74 100644
--- a/hal/audio_extn/hfp.c
+++ b/hal/audio_extn/hfp.c
@@ -71,7 +71,11 @@ static int32_t hfp_set_volume(struct audio_device *adev, float value)
{
int32_t vol, ret = 0;
struct mixer_ctl *ctl;
+#ifdef EXTERNAL_BT_SUPPORTED
+ const char *mixer_ctl_name = "PRI AUXPCM LOOPBACK Volume";
+#else
const char *mixer_ctl_name = "Internal HFP RX Volume";
+#endif
ALOGV("%s: entry", __func__);
ALOGD("%s: (%f)\n", __func__, value);
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 45beae73..81363fb4 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -29,6 +29,7 @@
#include <linux/msm_audio.h>
#define MIXER_XML_PATH "/system/etc/mixer_paths.xml"
+#define MIXER_XML_PATH_WCD9330 "/system/etc/mixer_paths_wcd9330.xml"
#define LIB_ACDB_LOADER "libacdbloader.so"
#define AUDIO_DATA_BLOCK_MIXER_CTL "HDMI EDID"
#define CVD_VERSION_MIXER_CTL "CVD Version"
@@ -943,7 +944,15 @@ void *platform_init(struct audio_device *adev)
ALOGD("%s: snd_card_name: %s", __func__, snd_card_name);
- adev->audio_route = audio_route_init(snd_card_num, MIXER_XML_PATH);
+ if (!strncmp(snd_card_name, "msm8226-tomtom-snd-card",
+ sizeof("msm8226-tomtom-snd-card"))) {
+ ALOGD("%s: Call MIXER_XML_PATH_WCD9330", __func__);
+ adev->audio_route = audio_route_init(snd_card_num,
+ MIXER_XML_PATH_WCD9330);
+ } else {
+ adev->audio_route = audio_route_init(snd_card_num, MIXER_XML_PATH);
+ }
+
if (!adev->audio_route) {
ALOGE("%s: Failed to init audio route controls, aborting.", __func__);
goto init_failed;
diff --git a/hal/msm8974/platform.h b/hal/msm8974/platform.h
index 1c067267..b471634d 100644
--- a/hal/msm8974/platform.h
+++ b/hal/msm8974/platform.h
@@ -203,18 +203,36 @@ enum {
#define LOWLATENCY_PCM_DEVICE 15
#define VOICE_VSID 0x10C01000
+#ifdef PLATFORM_MSM8x26
+#define VOICE_CALL_PCM_DEVICE 2
+#define VOICE2_CALL_PCM_DEVICE 14
+#define VOLTE_CALL_PCM_DEVICE 17
+#define QCHAT_CALL_PCM_DEVICE 18
+#define VOWLAN_CALL_PCM_DEVICE 30
+#elif PLATFORM_MSM8084
+#define VOICE_CALL_PCM_DEVICE 20
+#define VOICE2_CALL_PCM_DEVICE 25
+#define VOLTE_CALL_PCM_DEVICE 21
+#define QCHAT_CALL_PCM_DEVICE 33
+#define VOWLAN_CALL_PCM_DEVICE -1
+#else
#define VOICE_CALL_PCM_DEVICE 2
#define VOICE2_CALL_PCM_DEVICE 22
#define VOLTE_CALL_PCM_DEVICE 14
#define QCHAT_CALL_PCM_DEVICE 20
#define VOWLAN_CALL_PCM_DEVICE 36
+#endif
#define AFE_PROXY_PLAYBACK_PCM_DEVICE 7
#define AFE_PROXY_RECORD_PCM_DEVICE 8
#define HFP_PCM_RX 5
#ifdef PLATFORM_MSM8x26
-#define HFP_SCO_RX 28
+#ifdef EXTERNAL_BT_SUPPORTED
+#define HFP_SCO_RX 10 // AUXPCM Hostless
+#else
+#define HFP_SCO_RX 28 // INT_HFP_BT Hostless
+#endif
#define HFP_ASM_RX_TX 29
#else
#define HFP_SCO_RX 23