audio: set voice call volume step by property

HAM-1528
HAM-1529

Bug: 22469108
Change-Id: I6999a2d0da1296deef252fdfb6a7c7e7df642dd9
(cherry picked from commit 4c9949d67ca3d70d49d286c290f0d43da3d35315)
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 74edb3a..70e6726 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -104,6 +104,9 @@
 	VOICE_FEATURE_SET_VOLUME_BOOST
 };
 
+#define TOSTRING_(x) #x
+#define TOSTRING(x) TOSTRING_(x)
+
 struct audio_block_header
 {
     int reserved;
@@ -149,6 +152,8 @@
 
     void *hw_info;
     struct csd_data *csd;
+
+    int max_vol_index;
 };
 
 static int pcm_device_table[AUDIO_USECASE_MAX][2] = {
@@ -915,6 +920,10 @@
         return NULL;
     }
 
+    //set max volume step for voice call
+    property_get("ro.config.vc_call_vol_steps", value, TOSTRING(MAX_VOL_INDEX));
+    my_data->max_vol_index = atoi(value);
+
     my_data->adev = adev;
     my_data->btsco_sample_rate = SAMPLE_RATE_8KHZ;
     my_data->fluence_in_spkr_mode = false;
@@ -1361,7 +1370,7 @@
     // Voice volume levels are mapped to adsp volume levels as follows.
     // 100 -> 5, 80 -> 4, 60 -> 3, 40 -> 2, 20 -> 1  0 -> 0
     // But this values don't changed in kernel. So, below change is need.
-    vol_index = (int)percent_to_index(volume, MIN_VOL_INDEX, MAX_VOL_INDEX);
+    vol_index = (int)percent_to_index(volume, MIN_VOL_INDEX, my_data->max_vol_index);
     set_values[0] = vol_index;
 
     ctl = mixer_get_ctl_by_name(adev->mixer, mixer_ctl_name);