hal: initial setup for bengal

Change-Id: I0d3b908937fdeb3d6b0a5677646e1876ef4ab06b
diff --git a/configs/bengal/audio_configs.xml b/configs/bengal/audio_configs.xml
index 271023d..8e3cda2 100644
--- a/configs/bengal/audio_configs.xml
+++ b/configs/bengal/audio_configs.xml
@@ -49,6 +49,10 @@
         <flag name="audio_extn_hdmi_spk_enabled" value="true" />
         <flag name="use_xml_audio_policy_conf" value="true" />
         <flag name="voice_concurrency" value="false" />
+        <flag name="afe_proxy_enabled" value="true" />
+        <flag name="compress_voip_enabled" value="false" />
+        <flag name="fm_power_opt" value="true" />
+        <flag name="record_play_concurrency" value="false" />
 
         <!-- AV Configs -->
         <property name="vendor.audio.use.sw.alac.decoder" value="true"/>
@@ -65,50 +69,4 @@
         <flag name="qti_flac_decoder" value="true" />
         <flag name="vorbis_offload_enabled" value="true" />
         <flag name="wma_offload_enabled" value="true" />
-
-        <!-- AHAL Configs -->
-        <flag name="a2dp_offload_enabled" value="true" />
-        <flag name="anc_headset_enabled" value="true" />
-        <flag name="audiosphere_enabled" value="true" />
-        <flag name="audio_zoom_enabled" value="false" />
-        <flag name="battery_listener_enabled" value="true" />
-        <flag name="compress_capture_enabled" value="false" />
-        <flag name="compress_in_enabled" value="true" />
-        <flag name="compress_metadata_needed" value="true" />
-        <flag name="concurrent_capture_enabled" value="true" />
-        <flag name="custom_stereo_enabled" value="true" />
-        <flag name="display_port_enabled" value="true" />
-        <flag name="dsm_feedback_enabled" value="false" />
-        <flag name="dynamic_ecns_enabled" value="true" />
-        <flag name="ext_hw_plugin_enabled" value="true" />
-        <flag name="ext_qdsp_enabled" value="false" />
-        <flag name="ext_spkr_enabled" value="false" />
-        <flag name="ext_spkr_tfa_enabled" value="false" />
-        <flag name="fluence_enabled" value="true" />
-        <flag name="hdmi_edid_enabled" value="true" />
-        <flag name="hdmi_passthrough_enabled" value="true" />
-        <flag name="hfp_enabled" value="true" />
-        <flag name="hifi_audio_enabled" value="false" />
-        <flag name="hwdep_cal_enabled" value="false" />
-        <flag name="incall_music_enabled" value="true" />
-        <flag name="keep_alive_enabled" value="true" />
-        <flag name="kpi_optimize_enabled" value="true" />
-        <flag name="maxx_audio_enabled" value="false" />
-        <flag name="receiver_aided_stereo" value="true" />
-        <flag name="snd_monitor_enabled" value="true" />
-        <flag name="source_track_enabled" value="true" />
-        <flag name="spkr_prot_enabled" value="true" />
-        <flag name="ssrec_enabled" value="true" />
-        <flag name="usb_offload_burst_mode" value="true" />
-        <flag name="usb_offload_enabled" value="true" />
-        <flag name="usb_offload_sidetone_vol_enabled" value="false" />
-        <flag name="use_deep_buffer_as_primary_output" value="false" />
-        <flag name="vbat_enabled" value="true" />
-        <flag name="wsa_enabled" value="false" />
-
-        <!-- Common configs between APM and AHAL -->
-        <flag name="afe_proxy_enabled" value="true" />
-        <flag name="compress_voip_enabled" value="false" />
-        <flag name="fm_power_opt" value="true" />
-        <flag name="record_play_concurrency" value="false" />
 </configs>
diff --git a/configs/bengal/audio_configs_stock.xml b/configs/bengal/audio_configs_stock.xml
index e26ef14..dd0c3b4 100644
--- a/configs/bengal/audio_configs_stock.xml
+++ b/configs/bengal/audio_configs_stock.xml
@@ -29,45 +29,4 @@
 -->
 <configs>
         <!-- AHAL Configs -->
