configs: Modify sound trigger mixer controls

Update sound trigger mixer controls to support pre-processing
of captured data in ADM when requested. The existing mixer controls
would be used when LSM directly connects to AFE.
When LSM connects to ADM, regular recording path is used till LSM.
Add support to handle cases where ADSP and CPE modes can have
different module and param ids.
Copy tasha sound trigger mixer paths xml to system/etc/ location
on target.

Change-Id: I1615f369b76706814dc80e0b19d013ca9f3a4890
diff --git a/configs/sdm660/sdm660.mk b/configs/sdm660/sdm660.mk
index 2ee6312..b1aa24f 100644
--- a/configs/sdm660/sdm660.mk
+++ b/configs/sdm660/sdm660.mk
@@ -85,6 +85,7 @@
     hardware/qcom/audio/configs/sdm660/audio_platform_info.xml:system/etc/audio_platform_info.xml \
     hardware/qcom/audio/configs/sdm660/sound_trigger_mixer_paths.xml:system/etc/sound_trigger_mixer_paths.xml \
     hardware/qcom/audio/configs/sdm660/sound_trigger_mixer_paths_wcd9330.xml:system/etc/sound_trigger_mixer_paths_wcd9330.xml \
+    hardware/qcom/audio/configs/sdm660/sound_trigger_mixer_paths_wcd9335.xml:system/etc/sound_trigger_mixer_paths_wcd9335.xml \
     hardware/qcom/audio/configs/sdm660/sound_trigger_mixer_paths_wcd9340.xml:system/etc/sound_trigger_mixer_paths_wcd9340.xml \
     hardware/qcom/audio/configs/sdm660/sound_trigger_platform_info.xml:system/etc/sound_trigger_platform_info.xml \
     hardware/qcom/audio/configs/sdm660/graphite_ipc_platform_info.xml:system/etc/graphite_ipc_platform_info.xml
diff --git a/configs/sdm660/sound_trigger_mixer_paths.xml b/configs/sdm660/sound_trigger_mixer_paths.xml
index d673560..7619e26 100644
--- a/configs/sdm660/sound_trigger_mixer_paths.xml
+++ b/configs/sdm660/sound_trigger_mixer_paths.xml
@@ -46,6 +46,11 @@
     <ctl name="LSM8 Port" value="None" />
     <ctl name="INT3_MI2S_TX LSM Function" value="None" />
     <ctl name="DEC1 MUX" value="ZERO" />
+    <ctl name="DEC2 MUX" value="ZERO" />
+    <ctl name="DEC3 MUX" value="ZERO" />
+    <ctl name="DEC4 MUX" value="ZERO" />
+    <ctl name="I2S TX2 INP1" value="ZERO" />
+    <ctl name="I2S TX2 INP2" value="ZERO" />
 
     <path name="listen-voice-wakeup-1">
         <ctl name="INT3_MI2S_TX LSM Function" value="SWAUDIO" />
@@ -95,9 +100,79 @@
         <ctl name="LSM8 Mixer INT3_MI2S_TX" value="1" />
     </path>
 
