diff --git a/asoc/msm-audio-effects-q6-v2.c b/asoc/msm-audio-effects-q6-v2.c index 35b50e724c6a..cb795f5bef45 100644 --- a/asoc/msm-audio-effects-q6-v2.c +++ b/asoc/msm-audio-effects-q6-v2.c @@ -1,5 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-only /* Copyright (c) 2013-2021, The Linux Foundation. All rights reserved. + * Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. */ #include @@ -1002,6 +1003,14 @@ int msm_audio_effects_pbe_handler(struct audio_client *ac, pbe->config.reserved = GET_NEXT(values, param_max_offset, rc); + if ((pbe->config.bandpass_filter_order > 3) || + (pbe->config.bandpass_filter_order < 1)) { + pr_err("%s: Invalid BPF order\n", + __func__); + rc = -EINVAL; + goto invalid_config; + } + p_coeffs = &pbe->config.p1LowPassCoeffs[0]; lpf_len = (pbe->config.xover_filter_order == 3) ? 10 : 5; hpf_len = (pbe->config.xover_filter_order == 3) ? 10 : 5; diff --git a/asoc/msm-pcm-routing-v2.c b/asoc/msm-pcm-routing-v2.c index 696dc7fe8e90..053262d07c87 100644 --- a/asoc/msm-pcm-routing-v2.c +++ b/asoc/msm-pcm-routing-v2.c @@ -32500,8 +32500,13 @@ done: static int msm_source_tracking_info(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo) { - uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES; - uinfo->count = sizeof(struct source_tracking_param); + if (strnstr(kcontrol->id.name, "FNN", sizeof("FNN"))) { + uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES; + uinfo->count = sizeof(struct fluence_nn_source_tracking_param); + } else { + uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES; + uinfo->count = sizeof(struct source_tracking_param); + } return 0; } @@ -32511,20 +32516,33 @@ static int msm_voice_source_tracking_get(struct snd_kcontrol *kcontrol, { int ret = 0; struct source_tracking_param sourceTrackingData; + struct fluence_nn_source_tracking_param FnnSourceTrackingData; - memset(&sourceTrackingData, 0, sizeof(struct source_tracking_param)); + if (strnstr(kcontrol->id.name, "FNN", sizeof("FNN"))) { + memset(&FnnSourceTrackingData, 0, sizeof(struct fluence_nn_source_tracking_param)); + ret = voc_get_fnn_source_tracking(&FnnSourceTrackingData); + if (ret) { + pr_err("%s: Error getting FNN ST Params, err=%d\n", + __func__, ret); - ret = voc_get_source_tracking(&sourceTrackingData); - if (ret) { - pr_debug("%s: Error getting Source Tracking Params, err=%d\n", - __func__, ret); + ret = -EINVAL; + goto done; + } + memcpy(ucontrol->value.bytes.data, (void *)&FnnSourceTrackingData, + sizeof(struct fluence_nn_source_tracking_param)); + } else { + memset(&sourceTrackingData, 0, sizeof(struct source_tracking_param)); + ret = voc_get_source_tracking(&sourceTrackingData); + if (ret) { + pr_err("%s: Error getting Source Tracking Params, err=%d\n", + __func__, ret); - ret = -EINVAL; - goto done; + ret = -EINVAL; + goto done; + } + memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData, + sizeof(struct source_tracking_param)); } - memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData, - sizeof(struct source_tracking_param)); - done: return ret; } @@ -32724,12 +32742,18 @@ done: static int msm_audio_source_tracking_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { - int ret = 0; + int ret = -EINVAL; struct source_tracking_param sourceTrackingData; + struct fluence_nn_source_tracking_param FnnSourceTrackingData; int port_id, copp_idx; - ret = msm_audio_sound_focus_derive_port_id(kcontrol, - "Source Tracking Audio Tx ", &port_id); + if (strnstr(kcontrol->id.name, "FNN", sizeof("FNN"))) { + ret = msm_audio_sound_focus_derive_port_id(kcontrol, + "FNN STM Audio Tx ", &port_id); + } else { + ret = msm_audio_sound_focus_derive_port_id(kcontrol, + "Source Tracking Audio Tx ", &port_id); + } if (ret) { pr_err("%s: Error in deriving port id, err=%d\n", __func__, ret); @@ -32748,17 +32772,29 @@ static int msm_audio_source_tracking_get(struct snd_kcontrol *kcontrol, goto done; } - ret = adm_get_source_tracking(port_id, copp_idx, &sourceTrackingData); - if (ret) { - pr_err("%s: Error getting Source Tracking Params, err=%d\n", - __func__, ret); + if (strnstr(kcontrol->id.name, "FNN", sizeof("FNN"))) { + ret = adm_get_fnn_source_tracking(port_id, copp_idx, &FnnSourceTrackingData); + if (ret) { + pr_err("%s: Error getting FNN STM Params, err=%d\n", + __func__, ret); - ret = -EINVAL; - goto done; - } + ret = -EINVAL; + goto done; + } + memcpy(ucontrol->value.bytes.data, (void *)&FnnSourceTrackingData, + sizeof(struct fluence_nn_source_tracking_param)); + } else { + ret = adm_get_source_tracking(port_id, copp_idx, &sourceTrackingData); + if (ret) { + pr_err("%s: Error getting Source Tracking Params, err=%d\n", + __func__, ret); - memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData, + ret = -EINVAL; + goto done; + } + memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData, sizeof(struct source_tracking_param)); + } done: return ret; @@ -32833,6 +32869,13 @@ static const struct snd_kcontrol_new msm_source_tracking_controls[] = { .info = msm_source_tracking_info, .get = msm_voice_source_tracking_get, }, + { + .access = SNDRV_CTL_ELEM_ACCESS_READ, + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .name = "FNN STM Voice Tx SLIMBUS_0", + .info = msm_source_tracking_info, + .get = msm_voice_source_tracking_get, + }, { .access = SNDRV_CTL_ELEM_ACCESS_READWRITE, .iface = SNDRV_CTL_ELEM_IFACE_MIXER, @@ -32848,6 +32891,13 @@ static const struct snd_kcontrol_new msm_source_tracking_controls[] = { .info = msm_source_tracking_info, .get = msm_audio_source_tracking_get, }, + { + .access = SNDRV_CTL_ELEM_ACCESS_READ, + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .name = "FNN STM Audio Tx SLIMBUS_0", + .info = msm_source_tracking_info, + .get = msm_audio_source_tracking_get, + }, { .access = SNDRV_CTL_ELEM_ACCESS_READWRITE, .iface = SNDRV_CTL_ELEM_IFACE_MIXER, @@ -32863,6 +32913,13 @@ static const struct snd_kcontrol_new msm_source_tracking_controls[] = { .info = msm_source_tracking_info, .get = msm_voice_source_tracking_get, }, + { + .access = SNDRV_CTL_ELEM_ACCESS_READ, + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .name = "FNN STM Voice Tx TERT_MI2S", + .info = msm_source_tracking_info, + .get = msm_voice_source_tracking_get, + }, { .access = SNDRV_CTL_ELEM_ACCESS_READWRITE, .iface = SNDRV_CTL_ELEM_IFACE_MIXER, @@ -32878,6 +32935,13 @@ static const struct snd_kcontrol_new msm_source_tracking_controls[] = { .info = msm_source_tracking_info, .get = msm_audio_source_tracking_get, }, + { + .access = SNDRV_CTL_ELEM_ACCESS_READ, + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .name = "FNN STM Audio Tx TERT_MI2S", + .info = msm_source_tracking_info, + .get = msm_audio_source_tracking_get, + }, { .access = SNDRV_CTL_ELEM_ACCESS_READWRITE, .iface = SNDRV_CTL_ELEM_IFACE_MIXER, @@ -32893,6 +32957,13 @@ static const struct snd_kcontrol_new msm_source_tracking_controls[] = { .info = msm_source_tracking_info, .get = msm_voice_source_tracking_get, }, + { + .access = SNDRV_CTL_ELEM_ACCESS_READ, + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .name = "FNN STM Voice Tx INT3_MI2S", + .info = msm_source_tracking_info, + .get = msm_voice_source_tracking_get, + }, { .access = SNDRV_CTL_ELEM_ACCESS_READWRITE, .iface = SNDRV_CTL_ELEM_IFACE_MIXER, @@ -32908,6 +32979,13 @@ static const struct snd_kcontrol_new msm_source_tracking_controls[] = { .info = msm_source_tracking_info, .get = msm_audio_source_tracking_get, }, + { + .access = SNDRV_CTL_ELEM_ACCESS_READ, + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .name = "FNN STM Audio Tx INT3_MI2S", + .info = msm_source_tracking_info, + .get = msm_audio_source_tracking_get, + }, { .access = SNDRV_CTL_ELEM_ACCESS_READWRITE, .iface = SNDRV_CTL_ELEM_IFACE_MIXER, @@ -32923,6 +33001,13 @@ static const struct snd_kcontrol_new msm_source_tracking_controls[] = { .info = msm_source_tracking_info, .get = msm_voice_source_tracking_get, }, + { + .access = SNDRV_CTL_ELEM_ACCESS_READ, + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .name = "FNN STM Voice Tx VA_CDC_DMA_TX_0", + .info = msm_source_tracking_info, + .get = msm_voice_source_tracking_get, + }, { .access = SNDRV_CTL_ELEM_ACCESS_READWRITE, .iface = SNDRV_CTL_ELEM_IFACE_MIXER, @@ -32938,6 +33023,13 @@ static const struct snd_kcontrol_new msm_source_tracking_controls[] = { .info = msm_source_tracking_info, .get = msm_audio_source_tracking_get, }, + { + .access = SNDRV_CTL_ELEM_ACCESS_READ, + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .name = "FNN STM Audio Tx VA_CDC_DMA_TX_0", + .info = msm_source_tracking_info, + .get = msm_audio_source_tracking_get, + }, { .access = SNDRV_CTL_ELEM_ACCESS_READWRITE, .iface = SNDRV_CTL_ELEM_IFACE_MIXER, @@ -32953,6 +33045,13 @@ static const struct snd_kcontrol_new msm_source_tracking_controls[] = { .info = msm_source_tracking_info, .get = msm_voice_source_tracking_get, }, + { + .access = SNDRV_CTL_ELEM_ACCESS_READ, + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .name = "FNN STM Voice Tx TX_CDC_DMA_TX_3", + .info = msm_source_tracking_info, + .get = msm_voice_source_tracking_get, + }, { .access = SNDRV_CTL_ELEM_ACCESS_READWRITE, .iface = SNDRV_CTL_ELEM_IFACE_MIXER, @@ -32968,6 +33067,13 @@ static const struct snd_kcontrol_new msm_source_tracking_controls[] = { .info = msm_source_tracking_info, .get = msm_audio_source_tracking_get, }, + { + .access = SNDRV_CTL_ELEM_ACCESS_READ, + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .name = "FNN STM Audio Tx TX_CDC_DMA_TX_3", + .info = msm_source_tracking_info, + .get = msm_audio_source_tracking_get, + }, { .access = SNDRV_CTL_ELEM_ACCESS_READWRITE, .iface = SNDRV_CTL_ELEM_IFACE_MIXER, @@ -32983,6 +33089,13 @@ static const struct snd_kcontrol_new msm_source_tracking_controls[] = { .info = msm_source_tracking_info, .get = msm_voice_source_tracking_get, }, + { + .access = SNDRV_CTL_ELEM_ACCESS_READ, + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .name = "FNN STM Voice Tx QUIN_TDM_TX_0", + .info = msm_source_tracking_info, + .get = msm_voice_source_tracking_get, + }, { .access = SNDRV_CTL_ELEM_ACCESS_READWRITE, .iface = SNDRV_CTL_ELEM_IFACE_MIXER, @@ -32998,6 +33111,13 @@ static const struct snd_kcontrol_new msm_source_tracking_controls[] = { .info = msm_source_tracking_info, .get = msm_audio_source_tracking_get, }, + { + .access = SNDRV_CTL_ELEM_ACCESS_READ, + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .name = "FNN STM Audio Tx QUIN_TDM_TX_0", + .info = msm_source_tracking_info, + .get = msm_audio_source_tracking_get, + }, { .access = SNDRV_CTL_ELEM_ACCESS_READWRITE, .iface = SNDRV_CTL_ELEM_IFACE_MIXER, @@ -33013,6 +33133,13 @@ static const struct snd_kcontrol_new msm_source_tracking_controls[] = { .info = msm_source_tracking_info, .get = msm_audio_source_tracking_get, }, + { + .access = SNDRV_CTL_ELEM_ACCESS_READ, + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .name = "FNN STM Audio Tx PRIMARY_TDM", + .info = msm_source_tracking_info, + .get = msm_audio_source_tracking_get, + }, }; static const struct snd_kcontrol_new msm_source_doa_tracking_controls[] = {