hal: Disable removal of QOS dynamically
Leave QOS votes even when Fastmixer is stopped.
This is to prevent core from going into
lower power modes.
Change-Id: Ib9fe0da68707ece928ed547391f8e64fdc63ea71
CRs-Fixed: 2139098
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index aa52ef8..51f003c 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -3729,7 +3729,9 @@
}
//suspend, resume handling block
- if (out->dynamic_pm_qos_enabled) {
+ //remove QOS only if vendor.audio.hal.dynamic.qos.config.supported is set to true
+ // and vendor.audio.hal.output.suspend.supported is set to true
+ if (out->hal_output_suspend_supported && out->dynamic_pm_qos_config_supported) {
//check suspend parameter only for low latency and if the property
//is enabled
if (str_parms_get_str(parms, "suspend_playback", value, sizeof(value)) >= 0) {
@@ -3978,7 +3980,7 @@
if (str_parms_get_str(query, "supports_hw_suspend", value, sizeof(value)) >= 0) {
//only low latency track supports suspend_resume
str_parms_add_int(reply, "supports_hw_suspend",
- (out->dynamic_pm_qos_enabled));
+ (out->hal_output_suspend_supported));
if (str)
free(str);
str = str_parms_to_str(reply);
@@ -5533,7 +5535,8 @@
out->convert_buffer = NULL;
out->started = 0;
out->a2dp_compress_mute = false;
- out->dynamic_pm_qos_enabled = 0;
+ out->hal_output_suspend_supported = 0;
+ out->dynamic_pm_qos_config_supported = 0;
if ((flags & AUDIO_OUTPUT_FLAG_BD) &&
(property_get_bool("audio.matrix.limiter.enable", false)))
@@ -5918,8 +5921,11 @@
out->stream.get_mmap_position = out_get_mmap_position;
} else if (out->flags & AUDIO_OUTPUT_FLAG_FAST) {
out->usecase = USECASE_AUDIO_PLAYBACK_LOW_LATENCY;
- out->dynamic_pm_qos_enabled = property_get_bool("vendor.audio.dynamic.qos.enable", false);
- if (!out->dynamic_pm_qos_enabled) {
+ out->hal_output_suspend_supported =
+ property_get_bool("vendor.audio.hal.output.suspend.supported", false);
+ out->dynamic_pm_qos_config_supported =
+ property_get_bool("vendor.audio.hal.dynamic.qos.config.supported", false);
+ if (!out->dynamic_pm_qos_config_supported) {
ALOGI("%s: dynamic qos voting not enabled for platform", __func__);
} else {
ALOGI("%s: dynamic qos voting enabled for platform", __func__);
diff --git a/hal/audio_hw.h b/hal/audio_hw.h
index 3130f93..ff671cd 100644
--- a/hal/audio_hw.h
+++ b/hal/audio_hw.h
@@ -339,7 +339,8 @@
float volume_r;
char pm_qos_mixer_path[MAX_MIXER_PATH_LEN];
- int dynamic_pm_qos_enabled;
+ int hal_output_suspend_supported;
+ int dynamic_pm_qos_config_supported;
bool stream_config_changed;
mix_matrix_params_t pan_scale_params;
mix_matrix_params_t downmix_params;