+    <path name="listen-voice-wakeup-1 preproc">
+        <ctl name="INT3_MI2S_TX LSM Function" value="SWAUDIO" />
+        <ctl name="LSM1 Port" value="ADM_LSM_TX" />
+        <ctl name="LSM1 Mixer INT3_MI2S_TX" value="1" />
+    </path>
+
+    <path name="listen-voice-wakeup-2 preproc">
+        <ctl name="INT3_MI2S_TX LSM Function" value="SWAUDIO" />
+        <ctl name="LSM2 Port" value="ADM_LSM_TX" />
+        <ctl name="LSM2 Mixer INT3_MI2S_TX" value="1" />
+    </path>
+
+    <path name="listen-voice-wakeup-3 preproc">
+        <ctl name="INT3_MI2S_TX LSM Function" value="SWAUDIO" />
+        <ctl name="LSM3 Port" value="ADM_LSM_TX" />
+        <ctl name="LSM3 Mixer INT3_MI2S_TX" value="1" />
+    </path>
+
+    <path name="listen-voice-wakeup-4 preproc">
+        <ctl name="INT3_MI2S_TX LSM Function" value="SWAUDIO" />
+        <ctl name="LSM4 Port" value="ADM_LSM_TX" />
+        <ctl name="LSM4 Mixer INT3_MI2S_TX" value="1" />
+    </path>
+
+    <path name="listen-voice-wakeup-5 preproc">
+        <ctl name="INT3_MI2S_TX LSM Function" value="SWAUDIO" />
+        <ctl name="LSM5 Port" value="ADM_LSM_TX" />
+        <ctl name="LSM5 Mixer INT3_MI2S_TX" value="1" />
+    </path>
+
+    <path name="listen-voice-wakeup-6 preproc">
+        <ctl name="INT3_MI2S_TX LSM Function" value="SWAUDIO" />
+        <ctl name="LSM6 Port" value="ADM_LSM_TX" />
+        <ctl name="LSM6 Mixer INT3_MI2S_TX" value="1" />
+    </path>
+
+    <path name="listen-voice-wakeup-7 preproc">
+        <ctl name="INT3_MI2S_TX LSM Function" value="SWAUDIO" />
+        <ctl name="LSM7 Port" value="ADM_LSM_TX" />
+        <ctl name="LSM7 Mixer INT3_MI2S_TX" value="1" />
+    </path>
+
+    <path name="listen-voice-wakeup-8 preproc">
+        <ctl name="INT3_MI2S_TX LSM Function" value="SWAUDIO" />
+        <ctl name="LSM8 Port" value="ADM_LSM_TX" />
+        <ctl name="LSM8 Mixer INT3_MI2S_TX" value="1" />
+    </path>
+
     <path name="listen-ape-handset-mic">
         <ctl name="DEC1 Volume" value="84" />
         <ctl name="DEC1 MUX" value="DMIC3" />
     </path>
 
+    <path name="listen-ape-handset-mic-preproc">
+        <path name="listen-ape-handset-mic"/>
+    </path>
+
+    <path name="listen-ape-handset-qmic">
+        <ctl name="INT3_MI2S_TX Channels" value="Four" />
+        <ctl name="DEC1 MUX" value="DMIC2" />
+        <ctl name="DEC2 MUX" value="DMIC1" />
+        <ctl name="DEC3 MUX" value="DMIC3" />
+        <ctl name="I2S TX2 INP1" value="DEC3" />
+        <ctl name="DEC4 MUX" value="DMIC4" />
+        <ctl name="I2S TX2 INP2" value="DEC4" />
+    </path>
+
+    <path name="echo-reference">
+        <ctl name="AUDIO_REF_EC_UL1 MUX" value="INT4_MI2S_RX"/>
+        <ctl name="EC Reference Channels" value="Two"/>
+        <ctl name="EC Reference Bit Format" value="S16_LE"/>
+        <ctl name="EC Reference SampleRate" value="48000"/>
+    </path>
+
+
 </mixer>
diff --git a/configs/sdm660/sound_trigger_mixer_paths_wcd9340.xml b/configs/sdm660/sound_trigger_mixer_paths_wcd9340.xml
index cfbf9f9..545f46b 100644
--- a/configs/sdm660/sound_trigger_mixer_paths_wcd9340.xml
+++ b/configs/sdm660/sound_trigger_mixer_paths_wcd9340.xml
@@ -56,48 +56,120 @@
     <ctl name="EC BUF MUX INP" value="ZERO" />
     <ctl name="ADC MUX1" value="DMIC" />
     <ctl name="DMIC MUX1" value="ZERO" />
