Merge "configs: trinket: Change ACDB ID of speaker to mono"
diff --git a/configs/trinket/sound_trigger_mixer_paths_wcd9335.xml b/configs/trinket/sound_trigger_mixer_paths_wcd9335.xml
index eefbd59..750d302 100644
--- a/configs/trinket/sound_trigger_mixer_paths_wcd9335.xml
+++ b/configs/trinket/sound_trigger_mixer_paths_wcd9335.xml
@@ -1,30 +1,31 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--- Copyright (c) 2017, 2019, The Linux Foundation. All rights reserved. -->
-<!--- -->
-<!--- Redistribution and use in source and binary forms, with or without -->
-<!--- modification, are permitted provided that the following conditions are -->
-<!--- met: -->
-<!--- * Redistributions of source code must retain the above copyright -->
-<!--- notice, this list of conditions and the following disclaimer. -->
-<!--- * Redistributions in binary form must reproduce the above -->
-<!--- copyright notice, this list of conditions and the following -->
-<!--- disclaimer in the documentation and/or other materials provided -->
-<!--- with the distribution. -->
-<!--- * Neither the name of The Linux Foundation nor the names of its -->
-<!--- contributors may be used to endorse or promote products derived -->
-<!--- from this software without specific prior written permission. -->
-<!--- -->
-<!--- THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED -->
-<!--- WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -->
-<!--- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT -->
-<!--- ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS -->
-<!--- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -->
-<!--- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -->
-<!--- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -->
-<!--- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -->
-<!--- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -->
-<!--- OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -->
-<!--- IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -->
+<!--- Copyright (c) 2015-2017, 2019, The Linux Foundation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of The Linux Foundation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
<mixer>
<!-- These are the initial mixer settings -->
@@ -56,6 +57,19 @@
<ctl name="EC BUF MUX INP" value="ZERO" />
<ctl name="ADC MUX1" value="DMIC" />
<ctl name="DMIC MUX1" 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" />
+ <ctl name="AIF1_CAP Mixer SLIM TX5" value="0" />
+ <ctl name="AIF1_CAP Mixer SLIM TX6" value="0" />
+ <ctl name="AIF1_CAP Mixer SLIM TX7" value="0" />
+ <ctl name="AIF1_CAP Mixer SLIM TX8" value="0" />
<path name="listen-voice-wakeup-1">
<ctl name="SLIMBUS_5_TX LSM Function" value="AUDIO" />
@@ -99,11 +113,59 @@
<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="MADONOFF Switch" value="1" />
<ctl name="TX13 INP MUX" value="CPE_TX_PP" />
<ctl name="AIF4_MAD Mixer SLIM TX13" value="1" />
- <ctl name="MAD Input" value="DMIC2" />
+ <ctl name="MAD Input" value="DMIC0" />
<ctl name="CPE AFE MAD Enable" value="1"/>
</path>
@@ -111,14 +173,14 @@
<ctl name="CLK MODE" value="INTERNAL" />
<ctl name="EC BUF MUX INP" value="DEC1" />
<ctl name="ADC MUX1" value="DMIC" />
- <ctl name="DMIC MUX1" value="DMIC2" />
+ <ctl name="DMIC MUX1" value="DMIC0" />
</path>
<!-- path name used for low bandwidth FTRT codec interface -->
<path name="listen-cpe-handset-mic low-speed-intf">
<ctl name="MADONOFF Switch" value="1" />
<ctl name="AIF4_MAD Mixer SLIM TX12" value="1" />
- <ctl name="MAD Input" value="DMIC2" />
+ <ctl name="MAD Input" value="DMIC0" />
<ctl name="CPE AFE MAD Enable" value="1"/>
</path>
@@ -126,7 +188,70 @@
<ctl name="MAD_BROADCAST Switch" value="1" />
<ctl name="TX13 INP MUX" value="MAD_BRDCST" />
<ctl name="AIF4_MAD Mixer SLIM TX13" value="1" />
- <ctl name="MAD Input" value="DMIC2" />
+ <ctl name="MAD Input" value="DMIC0" />
</path>
-</mixer>
+ <path name="listen-ape-handset-mic-preproc">
+ <ctl name="AIF1_CAP Mixer SLIM TX7" value="1"/>
+ <ctl name="SLIM_1_TX Channels" value="One" />
+ <ctl name="SLIM TX7 MUX" value="DEC7" />
+ <ctl name="ADC MUX7" value="DMIC" />
+ <ctl name="DMIC MUX7" value="DMIC0" />
+ <ctl name="IIR0 INP0 MUX" value="DEC7" />
+ </path>
+
+ <path name="listen-ape-handset-dmic">
+ <ctl name="AIF1_CAP Mixer SLIM TX7" value="1" />
+ <ctl name="AIF1_CAP Mixer SLIM TX8" value="1" />
+ <ctl name="SLIM TX7 MUX" value="DEC7" />
+ <ctl name="ADC MUX7" value="DMIC" />
+ <ctl name="DMIC MUX7" value="DMIC0" />
+ <ctl name="SLIM TX8 MUX" value="DEC8" />
+ <ctl name="ADC MUX8" value="DMIC" />
+ <ctl name="DMIC MUX8" value="DMIC3" />
+ <ctl name="SLIM_1_TX Channels" value="Two" />
+ </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="SLIM TX5 MUX" value="DEC5" />
+ <ctl name="ADC MUX5" value="DMIC" />
+ <ctl name="DMIC MUX5" value="DMIC0" />
+ <ctl name="SLIM TX6 MUX" value="DEC6" />
+ <ctl name="ADC MUX6" value="DMIC" />
+ <ctl name="DMIC MUX6" value="DMIC2" />
+ <ctl name="SLIM TX7 MUX" value="DEC7" />
+ <ctl name="ADC MUX7" value="DMIC" />
+ <ctl name="DMIC MUX7" value="DMIC1" />
+ <ctl name="SLIM TX8 MUX" value="DEC8" />
+ <ctl name="ADC MUX8" value="DMIC" />
+ <ctl name="DMIC MUX8" value="DMIC3" />
+ </path>
+
+ <path name="listen-ape-handset-tmic">
+ <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="SLIM_1_TX Channels" value="Three" />
+ <ctl name="SLIM TX5 MUX" value="DEC5" />
+ <ctl name="ADC MUX5" value="DMIC" />
+ <ctl name="DMIC MUX5" value="DMIC0" />
+ <ctl name="SLIM TX6 MUX" value="DEC6" />
+ <ctl name="ADC MUX6" value="DMIC" />
+ <ctl name="DMIC MUX6" value="DMIC2" />
+ <ctl name="SLIM TX7 MUX" value="DEC7" />
+ <ctl name="ADC MUX7" value="DMIC" />
+ <ctl name="DMIC MUX7" value="DMIC4" />
+ </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>
\ No newline at end of file
diff --git a/configs/trinket/sound_trigger_platform_info.xml b/configs/trinket/sound_trigger_platform_info.xml
index 4096a5b..ced9a4f 100644
--- a/configs/trinket/sound_trigger_platform_info.xml
+++ b/configs/trinket/sound_trigger_platform_info.xml
@@ -46,14 +46,14 @@
<!-- Below backend params must match with port used in mixer path file -->
<!-- param used to configure backend sample rate, format and channels -->
<!-- uncomment TX_CDC_DMA_TX_3 values for internal codec and comment SLIM_1_TX values -->
- <param backend_port_name="SLIM_1_TX" />
+ <param backend_port_name="SLIM_0_TX" />
<!-- param backend_port_name="TX_CDC_DMA_TX_3" /-->
<!-- Param used to match and obtain device backend index -->
- <param backend_dai_name="SLIMBUS_1_TX" />
+ <param backend_dai_name="SLIMBUS_0_TX" />
<!-- param backend_dai_name="TX_CDC_DMA_TX_3" /-->
<!-- Param used to indicate if SVA has dedicated SLIM ports -->
<!-- Set to false for platforms with internal codec -->
- <param dedicated_sva_path="true" />
+ <param dedicated_sva_path="false" />
</common_config>
<acdb_ids>
<!--For internal codec please enable below device-->
@@ -92,7 +92,6 @@
<param fluence_type="FLUENCE_TMIC" />
<!-- wdsp_fluence_type: fluence disabled: "NONE" -->
<!-- fluence enabled: "FLUENCE_DMIC", "FLUENCE_TMIC", "FLUENCE_QMIC" -->
- <param wdsp_fluence_type="NONE" />
<arm_ss_usecase>
<!-- Options are "KEYWORD_DETECTION", "USER_VERIFICATION", "CUSTOM_DETECTION" -->
<param sm_detection_type= "KEYWORD_DETECTION" />
@@ -110,51 +109,8 @@
<param bit_wdith="16"/>
<param channel_count="1"/>
</arm_ss_usecase>
- <gcs_usecase>
- <param uid="0x1" />
- <param acdb_devices="DEVICE_HANDSET_MIC_CPE, DEVICE_HANDSET_TMIC_CPE, DEVICE_HEADSET_MIC_CPE" />
- <!-- module_id, instance_id, param_id -->
- <param load_sound_model_ids="0x00012C0D, 0x2, 0x00012C14" />
- <param confidence_levels_ids="0x00012C0D, 0x2, 0x00012C28" />
- <param detection_event_ids="0x00012C0D, 0x2, 0x00012C29" />
- <param read_cmd_ids="0x00020013, 0x2, 0x00020015" />
- <param read_rsp_ids="0x00020013, 0x2, 0x00020016" />
- <param custom_config_ids="0x00012C0D, 0x2, 0x00012C20" />
- </gcs_usecase>
- <gcs_usecase>
- <param uid="0x2" />
- <param acdb_devices="DEVICE_HANDSET_MIC_CPE, DEVICE_HANDSET_TMIC_CPE, DEVICE_HEADSET_MIC_CPE" />
- <param load_sound_model_ids="0x00012C0D, 0x3, 0x00012C14" />
- <param confidence_levels_ids="0x00012C0D, 0x3, 0x00012C28" />
- <param detection_event_ids="0x00012C0D, 0x3, 0x00012C29" />
- <param read_cmd_ids="0x00020013, 0x3, 0x00020015" />
- <param read_rsp_ids="0x00020013, 0x3, 0x00020016" />
- <param custom_config_ids="0x00012C0D, 0x3, 0x00012C20" />
- </gcs_usecase>
- <gcs_usecase>
- <param uid="0x7" />
- <param acdb_devices="DEVICE_HANDSET_DMIC_CPE" />
- <param load_sound_model_ids="0x00012C0D, 0x7, 0x00012C14" />
- <param confidence_levels_ids="0x00012C0D, 0x7, 0x00012C28" />
- <param detection_event_ids="0x00012C0D, 0x7, 0x00012B05" />
- <param read_cmd_ids="0x00020013, 0x7, 0x00020015" />
- <param read_rsp_ids="0x00020013, 0x7, 0x00020016" />
- <param custom_config_ids="0x00012C0D, 0x7, 0x00012C20" />
- <param det_event_type_ids="0x00012C0D, 0x7, 0x00012C2A" />
- </gcs_usecase>
- <gcs_usecase>
- <param uid="0x8" />
- <param acdb_devices="DEVICE_HANDSET_DMIC_CPE" />
- <param load_sound_model_ids="0x00012C0D, 0x8, 0x00012C14" />
- <param confidence_levels_ids="0x00012C0D, 0x8, 0x00012C28" />
- <param detection_event_ids="0x00012C0D, 0x8, 0x00012B05" />
- <param read_cmd_ids="0x00020013, 0x8, 0x00020015" />
- <param read_rsp_ids="0x00020013, 0x8, 0x00020016" />
- <param custom_config_ids="0x00012C0D, 0x8, 0x00012C20" />
- <param det_event_type_ids="0x00012C0D, 0x8, 0x00012C2A" />
- </gcs_usecase>
<!-- Module and param ids with which the algorithm is integrated
- in non-graphite firmware (note these must come after gcs params)
+ in non-graphite firmware
Extends flexibility to have different ids based on execution type.
valid execution_type values: "WDSP" "ADSP" -->
<lsm_usecase>
@@ -171,6 +127,7 @@
<lsm_usecase>
<param execution_mode="WDSP" />
+ <param app_type="2" /> <!-- app type used in ACDB -->
<param load_sound_model_ids="0x00012C0D, 0x00012C14" />
<param unload_sound_model_ids="0x00012C0D, 0x00012C15" />
<param confidence_levels_ids="0x00012C0D, 0x00012C07" />
@@ -209,20 +166,8 @@
<!-- wdsp_fluence_type: fluence disabled: "NONE" -->
<!-- fluence enabled: "FLUENCE_DMIC", "FLUENCE_TMIC", "FLUENCE_QMIC" -->
<param wdsp_fluence_type="NONE" />
- <gcs_usecase>
- <param uid="0x5" />
- <param acdb_devices="DEVICE_HANDSET_MIC_CPE, DEVICE_HANDSET_TMIC_CPE, DEVICE_HEADSET_MIC_CPE" />
- <!-- module_id, instance_id, param_id -->
- <param load_sound_model_ids="0x00012C2E, 0x6, 0x00012C14" />
- <param confidence_levels_ids="0x00012C2E, 0x6, 0x00012C28" />
- <param detection_event_ids="0x00012C2E, 0x6, 0x00012B05" />
- <param read_cmd_ids="0x00020013, 0x6, 0x00020015" />
- <param read_rsp_ids="0x00020013, 0x6, 0x00020016" />
- <param custom_config_ids="0x00012C2E, 0x6, 0x00012C2D" />
- <param det_event_type_ids="0x00012C2E, 0x6, 0x00012C2C" />
- </gcs_usecase>
<!-- Module and param ids with which the algorithm is integrated
- in non-graphite firmware (note these must come after gcs params)
+ in non-graphite firmware
Extends flexibility to have different ids based on execution type.
valid execution_type values: only "ADSP" -->
<lsm_usecase>
@@ -265,29 +210,8 @@
<param fluence_type="FLUENCE_DMIC" />
<!-- wdsp_fluence_type: fluence disabled: "NONE" -->
<!-- fluence enabled: "FLUENCE_DMIC", "FLUENCE_TMIC", "FLUENCE_QMIC" -->
- <param wdsp_fluence_type="NONE" />
- <gcs_usecase>
- <param uid="0x3" />
- <param acdb_devices="DEVICE_HANDSET_MIC_CPE, DEVICE_HANDSET_TMIC_CPE" />
- <param load_sound_model_ids="0x18000001, 0x4, 0x00012C14" />
- <param confidence_levels_ids="0x18000001, 0x4, 0x00012C28" />
- <param detection_event_ids="0x18000001, 0x4, 0x00012C29" />
- <param read_cmd_ids="0x00020013, 0x4, 0x00020015" />
- <param read_rsp_ids="0x00020013, 0x4, 0x00020016" />
- <param custom_config_ids="0x18000001, 0x4, 0x00012C20" />
- </gcs_usecase>
- <gcs_usecase>
- <param uid="0x4" />
- <param acdb_devices="DEVICE_HANDSET_DMIC_CPE" />
- <param load_sound_model_ids="0x18000001, 0x5, 0x00012C14" />
- <param confidence_levels_ids="0x18000001, 0x5, 0x00012C28" />
- <param detection_event_ids="0x18000001, 0x5, 0x00012C29" />
- <param read_cmd_ids="0x00020013, 0x5, 0x00020015" />
- <param read_rsp_ids="0x00020013, 0x5, 0x00020016" />
- <param custom_config_ids="0x18000001, 0x5, 0x00012C20" />
- </gcs_usecase>
<!-- Module and param ids with which the algorithm is integrated
- in non-graphite firmware (note these must come after gcs params)
+ in non-graphite firmware
Extends flexibility to have different ids based on execution type.
valid execution_type values: "WDSP" "ADSP" -->
<lsm_usecase>
@@ -304,6 +228,7 @@
<lsm_usecase>
<param execution_mode="WDSP" />
+ <param app_type="3" /> <!-- app type used in ACDB -->
<param load_sound_model_ids="0x18000001, 0x00012C14" />
<param unload_sound_model_ids="0x18000001, 0x00012C15" />
<param confidence_levels_ids="0x18000001, 0x00012C07" />
diff --git a/hal/audio_extn/ext_hw_plugin.c b/hal/audio_extn/ext_hw_plugin.c
index 3c9458a..1336ae8 100644
--- a/hal/audio_extn/ext_hw_plugin.c
+++ b/hal/audio_extn/ext_hw_plugin.c
@@ -211,7 +211,6 @@
case USECASE_AUDIO_PLAYBACK_LOW_LATENCY:
case USECASE_AUDIO_PLAYBACK_MULTI_CH:
case USECASE_AUDIO_PLAYBACK_OFFLOAD:
-#ifdef MULTIPLE_OFFLOAD_ENABLED
case USECASE_AUDIO_PLAYBACK_OFFLOAD2:
case USECASE_AUDIO_PLAYBACK_OFFLOAD3:
case USECASE_AUDIO_PLAYBACK_OFFLOAD4:
@@ -220,7 +219,6 @@
case USECASE_AUDIO_PLAYBACK_OFFLOAD7:
case USECASE_AUDIO_PLAYBACK_OFFLOAD8:
case USECASE_AUDIO_PLAYBACK_OFFLOAD9:
-#endif
case USECASE_AUDIO_PLAYBACK_ULL:
*plugin_usecase = AUDIO_HAL_PLUGIN_USECASE_DEFAULT_PLAYBACK;
break;
diff --git a/hal/audio_extn/sndmonitor.c b/hal/audio_extn/sndmonitor.c
index b0495ea..5601544 100644
--- a/hal/audio_extn/sndmonitor.c
+++ b/hal/audio_extn/sndmonitor.c
@@ -220,6 +220,7 @@
(strncasecmp(card_id, "sdm", 3) != 0) &&
(strncasecmp(card_id, "sdc", 3) != 0) &&
(strncasecmp(card_id, "sm", 2) != 0) &&
+ (strncasecmp(card_id, "trinket", 7) != 0) &&
(strncasecmp(card_id, "apq", 3) != 0)) {
ALOGW("Skip over non-ADSP snd card %s", card_id);
continue;
diff --git a/hal/audio_extn/utils.c b/hal/audio_extn/utils.c
index 0d43e02..c7d3bd4 100644
--- a/hal/audio_extn/utils.c
+++ b/hal/audio_extn/utils.c
@@ -2337,8 +2337,9 @@
void *hw_info = NULL;
struct mixer *mixer = NULL;
int retry_num = 0;
- int snd_card_num = 0, min_snd_card_num = 0;
+ int snd_card_num = 0;
char* snd_card_name = NULL;
+ int snd_card_detection_info[MAX_SND_CARD] = {0};
if (!mixer_handle) {
ALOGE("invalid mixer handle");
@@ -2346,26 +2347,29 @@
}
*mixer_handle = NULL;
/*
- * Try with all the sound cards ( 0 to 8 ) and if none of them were detected
+ * Try with all the sound cards ( 0 to 7 ) and if none of them were detected
* sleep for 1 sec and try detections with sound card 0 again.
* If sound card gets detected, check if it is relevant, if not check with the
* other sound cards. To ensure that the irrelevant sound card is not check again,
* we maintain it in min_snd_card_num.
*/
while (retry_num < RETRY_NUMBER) {
-
- while (snd_card_num <= MAX_SND_CARD) {
- mixer = mixer_open(snd_card_num);
- if (!mixer)
- snd_card_num++;
- else
- break;
+ snd_card_num = 0;
+ while (snd_card_num < MAX_SND_CARD) {
+ if (snd_card_detection_info[snd_card_num] == 0) {
+ mixer = mixer_open(snd_card_num);
+ if (!mixer)
+ snd_card_num++;
+ else
+ break;
+ } else
+ snd_card_num++;
}
if (!mixer) {
usleep(RETRY_US);
- snd_card_num = min_snd_card_num;
retry_num++;
+ ALOGD("%s: retry, retry_num %d", __func__, retry_num);
continue;
}
@@ -2376,18 +2380,13 @@
return -1;
}
ALOGD("%s: snd_card_name: %s", __func__, snd_card_name);
-
+ snd_card_detection_info[snd_card_num] = 1;
hw_info = hw_info_init(snd_card_name);
if (hw_info) {
ALOGD("%s: Opened sound card:%d", __func__, snd_card_num);
break;
}
- ALOGE("%s: Failed to init hardware info", __func__);
- min_snd_card_num++;
- snd_card_num = min_snd_card_num;
-
- if (snd_card_num >= MAX_SND_CARD)
- break;
+ ALOGE("%s: Failed to init hardware info, snd_card_num:%d", __func__, snd_card_num);
free(snd_card_name);
snd_card_name = NULL;
@@ -2401,7 +2400,7 @@
if (hw_info)
hw_info_deinit(hw_info);
- if ((snd_card_num >= MAX_SND_CARD) || (retry_num >= RETRY_NUMBER)) {
+ if (retry_num >= RETRY_NUMBER) {
ALOGE("%s: Unable to find correct sound card, aborting.", __func__);
return -1;
}
diff --git a/hal/msm8916/platform.c b/hal/msm8916/platform.c
index d5ae0fb..9bb3ce5 100644
--- a/hal/msm8916/platform.c
+++ b/hal/msm8916/platform.c
@@ -170,6 +170,7 @@
#define EVENT_EXTERNAL_MIC "qc_ext_mic"
#define MAX_CAL_NAME 20
#define MAX_MIME_TYPE_LENGTH 30
+#define MAX_SND_CARD_NAME_LENGTH 100
#define GET_IN_DEVICE_INDEX(SND_DEVICE) ((SND_DEVICE) - (SND_DEVICE_IN_BEGIN))
@@ -1954,56 +1955,32 @@
plat_data->hw_dep_fd = fd;
}
-const char * platform_get_snd_card_name_for_acdb_loader(const char *snd_card_name) {
+const char * platform_get_snd_card_name_for_acdb_loader(const char *snd_card_name)
+{
+ const char *acdb_card_name = NULL;
+ char *substring = NULL;
+ char string[MAX_SND_CARD_NAME_LENGTH] = {0};
+ int length = 0;
- if(snd_card_name == NULL)
+ if (snd_card_name == NULL)
return NULL;
- // Both tasha & tasha-lite uses tasha ACDB files
- // simulate sound card name for tasha lite, so that
- // ACDB module loads tasha ACDB files for tasha lite
- if(!strncmp(snd_card_name, "msm8976-tashalite-snd-card",
- sizeof("msm8976-tashalite-snd-card"))) {
- ALOGD("using tasha ACDB files for tasha-lite");
- return "msm8976-tasha-snd-card";
+ /* Both tasha & tasha-lite uses tasha ACDB files
+ simulate sound card name for tasha lite, so that
+ ACDB module loads tasha ACDB files for tasha lite */
+ if ((substring = strstr(snd_card_name, "tashalite")) ||
+ (substring = strstr(snd_card_name, "tasha9326"))) {
+ ALOGD("%s: using tasha ACDB files for tasha-lite", __func__);
+ length = substring - snd_card_name + 1;
+ snprintf(string, length, "%s", snd_card_name);
+ strlcat(string, "tasha-snd-card", sizeof(string));
+ acdb_card_name = strdup(string);
+ return acdb_card_name;
}
-
- if(!strncmp(snd_card_name, "msm8952-tashalite-snd-card",
- sizeof("msm8952-tashalite-snd-card"))) {
- ALOGD("using tasha ACDB files for tasha-lite");
- return "msm8952-tasha-snd-card";
- }
-
- if(!strncmp(snd_card_name, "msm8937-tashalite-snd-card",
- sizeof("msm8937-tashalite-snd-card"))) {
- ALOGD("using tasha ACDB files for tasha-lite");
- return "msm8937-tasha-snd-card";
- }
-
- if(!strncmp(snd_card_name, "msm8953-tashalite-snd-card",
- sizeof("msm8953-tashalite-snd-card"))) {
- ALOGD("using tasha ACDB files for tasha-lite");
- return "msm8953-tasha-snd-card";
- }
-
- if(!strncmp(snd_card_name, "sdm660-tashalite-snd-card",
- sizeof("sdm660-tashalite-snd-card"))) {
- ALOGD("using tasha ACDB files for tasha-lite");
- return "sdm660-tasha-snd-card";
- }
-
- // Both tasha & tasha-lite uses tasha ACDB files
- // simulate sound card name for tasha lite, so that
- // ACDB module loads tasha ACDB files for tasha lite
- if(!strncmp(snd_card_name, "msm8x09-tasha9326-snd-card",
- sizeof("msm8x09-tasha9326-snd-card"))) {
- ALOGD("using tasha ACDB files for tasha-lite");
- return "msm8x09-tasha-snd-card";
- }
- return snd_card_name;
+ acdb_card_name = strdup(snd_card_name);
+ return acdb_card_name;
}
-
int platform_acdb_init(void *platform)
{
struct platform_data *my_data = (struct platform_data *)platform;
diff --git a/hal/msm8974/hw_info.c b/hal/msm8974/hw_info.c
index 477a5c3..42870c5 100755
--- a/hal/msm8974/hw_info.c
+++ b/hal/msm8974/hw_info.c
@@ -679,6 +679,19 @@
hw_info->num_snd_devices = ARRAY_SIZE(tavil_qrd_variant_devices);
hw_info->is_stereo_spkr = false;
strlcpy(hw_info->dev_extn, "-hdk", sizeof(hw_info->dev_extn));
+ } else if (!strncmp(snd_card_name, "trinket-idp-snd-card",
+ sizeof("trinket-idp-snd-card"))) {
+ hw_info->is_stereo_spkr = false;
+ strlcpy(hw_info->name, "trinket", sizeof(hw_info->name));
+ } else if (!strncmp(snd_card_name, "trinket-tashalite-snd-card",
+ sizeof("trinket-tashalite-snd-card"))) {
+ strlcpy(hw_info->name, "trinket", sizeof(hw_info->name));
+ } else if (!strncmp(snd_card_name, "trinket-tasha-snd-card",
+ sizeof("trinket-tasha-snd-card"))) {
+ strlcpy(hw_info->name, "trinket", sizeof(hw_info->name));
+ } else if (!strncmp(snd_card_name, "trinket-tavil-snd-card",
+ sizeof("trinket-tavil-snd-card"))) {
+ strlcpy(hw_info->name, "trinket", sizeof(hw_info->name));
} else {
ALOGW("%s: Not an SDM device", __func__);
}
@@ -731,7 +744,8 @@
update_hardware_info_sdm845(hw_info, snd_card_name);
} else if (strstr(snd_card_name, "sdm660") || strstr(snd_card_name, "sdm670")
|| strstr(snd_card_name, "sm6150") || strstr(snd_card_name, "qcs605-lc")
- || strstr(snd_card_name, "qcs405") || strstr(snd_card_name, "qcs605-ipc")) {
+ || strstr(snd_card_name, "qcs405") || strstr(snd_card_name, "qcs605-ipc")
+ || strstr(snd_card_name, "sm6150") || strstr(snd_card_name, "trinket")) {
ALOGV("Bear - variant soundcard");
update_hardware_info_bear(hw_info, snd_card_name);
} else if (strstr(snd_card_name, "sdx")) {
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 444fc57..a609de1 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -173,6 +173,7 @@
#define EVENT_EXTERNAL_MIC "qc_ext_mic"
#define MAX_CAL_NAME 20
#define MAX_MIME_TYPE_LENGTH 30
+#define MAX_SND_CARD_NAME_LENGTH 100
#define GET_IN_DEVICE_INDEX(SND_DEVICE) ((SND_DEVICE) - (SND_DEVICE_IN_BEGIN))
@@ -1346,7 +1347,9 @@
!strncmp(snd_card_name, "kona-mtp-snd-card",
sizeof("kona-mtp-snd-card")) ||
!strncmp(snd_card_name, "kona-qrd-snd-card",
- sizeof("kona-qrd-snd-card"))) {
+ sizeof("kona-qrd-snd-card")) ||
+ !strncmp(snd_card_name, "trinket-idp-snd-card",
+ sizeof("trinket-idp-snd-card"))) {
ALOGI("%s: snd_card_name: %s", __func__, snd_card_name);
my_data->is_internal_codec = true;
my_data->is_slimbus_interface = false;
@@ -2159,22 +2162,30 @@
plat_data->hw_dep_fd = fd;
}
-const char * platform_get_snd_card_name_for_acdb_loader(const char *snd_card_name) {
+const char * platform_get_snd_card_name_for_acdb_loader(const char *snd_card_name)
+{
+ const char *acdb_card_name = NULL;
+ char *substring = NULL;
+ char string[MAX_SND_CARD_NAME_LENGTH] = {0};
+ int length = 0;
- if(snd_card_name == NULL)
+ if (snd_card_name == NULL)
return NULL;
- if(!strncmp(snd_card_name, "sdm660-tashalite-snd-card",
- sizeof("sdm660-tashalite-snd-card"))) {
- ALOGD("using tasha ACDB files for tasha-lite");
- return "sdm660-tasha-snd-card";
+ /* Both tasha & tasha-lite uses tasha ACDB files
+ simulate sound card name for tasha lite, so that
+ ACDB module loads tasha ACDB files for tasha lite */
+ if ((substring = strstr(snd_card_name, "tashalite")) ||
+ (substring = strstr(snd_card_name, "tasha9326"))) {
+ ALOGD("%s: using tasha ACDB files for tasha-lite", __func__);
+ length = substring - snd_card_name + 1;
+ snprintf(string, length, "%s", snd_card_name);
+ strlcat(string, "tasha-snd-card", sizeof(string));
+ acdb_card_name = strdup(string);
+ return acdb_card_name;
}
- if(!strncmp(snd_card_name, "sdm670-tashalite-snd-card",
- sizeof("sdm670-tashalite-snd-card"))) {
- ALOGD("using tasha ACDB files for tasha-lite");
- return "sdm670-tasha-snd-card";
- }
- return snd_card_name;
+ acdb_card_name = strdup(snd_card_name);
+ return acdb_card_name;
}
static int platform_acdb_init(void *platform)
@@ -2196,6 +2207,10 @@
}
snd_card_name = mixer_get_name(my_data->adev->mixer);
+ if (!snd_card_name) {
+ ALOGE("Failed to get snd_card_name");
+ goto cleanup;
+ }
snd_card_name = platform_get_snd_card_name_for_acdb_loader(snd_card_name);
my_data->acdb_init_data.cvd_version = cvd_version;
@@ -2219,6 +2234,7 @@
strlcpy(my_data->snd_card_name, snd_card_name,
MAX_SND_CARD_STRING_SIZE);
+cleanup:
if (cvd_version)
free(cvd_version);
if (!result) {
@@ -2892,7 +2908,8 @@
if (!my_data->is_slimbus_interface) {
//TODO:: make generic interfaceface to check Slimbus/I2S/CDC_DMA
if (!strncmp(snd_card_name, "sm6150", strlen("sm6150")) ||
- !strncmp(snd_card_name, "kona", strlen("kona"))) {
+ !strncmp(snd_card_name, "kona", strlen("kona")) ||
+ !strncmp(snd_card_name, "trinket", strlen("trinket"))) {
my_data->current_backend_cfg[DEFAULT_CODEC_BACKEND].bitwidth_mixer_ctl =
strdup("WSA_CDC_DMA_RX_0 Format");
my_data->current_backend_cfg[DEFAULT_CODEC_BACKEND].samplerate_mixer_ctl =