Promotion of audio-userspace.lnx.2.2-00030.
CRs Change ID Subject
--------------------------------------------------------------------------------------------------------------
1111739 I1615f369b76706814dc80e0b19d013ca9f3a4890 configs: Modify sound trigger mixer controls
1117388 I264fbbe9c10345da8eea21ac9298963a69b1da26 hal: spkr_prot: Fix uninitialized variable access
Change-Id: I616ee07a0e3870af1bc9e62bdaf97be126314edb
CRs-Fixed: 1111739, 1117388
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>
diff --git a/hal/audio_extn/spkr_protection.c b/hal/audio_extn/spkr_protection.c
index 008130f..52bf3a6 100644
--- a/hal/audio_extn/spkr_protection.c
+++ b/hal/audio_extn/spkr_protection.c
@@ -684,6 +684,7 @@
char buf[32] = {0};
int ret;
+ memset(&protCfg, 0, sizeof(protCfg));
/* If the value of this persist.spkr.cal.duration is 0
* then it means it will take 30min to calibrate
* and if the value is greater than zero then it would take
@@ -1049,9 +1050,9 @@
struct audio_cal_sp_th_vi_param th_vi_cal_data;
struct audio_cal_sp_ex_vi_param ex_vi_cal_data;
int i;
- int ftm_status[SP_V2_NUM_MAX_SPKRS];
- double rdc[SP_V2_NUM_MAX_SPKRS], temp[SP_V2_NUM_MAX_SPKRS];
- double f[SP_V2_NUM_MAX_SPKRS], r[SP_V2_NUM_MAX_SPKRS], q[SP_V2_NUM_MAX_SPKRS];
+ int ftm_status[SP_V2_NUM_MAX_SPKRS] = {0};
+ double rdc[SP_V2_NUM_MAX_SPKRS] = {0}, temp[SP_V2_NUM_MAX_SPKRS] = {0};
+ double f[SP_V2_NUM_MAX_SPKRS] = {0}, r[SP_V2_NUM_MAX_SPKRS] = {0}, q[SP_V2_NUM_MAX_SPKRS] = {0};
int cal_fd = open("/dev/msm_audio_cal",O_RDWR | O_NONBLOCK);
if (cal_fd < 0) {