+    <ctl name="AIF1_CAP Mixer SLIM TX8" value="0"/>
+    <ctl name="AIF1_CAP Mixer SLIM TX7" value="0" />
+    <ctl name="AIF1_CAP Mixer SLIM TX6" value="0" />
+    <ctl name="AIF1_CAP Mixer SLIM TX5" value="0"/>
+    <ctl name="CDC_IF TX5 MUX" value="ZERO" />
+    <ctl name="CDC_IF TX6 MUX" value="ZERO" />
+    <ctl name="CDC_IF TX7 MUX" value="ZERO" />
+    <ctl name="CDC_IF TX8 MUX" value="ZERO" />
+    <ctl name="ADC MUX5" value="AMIC" />
+    <ctl name="ADC MUX6" value="AMIC" />
+    <ctl name="ADC MUX7" value="AMIC" />
+    <ctl name="ADC MUX8" value="AMIC" />
+    <ctl name="DMIC MUX5" value="ZERO" />
+    <ctl name="DMIC MUX6" value="ZERO" />
+    <ctl name="DMIC MUX7" value="ZERO" />
+    <ctl name="DMIC MUX8" value="ZERO" />
+    <ctl name="IIR0 INP0 MUX" value="ZERO" />
 
     <path name="listen-voice-wakeup-1">
         <ctl name="SLIMBUS_5_TX LSM Function" value="AUDIO" />
         <ctl name="LSM1 Port" value="SLIMBUS_5_TX" />
         <ctl name="LSM1 Mixer SLIMBUS_5_TX" value="1" />
     </path>
+
     <path name="listen-voice-wakeup-2">
         <ctl name="SLIMBUS_5_TX LSM Function" value="AUDIO" />
         <ctl name="LSM2 Port" value="SLIMBUS_5_TX" />
         <ctl name="LSM2 Mixer SLIMBUS_5_TX" value="1" />
     </path>
+
     <path name="listen-voice-wakeup-3">
         <ctl name="SLIMBUS_5_TX LSM Function" value="AUDIO" />
         <ctl name="LSM3 Port" value="SLIMBUS_5_TX" />
         <ctl name="LSM3 Mixer SLIMBUS_5_TX" value="1" />
     </path>
+
     <path name="listen-voice-wakeup-4">
         <ctl name="SLIMBUS_5_TX LSM Function" value="AUDIO" />
         <ctl name="LSM4 Port" value="SLIMBUS_5_TX" />
         <ctl name="LSM4 Mixer SLIMBUS_5_TX" value="1" />
     </path>
+
     <path name="listen-voice-wakeup-5">
         <ctl name="SLIMBUS_5_TX LSM Function" value="AUDIO" />
         <ctl name="LSM5 Port" value="SLIMBUS_5_TX" />
         <ctl name="LSM5 Mixer SLIMBUS_5_TX" value="1" />
     </path>
+
     <path name="listen-voice-wakeup-6">
         <ctl name="SLIMBUS_5_TX LSM Function" value="AUDIO" />
         <ctl name="LSM6 Port" value="SLIMBUS_5_TX" />
         <ctl name="LSM6 Mixer SLIMBUS_5_TX" value="1" />
     </path>
+
     <path name="listen-voice-wakeup-7">
         <ctl name="SLIMBUS_5_TX LSM Function" value="AUDIO" />
         <ctl name="LSM7 Port" value="SLIMBUS_5_TX" />
         <ctl name="LSM7 Mixer SLIMBUS_5_TX" value="1" />
     </path>
+
     <path name="listen-voice-wakeup-8">
         <ctl name="SLIMBUS_5_TX LSM Function" value="AUDIO" />
         <ctl name="LSM8 Port" value="SLIMBUS_5_TX" />
         <ctl name="LSM8 Mixer SLIMBUS_5_TX" value="1" />
     </path>
 
