hal: pass voice volumes to ext speaker driver

Bug: 17203285
Change-Id: I1b9bdc3a49fa162ac85b7b1c1b8de027a20983d2
diff --git a/hal/audio_extn/audio_extn.h b/hal/audio_extn/audio_extn.h
index 6009366..26c2fb4 100644
--- a/hal/audio_extn/audio_extn.h
+++ b/hal/audio_extn/audio_extn.h
@@ -23,6 +23,7 @@
 void audio_extn_extspk_deinit(void *extn);
 void audio_extn_extspk_update(void* extn);
 void audio_extn_extspk_set_mode(void* extn, audio_mode_t mode);
+void audio_extn_extspk_set_voice_vol(void* extn, float vol);
 
 #ifndef HFP_ENABLED
 #define audio_extn_hfp_is_active(adev)                  (0)
diff --git a/hal/audio_extn/ext_speaker.c b/hal/audio_extn/ext_speaker.c
index 611e916..a551fb3 100644
--- a/hal/audio_extn/ext_speaker.c
+++ b/hal/audio_extn/ext_speaker.c
@@ -30,7 +30,7 @@
 typedef void (*set_mode_t)(int);
 typedef void (*set_speaker_on_t)(bool);
 typedef void (*set_earpiece_on_t)(bool);
-typedef void (*set_voice_vol_t)(int);
+typedef void (*set_voice_vol_t)(float);
 
 struct speaker_data {
     struct audio_device *adev;
@@ -147,3 +147,11 @@
     if (data)
         data->set_mode(mode);
 }
+
+void audio_extn_extspk_set_voice_vol(void* extn, float vol)
+{
+    struct speaker_data *data = (struct speaker_data*)extn;
+
+    if (data)
+        data->set_voice_vol(vol);
+}
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 9908b81..c5a4e88 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -2249,6 +2249,8 @@
     int ret;
     struct audio_device *adev = (struct audio_device *)dev;
 
+    audio_extn_extspk_set_voice_vol(adev->extspk, volume);
+
     pthread_mutex_lock(&adev->lock);
     ret = voice_set_volume(adev, volume);
     pthread_mutex_unlock(&adev->lock);