Merge "hal: Limit multichannel clips >48khz to 48Khz"
diff --git a/hal/msm8916/hw_info.c b/hal/msm8916/hw_info.c
index 69c9341..1a882db 100644
--- a/hal/msm8916/hw_info.c
+++ b/hal/msm8916/hw_info.c
@@ -137,6 +137,11 @@
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, "msm8x16-snd-card-sbc")) {
+ strlcpy(hw_info->type, "sbc", sizeof(hw_info->type));
+ strlcpy(hw_info->name, "msm8x16", sizeof(hw_info->name));
+ hw_info->snd_devices = NULL;
+ hw_info->num_snd_devices = 0;
} else if (!strcmp(snd_card_name, "msm8x16-skuh-snd-card")) {
strlcpy(hw_info->type, "skuh", sizeof(hw_info->type));
strlcpy(hw_info->name, "msm8x16", sizeof(hw_info->name));
@@ -234,6 +239,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, "msm8976-tasha-snd-card")) {
+ strlcpy(hw_info->type, "", sizeof(hw_info->type));
+ strlcpy(hw_info->name, "msm8976", 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 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));
@@ -256,7 +267,8 @@
}
if (strstr(snd_card_name, "msm8x16") || strstr(snd_card_name, "msm8939") ||
- strstr(snd_card_name, "msm8909") || strstr(snd_card_name, "msm8952")) {
+ strstr(snd_card_name, "msm8909") || strstr(snd_card_name, "msm8952") ||
+ strstr(snd_card_name, "msm8976")) {
ALOGV("8x16 - variant soundcard");
update_hardware_info_8x16(hw_info, snd_card_name);
} else {
diff --git a/hal/msm8916/platform.c b/hal/msm8916/platform.c
index 3fd8ad3..ad95710 100644
--- a/hal/msm8916/platform.c
+++ b/hal/msm8916/platform.c
@@ -41,6 +41,7 @@
#define MIXER_XML_PATH "/system/etc/mixer_paths.xml"
#define MIXER_XML_PATH_MTP "/system/etc/mixer_paths_mtp.xml"
+#define MIXER_XML_PATH_SBC "/system/etc/mixer_paths_sbc.xml"
#define MIXER_XML_PATH_MSM8909_PM8916 "/system/etc/mixer_paths_msm8909_pm8916.xml"
#define MIXER_XML_PATH_QRD_SKUH "/system/etc/mixer_paths_qrd_skuh.xml"
#define MIXER_XML_PATH_QRD_SKUI "/system/etc/mixer_paths_qrd_skui.xml"
@@ -56,6 +57,7 @@
#define MIXER_XML_PATH_I2S "/system/etc/mixer_paths_i2s.xml"
#define MIXER_XML_PATH_WCD9306 "/system/etc/mixer_paths_wcd9306.xml"
#define MIXER_XML_PATH_WCD9330 "/system/etc/mixer_paths_wcd9330.xml"
+#define MIXER_XML_PATH_WCD9335 "/system/etc/mixer_paths_wcd9335.xml"
#define PLATFORM_INFO_XML_PATH "/system/etc/audio_platform_info.xml"
#define PLATFORM_INFO_XML_PATH_I2S "/system/etc/audio_platform_info_i2s.xml"
@@ -724,7 +726,10 @@
!strncmp(snd_card_name, "msm8939-tomtom9330-snd-card",
sizeof("msm8939-tomtom9330-snd-card")) ||
!strncmp(snd_card_name, "msm8952-tomtom-snd-card",
- sizeof("msm8952-tomtom-snd-card"))) {
+ sizeof("msm8952-tomtom-snd-card")) ||
+ !strncmp(snd_card_name, "msm8976-tasha-snd-card",
+ sizeof("msm8976-tasha-snd-card")))
+ {
ALOGI("%s: snd_card_name: %s",__func__,snd_card_name);
is_external_codec = true;
}
@@ -741,6 +746,15 @@
msm_be_id_array_len =
sizeof(msm_device_to_be_id_internal_codec) / sizeof(msm_device_to_be_id_internal_codec[0]);
+ } else if (!strncmp(snd_card_name, "msm8x16-snd-card-sbc",
+ sizeof("msm8x16-snd-card-sbc"))) {
+ strlcpy(mixer_xml_path, MIXER_XML_PATH_SBC,
+ sizeof(mixer_xml_path));
+
+ 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 if (!strncmp(snd_card_name, "msm8x16-skuh-snd-card",
sizeof("msm8x16-skuh-snd-card"))) {
strlcpy(mixer_xml_path, MIXER_XML_PATH_QRD_SKUH,
@@ -810,6 +824,15 @@
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, "msm8976-tasha-snd-card",
+ sizeof("msm8976-tasha-snd-card"))) {
+ strlcpy(mixer_xml_path, MIXER_XML_PATH_WCD9335,
+ sizeof(MIXER_XML_PATH_WCD9335));
+ 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, "msm8909-skua-snd-card",
sizeof("msm8909-skua-snd-card"))) {
strlcpy(mixer_xml_path, MIXER_XML_PATH_SKUA,
@@ -2334,8 +2357,9 @@
if (out_device & AUDIO_DEVICE_OUT_SPEAKER)
in_device = AUDIO_DEVICE_IN_BACK_MIC;
if (adev->active_input) {
- if (adev->active_input->enable_aec &&
- adev->active_input->enable_ns) {
+ if (my_data->fluence_type != FLUENCE_NONE &&
+ adev->active_input->enable_aec &&
+ adev->active_input->enable_ns) {
if (in_device & AUDIO_DEVICE_IN_BACK_MIC) {
if (my_data->fluence_in_spkr_mode) {
if (my_data->fluence_type & FLUENCE_QUAD_MIC) {
@@ -2359,7 +2383,8 @@
snd_device = SND_DEVICE_IN_HEADSET_MIC_FLUENCE;
}
platform_set_echo_reference(adev->platform, true);
- } else if (adev->active_input->enable_aec) {
+ } else if (my_data->fluence_type != FLUENCE_NONE &&
+ adev->active_input->enable_aec) {
if (in_device & AUDIO_DEVICE_IN_BACK_MIC) {
if (my_data->fluence_in_spkr_mode) {
if (my_data->fluence_type & FLUENCE_QUAD_MIC) {
@@ -2383,7 +2408,8 @@
snd_device = SND_DEVICE_IN_HEADSET_MIC_FLUENCE;
}
platform_set_echo_reference(adev->platform, true);
- } else if (adev->active_input->enable_ns) {
+ } else if (my_data->fluence_type != FLUENCE_NONE &&
+ adev->active_input->enable_ns) {
if (in_device & AUDIO_DEVICE_IN_BACK_MIC) {
if (my_data->fluence_in_spkr_mode) {
if (my_data->fluence_type & FLUENCE_QUAD_MIC) {
@@ -3338,8 +3364,7 @@
// To have same PCM samples for all channels, the buffer size requires to
// be multiple of (number of channels * bytes per sample)
// For writes to succeed, the buffer must be written at address which is multiple of 32
- // Alignment of 96 satsfies both of the above requirements
- fragment_size = ALIGN(fragment_size, 96);
+ fragment_size = ALIGN(fragment_size, ((bits_per_sample >> 3)* popcount(info->channel_mask) * 32));
ALOGI("PCM offload Fragment size to %d bytes", fragment_size);
return fragment_size;
@@ -3352,10 +3377,13 @@
int ret = 0;
const char *snd_card_name = mixer_get_name(adev->mixer);
+
if (bit_width != adev->cur_codec_backend_bit_width) {
const char * mixer_ctl_name;
if (!strncmp(snd_card_name, "msm8952-tomtom-snd-card",
- sizeof("msm8952-tomtom-snd-card"))) {
+ sizeof("msm8952-tomtom-snd-card")) ||
+ !strncmp(snd_card_name, "msm8976-tasha-snd-card",
+ sizeof("msm8976-tasha-snd-card"))) {
mixer_ctl_name = "SLIM_0_RX Format";
}
else
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index a99eea1..75f07fe 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -3030,15 +3030,14 @@
* info->sample_rate
* (bits_per_sample >> 3)
* popcount(info->channel_mask))/1000;
- // To have same PCM samples for all channels, the buffer size requires to
- // be multiple of (number of channels * bytes per sample)
- // For writes to succeed, the buffer must be written at address which is multiple of 32
- // Alignment of 96 satsfies both of the above requirements
- fragment_size = ALIGN(fragment_size, 96);
if(fragment_size < MIN_PCM_OFFLOAD_FRAGMENT_SIZE)
fragment_size = MIN_PCM_OFFLOAD_FRAGMENT_SIZE;
else if(fragment_size > MAX_PCM_OFFLOAD_FRAGMENT_SIZE)
fragment_size = MAX_PCM_OFFLOAD_FRAGMENT_SIZE;
+ // To have same PCM samples for all channels, the buffer size requires to
+ // be multiple of (number of channels * bytes per sample)
+ // For writes to succeed, the buffer must be written at address which is multiple of 32
+ fragment_size = ALIGN(fragment_size, ((bits_per_sample >> 3)* popcount(info->channel_mask) * 32));
ALOGI("PCM offload Fragment size to %d bytes", fragment_size);
return fragment_size;