Merge "hal: Changes in HAL to load the correct mixer file"
diff --git a/hal/msm8916/hw_info.c b/hal/msm8916/hw_info.c
index 5fb5606..69c9341 100644
--- a/hal/msm8916/hw_info.c
+++ b/hal/msm8916/hw_info.c
@@ -234,6 +234,12 @@
hw_info->snd_devices = NULL;
hw_info->num_snd_devices = 0;
strlcpy(hw_info->dev_extn, "", sizeof(hw_info->dev_extn));
+ } else if (!strcmp(snd_card_name, "msm8952-skum-snd-card")) {
+ strlcpy(hw_info->type, "", sizeof(hw_info->type));
+ strlcpy(hw_info->name, "msm8952", sizeof(hw_info->name));
+ hw_info->snd_devices = NULL;
+ hw_info->num_snd_devices = 0;
+ strlcpy(hw_info->dev_extn, "", sizeof(hw_info->dev_extn));
} else {
ALOGW("%s: Not an 8x16/8939/8909/8952 device", __func__);
}
diff --git a/hal/msm8916/platform.c b/hal/msm8916/platform.c
index 1ebff09..6014b09 100644
--- a/hal/msm8916/platform.c
+++ b/hal/msm8916/platform.c
@@ -50,6 +50,7 @@
#define MIXER_XML_PATH_SKUC "/system/etc/mixer_paths_skuc.xml"
#define MIXER_XML_PATH_SKUE "/system/etc/mixer_paths_skue.xml"
#define MIXER_XML_PATH_SKUL "/system/etc/mixer_paths_skul.xml"
+#define MIXER_XML_PATH_SKUM "/system/etc/mixer_paths_qrd_skum.xml"
#define MIXER_XML_PATH_AUXPCM "/system/etc/mixer_paths_auxpcm.xml"
#define MIXER_XML_PATH_AUXPCM "/system/etc/mixer_paths_auxpcm.xml"
#define MIXER_XML_PATH_I2S "/system/etc/mixer_paths_i2s.xml"
@@ -209,6 +210,14 @@
bool edid_valid;
};
+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,
DEEP_BUFFER_PCM_DEVICE},
@@ -676,6 +685,32 @@
#define DEEP_BUFFER_PLATFORM_DELAY (29*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",
+ sizeof("msm8939-tapan-snd-card")) ||
+ !strncmp(snd_card_name, "msm8939-tapan9302-snd-card",
+ sizeof("msm8939-tapan9302-snd-card"))||
+ !strncmp(snd_card_name, "msm8939-tomtom9330-snd-card",
+ sizeof("msm8939-tomtom9330-snd-card"))) {
+ ALOGI("%s: snd_card_name: %s",__func__,snd_card_name);
+ is_external_codec = true;
+ }
+}
static void query_platform(const char *snd_card_name,
char *mixer_xml_path)
{
@@ -811,6 +846,13 @@
msm_device_to_be_id = msm_device_to_be_id_external_codec;
msm_be_id_array_len =
sizeof(msm_device_to_be_id_external_codec) / sizeof(msm_device_to_be_id_external_codec[0]);
+ } else if (!strncmp(snd_card_name, "msm8952-skum-snd-card",
+ sizeof("msm8952-skum-snd-card"))) {
+ strlcpy(mixer_xml_path, MIXER_XML_PATH_SKUM,
+ sizeof(MIXER_XML_PATH_SKUM));
+ msm_device_to_be_id = msm_device_to_be_id_internal_codec;
+ msm_be_id_array_len =
+ sizeof(msm_device_to_be_id_internal_codec) / sizeof(msm_device_to_be_id_internal_codec[0]);
} else {
strlcpy(mixer_xml_path, MIXER_XML_PATH,
@@ -1193,6 +1235,7 @@
return NULL;
}
adev->snd_card = snd_card_num;
+ update_codec_type(snd_card_name);
ALOGD("%s: Opened sound card:%d", __func__, snd_card_num);
break;
}
@@ -1457,11 +1500,19 @@
int platform_get_pcm_device_id(audio_usecase_t usecase, int device_type)
{
- int device_id;
- if (device_type == PCM_PLAYBACK)
- device_id = pcm_device_table[usecase][0];
- else
- device_id = pcm_device_table[usecase][1];
+ 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];
+ }
return device_id;
}
diff --git a/hal/msm8916/platform.h b/hal/msm8916/platform.h
index 7e87a3c..5375f60 100644
--- a/hal/msm8916/platform.h
+++ b/hal/msm8916/platform.h
@@ -244,6 +244,7 @@
#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 VOWLAN_CALL_PCM_DEVICE 16
#define AFE_PROXY_PLAYBACK_PCM_DEVICE 7
diff --git a/post_proc/bass_boost.h b/post_proc/bass_boost.h
index 14d6c97..8bf51d3 100644
--- a/post_proc/bass_boost.h
+++ b/post_proc/bass_boost.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2013-2015, The Linux Foundation. All rights reserved.
* Not a Contribution.
*
* Copyright (C) 2013 The Android Open Source Project