+    <path name="listen-voice-wakeup-1 preproc">
+        <ctl name="SLIMBUS_0_TX LSM Function" value="SWAUDIO" />
+        <ctl name="LSM1 Port" value="ADM_LSM_TX" />
+        <ctl name="LSM1 Mixer SLIMBUS_0_TX" value="1" />
+    </path>
+
+    <path name="listen-voice-wakeup-2 preproc">
+        <ctl name="SLIMBUS_0_TX LSM Function" value="SWAUDIO" />
+        <ctl name="LSM2 Port" value="ADM_LSM_TX" />
+        <ctl name="LSM2 Mixer SLIMBUS_0_TX" value="1" />
+    </path>
+
+    <path name="listen-voice-wakeup-3 preproc">
+        <ctl name="SLIMBUS_0_TX LSM Function" value="SWAUDIO" />
+        <ctl name="LSM3 Port" value="ADM_LSM_TX" />
+        <ctl name="LSM3 Mixer SLIMBUS_0_TX" value="1" />
+    </path>
+
+    <path name="listen-voice-wakeup-4 preproc">
+        <ctl name="SLIMBUS_0_TX LSM Function" value="SWAUDIO" />
+        <ctl name="LSM4 Port" value="ADM_LSM_TX" />
+        <ctl name="LSM4 Mixer SLIMBUS_0_TX" value="1" />
+    </path>
+
+    <path name="listen-voice-wakeup-5 preproc">
+        <ctl name="SLIMBUS_0_TX LSM Function" value="SWAUDIO" />
+        <ctl name="LSM5 Port" value="ADM_LSM_TX" />
+        <ctl name="LSM5 Mixer SLIMBUS_0_TX" value="1" />
+    </path>
+
+    <path name="listen-voice-wakeup-6 preproc">
+        <ctl name="SLIMBUS_0_TX LSM Function" value="SWAUDIO" />
+        <ctl name="LSM6 Port" value="ADM_LSM_TX" />
+        <ctl name="LSM6 Mixer SLIMBUS_0_TX" value="1" />
+    </path>
+
+    <path name="listen-voice-wakeup-7 preproc">
+        <ctl name="SLIMBUS_0_TX LSM Function" value="SWAUDIO" />
+        <ctl name="LSM7 Port" value="ADM_LSM_TX" />
+        <ctl name="LSM7 Mixer SLIMBUS_0_TX" value="1" />
+    </path>
+
+    <path name="listen-voice-wakeup-8 preproc">
+        <ctl name="SLIMBUS_0_TX LSM Function" value="SWAUDIO" />
+        <ctl name="LSM8 Port" value="ADM_LSM_TX" />
+        <ctl name="LSM8 Mixer SLIMBUS_0_TX" value="1" />
+    </path>
+
     <path name="listen-cpe-handset-mic">
         <ctl name="MAD Input" value="DMIC0" />
         <ctl name="MAD_SEL MUX" value="SPE" />
@@ -129,4 +201,40 @@
         <ctl name="AIF4_MAD Mixer SLIM TX13" value="1" />
     </path>
 
+    <path name="listen-ape-handset-mic-preproc">
+        <ctl name="AIF1_CAP Mixer SLIM TX7" value="1" />
+        <ctl name="SLIM_0_TX Channels" value="One" />
+        <ctl name="CDC_IF TX7 MUX" value="DEC7" />
+        <ctl name="ADC MUX7" value="DMIC" />
+        <ctl name="DMIC MUX7" value="DMIC2" />
+        <ctl name="IIR0 INP0 MUX" value="DEC7" />
+    </path>
+
+    <path name="listen-ape-handset-qmic">
+        <ctl name="AIF1_CAP Mixer SLIM TX5" value="1" />
+        <ctl name="AIF1_CAP Mixer SLIM TX6" value="1" />
+        <ctl name="AIF1_CAP Mixer SLIM TX7" value="1" />
+        <ctl name="AIF1_CAP Mixer SLIM TX8" value="1" />
+        <ctl name="SLIM_0_TX Channels" value="Four" />
+        <ctl name="CDC_IF TX5 MUX" value="DEC5" />
+        <ctl name="ADC MUX5" value="DMIC" />
+        <ctl name="DMIC MUX5" value="DMIC1" />
+        <ctl name="CDC_IF TX6 MUX" value="DEC6" />
+        <ctl name="ADC MUX6" value="DMIC" />
+        <ctl name="DMIC MUX6" value="DMIC0" />
+        <ctl name="CDC_IF TX7 MUX" value="DEC7" />
+        <ctl name="ADC MUX7" value="DMIC" />
+        <ctl name="DMIC MUX7" value="DMIC2" />
+        <ctl name="CDC_IF TX8 MUX" value="DEC8" />
+        <ctl name="ADC MUX8" value="DMIC" />
+        <ctl name="DMIC MUX8" value="DMIC5" />
+    </path>
+
+    <path name="echo-reference">
+        <ctl name="AUDIO_REF_EC_UL1 MUX" value="SLIM_RX"/>
+        <ctl name="EC Reference Channels" value="Two"/>
+        <ctl name="EC Reference Bit Format" value="S16_LE"/>
+        <ctl name="EC Reference SampleRate" value="48000"/>
+    </path>
+
 </mixer>