-        <flag name="a2dp_offload_enabled" value="true" />
-        <flag name="afe_proxy_enabled" value="false" />
-        <flag name="anc_headset_enabled" value="false" />
-        <flag name="audio_zoom_enabled" value="false" />
-        <flag name="audiosphere_enabled" value="false" />
-        <flag name="battery_listener_enabled" value="false" />
-        <flag name="compress_capture_enabled" value="false" />
-        <flag name="compress_in_enabled" value="false" />
-        <flag name="compress_metadata_needed" value="false" />
-        <flag name="compress_voip_enabled" value="false" />
-        <flag name="concurrent_capture_enabled" value="true" />
-        <flag name="custom_stereo_enabled" value="false" />
-        <flag name="display_port_enabled" value="false" />
-        <flag name="dsm_feedback_enabled" value="false" />
-        <flag name="dynamic_ecns_enabled" value="false" />
-        <flag name="ext_hw_plugin_enabled" value="false" />
-        <flag name="ext_qdsp_enabled" value="true" />
-        <flag name="ext_spkr_enabled" value="true" />
-        <flag name="ext_spkr_tfa_enabled" value="false" />
-        <flag name="fluence_enabled" value="false" />
-        <flag name="fm_power_opt" value="false" />
-        <flag name="hdmi_edid_enabled" value="false" />
-        <flag name="hdmi_passthrough_enabled" value="false" />
-        <flag name="hfp_enabled" value="true" />
-        <flag name="hifi_audio_enabled" value="false" />
-        <flag name="hwdep_cal_enabled" value="true" />
-        <flag name="incall_music_enabled" value="true" />
-        <flag name="keep_alive_enabled" value="false" />
-        <flag name="kpi_optimize_enabled" value="false" />
-        <flag name="receiver_aided_stereo" value="false" />
-        <flag name="record_play_concurrency" value="false" />
-        <flag name="snd_monitor_enabled" value="true" />
-        <flag name="source_track_enabled" value="false" />
-        <flag name="spkr_prot_enabled" value="true" />
-        <flag name="ssrec_enabled" value="false" />
-        <flag name="usb_offload_burst_mode" value="false" />
-        <flag name="usb_offload_enabled" value="true" />
-        <flag name="usb_offload_sidetone_vol_enabled" value="false" />
-        <flag name="use_deep_buffer_as_primary_output" value="false" />
-        <flag name="vbat_enabled" value="false" />
-        <flag name="wsa_enabled" value="false" />
 </configs>
diff --git a/configs/bengal/audio_policy_configuration.xml b/configs/bengal/audio_policy_configuration.xml
index 950b2b4..b5621b7 100644
--- a/configs/bengal/audio_policy_configuration.xml
+++ b/configs/bengal/audio_policy_configuration.xml
@@ -173,6 +173,11 @@
                              samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
                              channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK"/>
                 </mixPort>
+                <mixPort name="voip_tx" role="sink"
+                         flags="AUDIO_INPUT_FLAG_VOIP_TX">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="8000,16000,32000,48000" channelMasks="AUDIO_CHANNEL_IN_MONO"/>
+                </mixPort>
                 <mixPort name="usb_surround_sound" role="sink">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
                              samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000,88200,96000,176400,192000"
@@ -184,7 +189,7 @@
                              samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000,88200,96000,176400,192000"
                              channelMasks="AUDIO_CHANNEL_IN_5POINT1,AUDIO_CHANNEL_INDEX_MASK_6,AUDIO_CHANNEL_IN_7POINT1,AUDIO_CHANNEL_INDEX_MASK_8"/>
                 </mixPort>
-                <mixPort name="record_24" role="sink">
+                <mixPort name="record_24" role="sink" maxOpenCount="2" maxActiveCount="2">
                     <profile name="" format="AUDIO_FORMAT_PCM_24_BIT_PACKED"
                              samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000,96000,192000"
                              channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK,AUDIO_CHANNEL_INDEX_MASK_3,AUDIO_CHANNEL_INDEX_MASK_4"/>
