hal: Add support to enable VBat feature
Add support to enable VBat feature. This includes required changes
to select VBat speaker devices for audio and voice usecases and
sending the VBat calibration data to codec driver.
Change-Id: I2234bee3cc4d6f16934a4b27ef9da21cde74bb48
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 7c83168..e3d7d6a 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -455,7 +455,7 @@
audio_extn_utils_send_audio_calibration(adev, usecase);
audio_extn_utils_send_app_type_cfg(usecase);
strcpy(mixer_path, use_case_table[usecase->id]);
- platform_add_backend_name(mixer_path, snd_device);
+ platform_add_backend_name(mixer_path, snd_device, usecase);
ALOGV("%s: apply mixer and update path: %s", __func__, mixer_path);
audio_route_apply_and_update_path(adev->audio_route, mixer_path);
ALOGV("%s: exit", __func__);
@@ -477,7 +477,7 @@
else
snd_device = usecase->out_snd_device;
strcpy(mixer_path, use_case_table[usecase->id]);
- platform_add_backend_name(mixer_path, snd_device);
+ platform_add_backend_name(mixer_path, snd_device, usecase);
ALOGV("%s: reset and update mixer path: %s", __func__, mixer_path);
audio_route_reset_and_update_path(adev->audio_route, mixer_path);
audio_extn_sound_trigger_update_stream_status(usecase, ST_EVENT_STREAM_FREE);
@@ -521,8 +521,10 @@
audio_extn_usb_start_capture(adev);
if ((snd_device == SND_DEVICE_OUT_SPEAKER ||
- snd_device == SND_DEVICE_OUT_VOICE_SPEAKER) &&
- audio_extn_spkr_prot_is_enabled()) {
+ snd_device == SND_DEVICE_OUT_SPEAKER_VBAT ||
+ snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_VBAT ||
+ snd_device == SND_DEVICE_OUT_VOICE_SPEAKER) &&
+ audio_extn_spkr_prot_is_enabled()) {
if (audio_extn_spkr_prot_get_acdb_id(snd_device) < 0) {
adev->snd_dev_ref_cnt[snd_device]--;
return -EINVAL;
@@ -591,8 +593,10 @@
audio_extn_usb_stop_capture();
if ((snd_device == SND_DEVICE_OUT_SPEAKER ||
- snd_device == SND_DEVICE_OUT_VOICE_SPEAKER) &&
- audio_extn_spkr_prot_is_enabled()) {
+ snd_device == SND_DEVICE_OUT_SPEAKER_VBAT ||
+ snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_VBAT ||
+ snd_device == SND_DEVICE_OUT_VOICE_SPEAKER) &&
+ audio_extn_spkr_prot_is_enabled()) {
audio_extn_spkr_prot_stop_processing(snd_device);
} else {
audio_route_reset_and_update_path(adev->audio_route, device_name);
@@ -3390,6 +3394,7 @@
if ((mode == AUDIO_MODE_NORMAL || mode == AUDIO_MODE_IN_COMMUNICATION) &&
voice_is_in_call(adev)) {
voice_stop_call(adev);
+ platform_set_gsm_mode(adev->platform, false);
adev->current_call_output = NULL;
}
}