diff --git a/configs/sdm660/sound_trigger_platform_info.xml b/configs/sdm660/sound_trigger_platform_info.xml
index f870d04..80d62d9 100644
--- a/configs/sdm660/sound_trigger_platform_info.xml
+++ b/configs/sdm660/sound_trigger_platform_info.xml
@@ -32,11 +32,18 @@
         <param max_wdsp_sessions="2" />
         <param max_ape_sessions="8" />
         <param enable_failure_detection="false" />
+        <!-- Below backend params must match with port used in mixer path file -->
+        <!-- param used to configure backend sample rate, format and channels -->
+        <param backend_port_name="SLIM_0_TX" />
+        <!-- Param used to match and obtain device backend index -->
+        <param backend_dai_name="SLIMBUS_0_TX" />
     </common_config>
     <acdb_ids>
         <param DEVICE_HANDSET_MIC_APE="100" />
         <param DEVICE_HANDSET_MIC_CPE="128" />
         <param DEVICE_HANDSET_MIC_ECPP_CPE="128" />
+        <param DEVICE_HANDSET_MIC_PP_APE="137" />
+        <param DEVICE_HANDSET_QMIC_APE="138" />
     </acdb_ids>
     <!-- Multiple sound_model_config tags can be listed, each with unique   -->
     <!-- vendor_uuid. The below tag represents QTI SVA engine sound model   -->
@@ -57,6 +64,9 @@
         <!-- adm_cfg_profile should match with the one defined under adm_config -->
         <!-- Set it to NONE if LSM directly connects to AFE -->
         <param adm_cfg_profile="NONE" />
+        <!-- fluence_type: "FLUENCE", FLUENCE_DMIC", FLUENCE_QMIC" -->
+        <!-- param value is valid when adm_cfg_profile="FLUENCE" -->
+        <param fluence_type="FLUENCE_QMIC" />
         <gcs_usecase>
             <param uid="0x1" />
             <!-- module_id, instance_id, param_id -->
@@ -75,11 +85,25 @@
             <param read_rsp_ids="0x00020013, 0x3, 0x00020016" />
         </gcs_usecase>
         <!-- Module and param ids with which the algorithm is integrated
-            in non-graphite firmware (note these must come after gcs params) -->
-        <param load_sound_model_ids="0x00012C0D, 0x00012C14" />
-        <param unload_sound_model_ids="0x00012C0D, 0x00012C15" />
-        <param confidence_levels_ids="0x00012C0D, 0x00012C07" />
-        <param operation_mode_ids="0x00012C0D, 0x00012C02" />
+            in non-graphite firmware (note these must come after gcs params)
+            Extends flexibility to have different ids based on execution type.
+            valid execution_type values: "WDSP" "ADSP" -->
+        <lsm_usecase>
+            <param execution_type="ADSP" />
+            <param load_sound_model_ids="0x00012C1C, 0x00012C14" />
+            <param unload_sound_model_ids="0x00012C1C, 0x00012C15" />
+            <param confidence_levels_ids="0x00012C1C, 0x00012C07" />
+            <param operation_mode_ids="0x00012C1C, 0x00012C02" />
+            <param polling_enable_ids="0x00012C1C, 0x00012C1B" />
+        </lsm_usecase>
+
+        <lsm_usecase>
+            <param execution_type="WDSP" />
+            <param load_sound_model_ids="0x00012C0D, 0x00012C14" />
+            <param unload_sound_model_ids="0x00012C0D, 0x00012C15" />
+            <param confidence_levels_ids="0x00012C0D, 0x00012C07" />
+            <param operation_mode_ids="0x00012C0D, 0x00012C02" />
+        </lsm_usecase>
 
         <!-- format: "ADPCM_packet" or "PCM_packet" !-->
         <!-- transfer_mode: "FTRT" or "RT" -->
@@ -98,6 +122,13 @@
         <param bit_width="16" />
     </adm_config>
 
+    <adm_config>
+        <param adm_cfg_profile="FLUENCE" />
+        <param app_type="69943" />
+        <param sample_rate="16000" />
+        <param bit_width="16" />
+    </adm_config>
+
     <!-- backend_type tag defines backend type for each device -->
     <!-- Default value is assumed for devices that are not listed here -->
     <backend_type>