@@ -258,20 +263,17 @@
                              samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_MONO,AUDIO_CHANNEL_OUT_STEREO"/>
                 </devicePort>
                 <devicePort tagName="BT A2DP Out" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP" role="sink"
-                            encodedFormats="AUDIO_FORMAT_SBC AUDIO_FORMAT_AAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_LDAC AUDIO_FORMAT_CELT AUDIO_FORMAT_APTX_ADAPTIVE AUDIO_FORMAT_APTX_TW
-SP">
+                            encodedFormats="AUDIO_FORMAT_SBC AUDIO_FORMAT_AAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_LDAC AUDIO_FORMAT_CELT AUDIO_FORMAT_APTX_ADAPTIVE AUDIO_FORMAT_APTX_TWSP">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
                              samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
                 </devicePort>
                 <devicePort tagName="BT A2DP Headphones" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES" role="sink"
-                            encodedFormats="AUDIO_FORMAT_SBC AUDIO_FORMAT_AAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_LDAC AUDIO_FORMAT_CELT AUDIO_FORMAT_APTX_ADAPTIVE AUDIO_FORMAT_APTX_TW
-SP">
+                            encodedFormats="AUDIO_FORMAT_SBC AUDIO_FORMAT_AAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_LDAC AUDIO_FORMAT_CELT AUDIO_FORMAT_APTX_ADAPTIVE AUDIO_FORMAT_APTX_TWSP">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
                              samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
                 </devicePort>
                 <devicePort tagName="BT A2DP Speaker" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER" role="sink"
-                            encodedFormats="AUDIO_FORMAT_SBC AUDIO_FORMAT_AAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_LDAC AUDIO_FORMAT_CELT AUDIO_FORMAT_APTX_ADAPTIVE AUDIO_FORMAT_APTX_TW
-SP">
+                            encodedFormats="AUDIO_FORMAT_SBC AUDIO_FORMAT_AAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_LDAC AUDIO_FORMAT_CELT AUDIO_FORMAT_APTX_ADAPTIVE AUDIO_FORMAT_APTX_TWSP">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
                              samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
                 </devicePort>
@@ -353,6 +355,8 @@
                        sources="Telephony Rx"/>
                 <route type="mix" sink="primary input"
                        sources="Wired Headset Mic,BT SCO Headset Mic,FM Tuner,USB Device In,USB Headset In,Telephony Rx"/>
+                <route type="mix" sink="voip_tx"
+                       sources="Built-In Mic,Built-In Back Mic,BT SCO Headset Mic,USB Device In,USB Headset In,Wired Headset Mic"/>
                 <route type="mix" sink="usb_surround_sound"
                        sources="USB Device In,USB Headset In"/>
                 <route type="mix" sink="record_24"
diff --git a/configs/bengal/bengal.mk b/configs/bengal/bengal.mk
index d4f6e9b..b1e105d 100644
--- a/configs/bengal/bengal.mk
+++ b/configs/bengal/bengal.mk
@@ -44,6 +44,7 @@
 AUDIO_FEATURE_ENABLED_A2DP_OFFLOAD := true
 AUDIO_FEATURE_ENABLED_3D_AUDIO := true
 AUDIO_FEATURE_ENABLED_AHAL_EXT := true
+AUDIO_FEATURE_ENABLED_EXTENDED_COMPRESS_FORMAT := true
 DOLBY_ENABLE := false
 endif
 
@@ -87,7 +88,7 @@
 AUDIO_HARDWARE := audio.a2dp.default
 AUDIO_HARDWARE += audio.usb.default
 AUDIO_HARDWARE += audio.r_submix.default
-AUDIO_HARDWARE += audio.primary.lito
+AUDIO_HARDWARE += audio.primary.bengal
 
 #HAL Wrapper
 AUDIO_WRAPPER := libqahw
@@ -348,7 +349,7 @@
 
 #enable headset calibration
 PRODUCT_PROPERTY_OVERRIDES += \
-audio.volume.headset.gain.depcal=true
+vendor.audio.volume.headset.gain.depcal=true
 
 #enable dualmic fluence for voice communication
 PRODUCT_PROPERTY_OVERRIDES += \
