hal: msm8916: add changes to support RAS for sdm660

Receiver Aided Stereo(RAS) is a feature to support stereo
playback over receiver and speaker. Add new RAS device to
support this feature on sdm660.

Change-Id: I589a4ed3fdf18deaa3ce7109bc365654dd93c89b
CRs-Fixed: 1088468
diff --git a/configs/sdm660/sdm660.mk b/configs/sdm660/sdm660.mk
index db58b4c..615d2fe 100644
--- a/configs/sdm660/sdm660.mk
+++ b/configs/sdm660/sdm660.mk
@@ -54,6 +54,7 @@
 AUDIO_FEATURE_ENABLED_GEF_SUPPORT := true
 AUDIO_FEATURE_ENABLED_USB_TUNNEL_AUDIO := true
 AUDIO_FEATURE_ENABLED_SPLIT_A2DP := true
+AUDIO_FEATURE_ENABLED_RAS := true
 ##AUDIO_FEATURE_FLAGS
 
 #Audio Specific device overlays
@@ -128,6 +129,10 @@
 PRODUCT_PROPERTY_OVERRIDES += \
 tunnel.audio.encode=false
 
+#Disable RAS Feature by default
+PRODUCT_PROPERTY_OVERRIDES += \
+persist.audio.ras.enabled=false
+
 #Buffer size in kbytes for compress offload playback
 PRODUCT_PROPERTY_OVERRIDES += \
 audio.offload.buffer.size.kb=32
diff --git a/hal/msm8916/platform.c b/hal/msm8916/platform.c
index 87ca990..d9c7642 100644
--- a/hal/msm8916/platform.c
+++ b/hal/msm8916/platform.c
@@ -422,6 +422,8 @@
     [SND_DEVICE_OUT_SPEAKER_PROTECTED_VBAT] = "speaker-protected-vbat",
     [SND_DEVICE_OUT_VOICE_SPEAKER_PROTECTED_VBAT] = "voice-speaker-protected-vbat",
     [SND_DEVICE_OUT_VOICE_SPEAKER_2_PROTECTED_VBAT] = "voice-speaker-2-protected-vbat",
+    [SND_DEVICE_OUT_SPEAKER_PROTECTED_RAS] = "speaker-protected",
+    [SND_DEVICE_OUT_SPEAKER_PROTECTED_VBAT_RAS] = "speaker-protected-vbat",
 #ifdef RECORD_PLAY_CONCURRENCY
     [SND_DEVICE_OUT_VOIP_HANDSET] = "voip-handset",
     [SND_DEVICE_OUT_VOIP_SPEAKER] = "voip-speaker",
@@ -555,6 +557,8 @@
     [SND_DEVICE_OUT_SPEAKER_PROTECTED_VBAT] = 124,
     [SND_DEVICE_OUT_VOICE_SPEAKER_PROTECTED_VBAT] = 101,
     [SND_DEVICE_OUT_VOICE_SPEAKER_2_PROTECTED_VBAT] = 101,
+    [SND_DEVICE_OUT_SPEAKER_PROTECTED_RAS] = 134,
+    [SND_DEVICE_OUT_SPEAKER_PROTECTED_VBAT_RAS] = 134,
 #ifdef RECORD_PLAY_CONCURRENCY
     [SND_DEVICE_OUT_VOIP_HANDSET] = 133,
     [SND_DEVICE_OUT_VOIP_SPEAKER] = 132,
@@ -690,6 +694,8 @@
     {TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_PROTECTED_VBAT)},
     {TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_SPEAKER_PROTECTED_VBAT)},
     {TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_SPEAKER_2_PROTECTED_VBAT)},
+    {TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_PROTECTED_RAS)},
+    {TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_PROTECTED_VBAT_RAS)},
 #ifdef RECORD_PLAY_CONCURRENCY
     {TO_NAME_INDEX(SND_DEVICE_OUT_VOIP_HANDSET)},
     {TO_NAME_INDEX(SND_DEVICE_OUT_VOIP_SPEAKER)},
@@ -2037,6 +2043,17 @@
     else
         platform_info_init(PLATFORM_INFO_XML_PATH, my_data);
 
+    if (audio_extn_can_use_ras()) {
+        if (property_get_bool("persist.speaker.prot.enable", false)) {
+            platform_set_snd_device_acdb_id(SND_DEVICE_OUT_SPEAKER_PROTECTED,
+                           acdb_device_table[SND_DEVICE_OUT_SPEAKER_PROTECTED_RAS]);
+            platform_set_snd_device_acdb_id(SND_DEVICE_OUT_SPEAKER_PROTECTED_VBAT,
+                           acdb_device_table[SND_DEVICE_OUT_SPEAKER_PROTECTED_VBAT_RAS]);
+        } else {
+            ALOGD("%s: RAS Feature should be enabled with Speaker Protection", __func__);
+        }
+    }
+
     /* obtain source mic type from max mic count*/
     get_source_mic_type(my_data);
     ALOGD("%s: Fluence_Type(%d) max_mic_count(%d) mic_type(0x%x) fluence_in_voice_call(%d)"
diff --git a/hal/msm8916/platform.h b/hal/msm8916/platform.h
index b91c501..5fc124d 100644
--- a/hal/msm8916/platform.h
+++ b/hal/msm8916/platform.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013-2016, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2013-2017, The Linux Foundation. All rights reserved.
  * Not a Contribution.
  *
  * Copyright (C) 2013 The Android Open Source Project
@@ -132,6 +132,8 @@
     SND_DEVICE_OUT_SPEAKER_PROTECTED_VBAT,
     SND_DEVICE_OUT_VOICE_SPEAKER_PROTECTED_VBAT,
     SND_DEVICE_OUT_VOICE_SPEAKER_2_PROTECTED_VBAT,
+    SND_DEVICE_OUT_SPEAKER_PROTECTED_RAS,
+    SND_DEVICE_OUT_SPEAKER_PROTECTED_VBAT_RAS,
 #ifdef RECORD_PLAY_CONCURRENCY
     SND_DEVICE_OUT_VOIP_HANDSET,
     SND_DEVICE_OUT_VOIP_SPEAKER,