hal: Avoid stereo device selection for target with single speaker
Stereo flag is true by default, speaker device in selction
of VOICE_SPEAKER_2 during call for target with single speaker.
Fix this by set stereo flag to false for target with single
speaker to ensure proper speaker device is selected.
CRs-Fixed: 1113317
Change-Id: I62d5b9cf84656272d93b2810b35a53b3e27465cd
diff --git a/hal/msm8974/hw_info.c b/hal/msm8974/hw_info.c
index a13ea30..f5fb696 100644
--- a/hal/msm8974/hw_info.c
+++ b/hal/msm8974/hw_info.c
@@ -338,6 +338,10 @@
hw_info->snd_devices = (snd_device_t *)tasha_DB_variant_devices;
hw_info->num_snd_devices = ARRAY_SIZE(tasha_DB_variant_devices);
strlcpy(hw_info->dev_extn, "-db", sizeof(hw_info->dev_extn));
+ } else if (!strcmp(snd_card_name, "msm8998-qvr-tavil-snd-card")) {
+ hw_info->is_stereo_spkr = false;
+ } else if (!strcmp(snd_card_name, "msm8998-skuk-tavil-snd-card")) {
+ hw_info->is_stereo_spkr = false;
} else {
ALOGW("%s: Not a msm8998 device", __func__);
}
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
old mode 100644
new mode 100755
index 4c7a8de..80f869c
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -2971,15 +2971,21 @@
snd_device = SND_DEVICE_OUT_BT_SCO;
} else if (devices & AUDIO_DEVICE_OUT_SPEAKER) {
if (my_data->is_vbat_speaker) {
- if (my_data->mono_speaker == SPKR_1)
+ if (hw_info_is_stereo_spkr(my_data->hw_info)) {
+ if (my_data->mono_speaker == SPKR_1)
+ snd_device = SND_DEVICE_OUT_VOICE_SPEAKER_VBAT;
+ else
+ snd_device = SND_DEVICE_OUT_VOICE_SPEAKER_2_VBAT;
+ } else
snd_device = SND_DEVICE_OUT_VOICE_SPEAKER_VBAT;
- else
- snd_device = SND_DEVICE_OUT_VOICE_SPEAKER_2_VBAT;
} else {
- if (my_data->mono_speaker == SPKR_1)
- snd_device = SND_DEVICE_OUT_VOICE_SPEAKER;
- else
- snd_device = SND_DEVICE_OUT_VOICE_SPEAKER_2;
+ if (hw_info_is_stereo_spkr(my_data->hw_info)) {
+ if (my_data->mono_speaker == SPKR_1)
+ snd_device = SND_DEVICE_OUT_VOICE_SPEAKER;
+ else
+ snd_device = SND_DEVICE_OUT_VOICE_SPEAKER_2;
+ } else
+ snd_device = SND_DEVICE_OUT_VOICE_SPEAKER;
}
} else if (devices & AUDIO_DEVICE_OUT_ALL_A2DP) {
snd_device = SND_DEVICE_OUT_BT_A2DP;