@@ -391,7 +392,7 @@
 vendor.audio.feature.compress_in.enable=true \
 vendor.audio.feature.compress_meta_data.enable=true \
 vendor.audio.feature.compr_voip.enable=false \
-vendor.audio.feature.concurrent_capture.enable=false \
+vendor.audio.feature.concurrent_capture.enable=true \
 vendor.audio.feature.custom_stereo.enable=true \
 vendor.audio.feature.display_port.enable=true \
 vendor.audio.feature.dsm_feedback.enable=false \
@@ -408,6 +409,7 @@
 vendor.audio.feature.hifi_audio.enable=false \
 vendor.audio.feature.hwdep_cal.enable=false \
 vendor.audio.feature.incall_music.enable=true \
+vendor.audio.feature.multi_voice_session.enable=true \
 vendor.audio.feature.keep_alive.enable=true \
 vendor.audio.feature.kpi_optimize.enable=true \
 vendor.audio.feature.maxx_audio.enable=false \
@@ -441,6 +443,19 @@
     vendor.qti.hardware.audiohalext@1.0-impl \
     vendor.qti.hardware.audiohalext-utils
 
+# enable audio hidl hal 5.0
+PRODUCT_PACKAGES += \
+    android.hardware.audio@5.0 \
+    android.hardware.audio.common@5.0 \
+    android.hardware.audio.common@5.0-util \
+    android.hardware.audio@5.0-impl \
+    android.hardware.audio.effect@5.0 \
+    android.hardware.audio.effect@5.0-impl
+
+# enable sound trigger hidl hal 2.2
+PRODUCT_PACKAGES += \
+    android.hardware.soundtrigger@2.2-impl \
+
 PRODUCT_PACKAGES_ENG += \
     VoicePrintTest \
     VoicePrintDemo
diff --git a/hal/Android.mk b/hal/Android.mk
index 959b01a..202518a 100644
--- a/hal/Android.mk
+++ b/hal/Android.mk
@@ -1,6 +1,5 @@
 ifneq ($(AUDIO_USE_STUB_HAL), true)
 ifeq ($(strip $(BOARD_USES_ALSA_AUDIO)),true)
-
 LOCAL_PATH := $(call my-dir)
 
 include $(CLEAR_VARS)
@@ -92,6 +91,7 @@
 ifneq ($(filter bengal,$(TARGET_BOARD_PLATFORM)),)
   LOCAL_CFLAGS := -DPLATFORM_BENGAL
   LOCAL_CFLAGS += -DMAX_TARGET_SPECIFIC_CHANNEL_CNT="4"
+  LOCAL_CFLAGS += -DINCALL_STEREO_CAPTURE_ENABLED
 endif
 ifneq ($(filter atoll,$(TARGET_BOARD_PLATFORM)),)
   LOCAL_CFLAGS := -DPLATFORM_ATOLL
diff --git a/hal/audio_extn/hfp.c b/hal/audio_extn/hfp.c
index 9b60083..62eb9e6 100644
--- a/hal/audio_extn/hfp.c
+++ b/hal/audio_extn/hfp.c
@@ -66,7 +66,8 @@
       defined (PLATFORM_QCS605) || defined (PLATFORM_MSMNILE) || \
       defined (PLATFORM_KONA) || defined (PLATFORM_MSMSTEPPE) || \
       defined (PLATFORM_QCS405) || defined (PLATFORM_TRINKET) || \
-      defined (PLATFORM_LITO) || defined(PLATFORM_ATOLL)
+      defined (PLATFORM_LITO) || defined(PLATFORM_ATOLL) || \
+      defined (PLATFORM_BENGAL)
 #define HFP_RX_VOLUME     "SLIMBUS_7 LOOPBACK Volume"
 #else
 #define HFP_RX_VOLUME     "Internal HFP RX Volume"
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 8d6e7bc..452ab2d 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -90,7 +90,7 @@
     defined (PLATFORM_KONA) || defined (PLATFORM_MSMSTEPPE) || \
     defined (PLATFORM_QCS405) || defined (PLATFORM_TRINKET) || \
     defined (PLATFORM_LITO) || defined (PLATFORM_MSMFALCON) || \
