hal: Avoid configurable mono for target with single speaker
Do not allow configurable mono speaker assignment for devices with
one speaker. For msm8998, avoid it for fluid variants.Also, fix typo
in selection of VOICE_SPEAKER_2_PROTECTED device during send_voice_cal.
CRs-Fixed: 1082853
Change-Id: I7124c7ca7424feea1f2e54bcb6bc581313df6259
diff --git a/hal/msm8916/hw_info.c b/hal/msm8916/hw_info.c
index 35de9e3..8b3056b 100644
--- a/hal/msm8916/hw_info.c
+++ b/hal/msm8916/hw_info.c
@@ -48,6 +48,7 @@
char dev_extn[HW_INFO_ARRAY_MAX_SIZE];
snd_device_t *snd_devices;
bool is_wsa_combo_suppported;
+ bool is_stereo_spkr;
};
#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
@@ -187,6 +188,7 @@
strlcpy(hw_info->dev_extn, "", sizeof(hw_info->dev_extn));
hw_info->is_wsa_combo_suppported = false;
+ hw_info->is_stereo_spkr = true;
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, "msm8976") || strstr(snd_card_name, "msm8953") ||
@@ -268,3 +270,10 @@
}
ALOGD("%s : device_name = %s", __func__,device_name);
}
+
+bool hw_info_is_stereo_spkr(void *hw_info)
+{
+ struct hardware_info *my_data = (struct hardware_info*) hw_info;
+
+ return my_data->is_stereo_spkr;
+}
diff --git a/hal/msm8916/platform.c b/hal/msm8916/platform.c
index 50e9f83..0f53792 100644
--- a/hal/msm8916/platform.c
+++ b/hal/msm8916/platform.c
@@ -4007,14 +4007,16 @@
}
- err = str_parms_get_str(parms, AUDIO_PARAMETER_KEY_MONO_SPEAKER, value, len);
- if (err >= 0) {
- if (!strncmp("left", value, sizeof("left")))
- my_data->mono_speaker = SPKR_1;
- else if (!strncmp("right", value, sizeof("right")))
- my_data->mono_speaker = SPKR_2;
+ if (hw_info_is_stereo_spkr(my_data->hw_info)) {
+ err = str_parms_get_str(parms, AUDIO_PARAMETER_KEY_MONO_SPEAKER, value, len);
+ if (err >= 0) {
+ if (!strncmp("left", value, sizeof("left")))
+ my_data->mono_speaker = SPKR_1;
+ else if (!strncmp("right", value, sizeof("right")))
+ my_data->mono_speaker = SPKR_2;
- str_parms_del(parms, AUDIO_PARAMETER_KEY_MONO_SPEAKER);
+ str_parms_del(parms, AUDIO_PARAMETER_KEY_MONO_SPEAKER);
+ }
}
#ifdef RECORD_PLAY_CONCURRENCY