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;