-    defined (PLATFORM_ATOLL)
+    defined (PLATFORM_ATOLL) || defined (PLATFORM_BENGAL)
 
 #include <sound/devdep_params.h>
 #endif
@@ -11244,7 +11244,7 @@
     defined (PLATFORM_KONA) || defined (PLATFORM_MSMSTEPPE) || \
     defined (PLATFORM_QCS405) || defined (PLATFORM_TRINKET) || \
     defined (PLATFORM_LITO) || defined (PLATFORM_MSMFALCON) || \
-    defined (PLATFORM_ATOLL)
+    defined (PLATFORM_ATOLL) || defined (PLATFORM_BENGAL)
 int platform_get_mmap_data_fd(void *platform, int fe_dev, int dir, int *fd,
                               uint32_t *size)
 {
diff --git a/hal/msm8974/platform.h b/hal/msm8974/platform.h
index d320a15..f9d4198 100644
--- a/hal/msm8974/platform.h
+++ b/hal/msm8974/platform.h
@@ -497,7 +497,7 @@
     defined (PLATFORM_MSMNILE) || defined (PLATFORM_KONA) || \
     defined (PLATFORM_MSMSTEPPE) || defined (PLATFORM_QCS405) || \
     defined (PLATFORM_TRINKET) || defined (PLATFORM_LITO) || \
-    defined (PLATFORM_ATOLL)
+    defined (PLATFORM_ATOLL) || defined (PLATFORM_BENGAL)
 #define PLAYBACK_OFFLOAD_DEVICE2 17
 #elif defined (PLATFORM_MSMFALCON) || defined (PLATFORM_MSM8937)
 #define PLAYBACK_OFFLOAD_DEVICE2 24
@@ -510,7 +510,8 @@
     defined (PLATFORM_KONA) || defined (PLATFORM_MSMSTEPPE) || \
     defined (PLATFORM_QCS405) || defined (PLATFORM_TRINKET) || \
     defined (PLATFORM_LITO) || defined (PLATFORM_MSMFALCON) || \
-    defined (PLATFORM_MSM8937) || defined (PLATFORM_ATOLL)
+    defined (PLATFORM_MSM8937) || defined (PLATFORM_ATOLL) || \
+    defined (PLATFORM_BENGAL)
 #define PLAYBACK_OFFLOAD_DEVICE3 18
 #define PLAYBACK_OFFLOAD_DEVICE4 34
 #define PLAYBACK_OFFLOAD_DEVICE5 35
@@ -674,7 +675,7 @@
 #define FM_RX_VOLUME "PRI MI2S LOOPBACK Volume"
 #elif defined (PLATFORM_MSM8996) || defined (PLATFORM_KONA)
 #define FM_RX_VOLUME "Tert MI2S LOOPBACK Volume"
-#elif defined (PLATFORM_MSM8998) || defined (PLATFORM_SDM845) || defined (PLATFORM_MSMFALCON) || defined (PLATFORM_SDM710) || defined (PLATFORM_QCS605) || defined (PLATFORM_MSMNILE) || defined (PLATFORM_MSMSTEPPE) || defined (PLATFORM_QCS405) || defined (PLATFORM_TRINKET) || defined (PLATFORM_LITO) || defined (PLATFORM_ATOLL)
+#elif defined (PLATFORM_MSM8998) || defined (PLATFORM_SDM845) || defined (PLATFORM_MSMFALCON) || defined (PLATFORM_SDM710) || defined (PLATFORM_QCS605) || defined (PLATFORM_MSMNILE) || defined (PLATFORM_MSMSTEPPE) || defined (PLATFORM_QCS405) || defined (PLATFORM_TRINKET) || defined (PLATFORM_LITO) || defined (PLATFORM_ATOLL) ||defined (PLATFORM_BENGAL)
 #define FM_RX_VOLUME "SLIMBUS_8 LOOPBACK Volume"
 #else
 #define FM_RX_VOLUME "Internal FM RX Volume"