hal: msm8974: fix device selection for voice call
Fix output device selection for voice call so that
stereo speaker is able to be selected.
CRs-Fixed: 2411983
Change-Id: If5872a5ba5bd8a4a31e686cadaf9d947c3ca30dc
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index bb4db48..c103f1a 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -8747,6 +8747,7 @@
adev->perf_lock_opts[1] = 0x20E;
adev->perf_lock_opts_size = 2;
adev->dsp_bit_width_enforce_mode = 0;
+ adev->enable_hfp = false;
/* Loads platform specific libraries dynamically */
adev->platform = platform_init(adev);
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index adfeaa5..7b1f386 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -4764,33 +4764,31 @@
else
snd_device = SND_DEVICE_OUT_BT_SCO;
} else if (devices & (AUDIO_DEVICE_OUT_SPEAKER | AUDIO_DEVICE_OUT_SPEAKER_SAFE)) {
- if (!adev->enable_hfp) {
- snd_device = SND_DEVICE_OUT_VOICE_SPEAKER;
- } else {
- snd_device = SND_DEVICE_OUT_VOICE_SPEAKER_HFP;
- }
- } else if (devices & AUDIO_DEVICE_OUT_SPEAKER) {
- if (my_data->is_vbat_speaker || my_data->is_bcl_speaker) {
- 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
+ if (my_data->is_vbat_speaker || my_data->is_bcl_speaker) {
+ 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 {
- if (hw_info_is_stereo_spkr(my_data->hw_info)) {
- if (my_data->voice_speaker_stereo)
- snd_device = SND_DEVICE_OUT_VOICE_SPEAKER_STEREO;
- else {
- if (my_data->mono_speaker == SPKR_1)
- snd_device = SND_DEVICE_OUT_VOICE_SPEAKER;
- else
- snd_device = SND_DEVICE_OUT_VOICE_SPEAKER_2;
- }
- } else
+ else
+ snd_device = SND_DEVICE_OUT_VOICE_SPEAKER_2_VBAT;
+ } else
+ snd_device = SND_DEVICE_OUT_VOICE_SPEAKER_VBAT;
+ } else {
+ if (hw_info_is_stereo_spkr(my_data->hw_info)) {
+ if (my_data->voice_speaker_stereo)
+ snd_device = SND_DEVICE_OUT_VOICE_SPEAKER_STEREO;
+ else if (adev->enable_hfp)
+ snd_device = SND_DEVICE_OUT_VOICE_SPEAKER_HFP;
+ else {
+ if (my_data->mono_speaker == SPKR_1)
snd_device = SND_DEVICE_OUT_VOICE_SPEAKER;
- }
+ else
+ snd_device = SND_DEVICE_OUT_VOICE_SPEAKER_2;
+ }
+ } else if (adev->enable_hfp)
+ snd_device = SND_DEVICE_OUT_VOICE_SPEAKER_HFP;
+ else
+ snd_device = SND_DEVICE_OUT_VOICE_SPEAKER;
+ }
} else if (devices & AUDIO_DEVICE_OUT_ALL_A2DP) {
snd_device = SND_DEVICE_OUT_BT_A2DP;
} else if (devices & AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET ||