diff --git a/Makefile.am b/Makefile.am index 5a1b82f16a5f..e9fd72731fa5 100755 --- a/Makefile.am +++ b/Makefile.am @@ -18,6 +18,9 @@ endif ifeq ($(TARGET_SUPPORT), qrb5165) KBUILD_OPTIONS += CONFIG_ARCH_KONA=y endif +ifeq ($(TARGET_SUPPORT), qcs6490) +KBUILD_OPTIONS += CONFIG_ARCH_LAHAINA=y +endif subdir-ccflags-y += -I$(AUDIO_ROOT)/include/uapi/ @@ -48,6 +51,13 @@ obj-m += asoc/codecs/wcd938x/ bj-m += asoc/codecs/wsa883x/ KBUILD_CFLAGS += -Wno-error endif +ifeq ($(TARGET_SUPPORT), $(filter $(TARGET_SUPPORT), qcs6490)) +obj-m += asoc/codecs/bolero/ +obj-m += asoc/codecs/wcd937x/ +obj-m += asoc/codecs/wcd938x/ +obj-m += asoc/codecs/wsa883x/ +KBUILD_CFLAGS += -Wno-error +endif ifeq ($(TARGET_SUPPORT), sdmsteppe) obj-m += asoc/codecs/bolero/ obj-m += asoc/codecs/wcd937x/ diff --git a/asoc/Kbuild b/asoc/Kbuild index 6014ba9c5634..b80f81a35fed 100755 --- a/asoc/Kbuild +++ b/asoc/Kbuild @@ -15,11 +15,13 @@ endif ifeq ($(CONFIG_SND_SOC_AUTO), y) ifdef CONFIG_SND_SOC_SA8155 + CDEFINES += -DCONFIG_SEN_TDM_DISABLE include $(AUDIO_ROOT)/config/sa8155auto.conf export INCS += -include $(AUDIO_ROOT)/config/sa8155autoconf.h endif ifdef CONFIG_SND_SOC_SA6155 + CDEFINES += -DCONFIG_SEN_TDM_DISABLE include $(AUDIO_ROOT)/config/sa6155auto.conf export INCS += -include $(AUDIO_ROOT)/config/sa6155autoconf.h @@ -72,6 +74,11 @@ else include $(AUDIO_ROOT)/config/konaauto.conf INCS += -include $(AUDIO_ROOT)/config/konaautoconf.h endif + ifeq ($(CONFIG_ARCH_LAHAINA), y) + include $(AUDIO_ROOT)/config/lahainaauto.conf + export + INCS += -include $(AUDIO_ROOT)/config/lahainaautoconf.h + endif ifeq ($(CONFIG_ARCH_LITO), y) include $(AUDIO_ROOT)/config/litoauto.conf export diff --git a/asoc/codecs/Kbuild b/asoc/codecs/Kbuild index 8f19011f6f02..e8cb6f140854 100755 --- a/asoc/codecs/Kbuild +++ b/asoc/codecs/Kbuild @@ -72,6 +72,11 @@ else include $(AUDIO_ROOT)/config/konaauto.conf INCS += -include $(AUDIO_ROOT)/config/konaautoconf.h endif + ifeq ($(CONFIG_ARCH_LAHAINA), y) + include $(AUDIO_ROOT)/config/lahainaauto.conf + export + INCS += -include $(AUDIO_ROOT)/config/lahainaautoconf.h + endif ifeq ($(CONFIG_ARCH_LITO), y) include $(AUDIO_ROOT)/config/litoauto.conf export diff --git a/asoc/codecs/bolero/Kbuild b/asoc/codecs/bolero/Kbuild index a6a11c1a0e7d..4552b59ea7ee 100644 --- a/asoc/codecs/bolero/Kbuild +++ b/asoc/codecs/bolero/Kbuild @@ -30,6 +30,11 @@ ifeq ($(KERNEL_BUILD), 0) include $(AUDIO_ROOT)/config/konaauto.conf INCS += -include $(AUDIO_ROOT)/config/konaautoconf.h endif + ifeq ($(CONFIG_ARCH_LAHAINA), y) + include $(AUDIO_ROOT)/config/lahainaauto.conf + export + INCS += -include $(AUDIO_ROOT)/config/lahainaautoconf.h + endif ifeq ($(CONFIG_ARCH_LITO), y) include $(AUDIO_ROOT)/config/litoauto.conf export diff --git a/asoc/codecs/wcd937x/Kbuild b/asoc/codecs/wcd937x/Kbuild index c7286d0cd875..12efaf338108 100644 --- a/asoc/codecs/wcd937x/Kbuild +++ b/asoc/codecs/wcd937x/Kbuild @@ -36,6 +36,11 @@ ifeq ($(KERNEL_BUILD), 0) export INCS += -include $(AUDIO_ROOT)/config/litoautoconf.h endif + ifeq ($(CONFIG_ARCH_LAHAINA), y) + include $(AUDIO_ROOT)/config/lahainaauto.conf + export + INCS += -include $(AUDIO_ROOT)/config/lahainaautoconf.h + endif endif # As per target team, build is done as follows: diff --git a/asoc/codecs/wcd937x/wcd937x.c b/asoc/codecs/wcd937x/wcd937x.c index c002574d26b2..7bec6b399a87 100644 --- a/asoc/codecs/wcd937x/wcd937x.c +++ b/asoc/codecs/wcd937x/wcd937x.c @@ -1734,8 +1734,9 @@ static int wcd937x_event_notify(struct notifier_block *block, case BOLERO_SLV_EVT_SSR_DOWN: wcd937x->mbhc->wcd_mbhc.deinit_in_progress = true; mbhc = &wcd937x->mbhc->wcd_mbhc; - wcd937x->usbc_hs_status = get_usbc_hs_status(component, - mbhc->mbhc_cfg); + if(mbhc->mbhc_cfg) + wcd937x->usbc_hs_status = get_usbc_hs_status(component, + mbhc->mbhc_cfg); wcd937x_mbhc_ssr_down(wcd937x->mbhc, component); wcd937x_reset_low(wcd937x->dev); break; @@ -1755,7 +1756,8 @@ static int wcd937x_event_notify(struct notifier_block *block, dev_err(component->dev, "%s: mbhc initialization failed\n", __func__); } else { - wcd937x_mbhc_hs_detect(component, mbhc->mbhc_cfg); + if(mbhc->mbhc_cfg) + wcd937x_mbhc_hs_detect(component, mbhc->mbhc_cfg); if (wcd937x->usbc_hs_status) mdelay(500); } diff --git a/asoc/codecs/wcd938x/Kbuild b/asoc/codecs/wcd938x/Kbuild index 873a7b29d434..21181c0f8b5f 100644 --- a/asoc/codecs/wcd938x/Kbuild +++ b/asoc/codecs/wcd938x/Kbuild @@ -23,6 +23,11 @@ ifeq ($(KERNEL_BUILD), 0) export INCS += -include $(AUDIO_ROOT)/config/litoautoconf.h endif + ifeq ($(CONFIG_ARCH_LAHAINA), y) + include $(AUDIO_ROOT)/config/lahainaauto.conf + export + INCS += -include $(AUDIO_ROOT)/config/lahainaautoconf.h + endif endif diff --git a/asoc/codecs/wcd938x/wcd938x.c b/asoc/codecs/wcd938x/wcd938x.c index 1a976b86007d..3448e41f0727 100644 --- a/asoc/codecs/wcd938x/wcd938x.c +++ b/asoc/codecs/wcd938x/wcd938x.c @@ -2161,8 +2161,9 @@ static int wcd938x_event_notify(struct notifier_block *block, NULL); wcd938x->mbhc->wcd_mbhc.deinit_in_progress = true; mbhc = &wcd938x->mbhc->wcd_mbhc; - wcd938x->usbc_hs_status = get_usbc_hs_status(component, - mbhc->mbhc_cfg); + if(mbhc->mbhc_cfg) + wcd938x->usbc_hs_status = get_usbc_hs_status(component, + mbhc->mbhc_cfg); wcd938x_mbhc_ssr_down(wcd938x->mbhc, component); wcd938x_reset_low(wcd938x->dev); break; @@ -2184,7 +2185,8 @@ static int wcd938x_event_notify(struct notifier_block *block, dev_err(component->dev, "%s: mbhc initialization failed\n", __func__); } else { - wcd938x_mbhc_hs_detect(component, mbhc->mbhc_cfg); + if(mbhc->mbhc_cfg) + wcd938x_mbhc_hs_detect(component, mbhc->mbhc_cfg); } wcd938x->mbhc->wcd_mbhc.deinit_in_progress = false; wcd938x->dev_up = true; diff --git a/asoc/codecs/wsa883x/Kbuild b/asoc/codecs/wsa883x/Kbuild index 6cda76756dc2..e9ca09d0eb60 100644 --- a/asoc/codecs/wsa883x/Kbuild +++ b/asoc/codecs/wsa883x/Kbuild @@ -16,6 +16,7 @@ endif ifeq ($(KERNEL_BUILD), 0) ifeq ($(CONFIG_ARCH_LAHAINA), y) include $(AUDIO_ROOT)/config/lahainaauto.conf + export INCS += -include $(AUDIO_ROOT)/config/lahainaautoconf.h endif ifeq ($(CONFIG_ARCH_LITO), y) diff --git a/asoc/kona.c b/asoc/kona.c index 2c1a86c8b973..d801702c667c 100644 --- a/asoc/kona.c +++ b/asoc/kona.c @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2016-2021, The Linux Foundation. All rights reserved. - * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2022-2023, Qualcomm Innovation Center, Inc. All rights reserved. */ #include @@ -328,6 +328,7 @@ static u32 mi2s_ebit_clk[MI2S_MAX] = { Q6AFE_LPASS_CLK_ID_PRI_MI2S_EBIT, Q6AFE_LPASS_CLK_ID_SEC_MI2S_EBIT, Q6AFE_LPASS_CLK_ID_TER_MI2S_EBIT, + Q6AFE_LPASS_CLK_ID_QUAD_MI2S_EBIT, }; static struct mi2s_conf mi2s_intf_conf[MI2S_MAX]; diff --git a/asoc/msm-compress-q6-v2.c b/asoc/msm-compress-q6-v2.c index e84ea1dab668..745ff4771efd 100644 --- a/asoc/msm-compress-q6-v2.c +++ b/asoc/msm-compress-q6-v2.c @@ -1,5 +1,39 @@ // SPDX-License-Identifier: GPL-2.0-only /* Copyright (c) 2012-2021, The Linux Foundation. All rights reserved. + * + * Changes from Qualcomm Innovation Center are provided under the following license: + * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted (subject to the limitations in the + * disclaimer below) 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 Qualcomm Innovation Center, Inc. nor the + * names of its contributors may be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE + * GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT + * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER 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. */ @@ -2950,7 +2984,7 @@ static int msm_compr_trigger(struct snd_compr_stream *cstream, int cmd) } #else if ((prtd->bytes_received > prtd->copied_total) && - (prtd->bytes_received < runtime->fragment_size)) { + ((prtd->bytes_received - prtd->copied_total) < runtime->fragment_size)) { pr_debug("%s: send the only partial buffer to dsp\n", __func__); bytes_to_write = prtd->bytes_received diff --git a/asoc/msm-pcm-hostless.c b/asoc/msm-pcm-hostless.c index 63c5db85fe42..aaf714bc9907 100644 --- a/asoc/msm-pcm-hostless.c +++ b/asoc/msm-pcm-hostless.c @@ -1,5 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-only /* Copyright (c) 2011-2014, 2017-2019 The Linux Foundation. All rights reserved. + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. */ #include @@ -18,7 +19,8 @@ static int msm_pcm_hostless_prepare(struct snd_pcm_substream *substream) pr_err("%s: invalid params\n", __func__); return -EINVAL; } - pm_qos_remove_request(&substream->latency_pm_qos_req); + if (pm_qos_request_active(&substream->latency_pm_qos_req)) + pm_qos_remove_request(&substream->latency_pm_qos_req); return 0; } diff --git a/asoc/msm-pcm-routing-auto.c b/asoc/msm-pcm-routing-auto.c index f8e15f51fc24..14114c820b29 100644 --- a/asoc/msm-pcm-routing-auto.c +++ b/asoc/msm-pcm-routing-auto.c @@ -1818,6 +1818,7 @@ static int msm_routing_find_topology_on_index(int fedai_id, int session_type, in if (cal_block != NULL) { topology = ((struct audio_cal_info_adm_top *) cal_block->cal_info)->topology; + cal_utils_mark_cal_used(cal_block); } mutex_unlock(&cal_data[idx]->lock); return topology; @@ -27440,11 +27441,12 @@ static const struct snd_soc_dapm_route intercon[] = { {"MultiMedia6 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"}, {"MultiMedia6 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"}, {"MultiMedia6 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"}, +#ifndef CONFIG_SEN_TDM_DISABLE {"MultiMedia6 Mixer", "SEN_TDM_TX_0", "SEN_TDM_TX_0"}, {"MultiMedia6 Mixer", "SEN_TDM_TX_1", "SEN_TDM_TX_1"}, {"MultiMedia6 Mixer", "SEN_TDM_TX_2", "SEN_TDM_TX_2"}, {"MultiMedia6 Mixer", "SEN_TDM_TX_3", "SEN_TDM_TX_3"}, - +#endif {"MultiMedia8 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"}, {"MultiMedia9 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"}, @@ -27482,41 +27484,48 @@ static const struct snd_soc_dapm_route intercon[] = { {"MultiMedia18 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"}, {"MultiMedia18 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"}, {"MultiMedia18 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"}, +#ifndef CONFIG_SEN_TDM_DISABLE {"MultiMedia18 Mixer", "SEN_TDM_TX_0", "SEN_TDM_TX_0"}, {"MultiMedia18 Mixer", "SEN_TDM_TX_1", "SEN_TDM_TX_1"}, {"MultiMedia18 Mixer", "SEN_TDM_TX_2", "SEN_TDM_TX_2"}, {"MultiMedia18 Mixer", "SEN_TDM_TX_3", "SEN_TDM_TX_3"}, - +#endif {"MultiMedia19 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"}, {"MultiMedia19 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"}, {"MultiMedia19 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"}, {"MultiMedia19 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"}, {"MultiMedia19 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"}, +#ifndef CONFIG_SEN_TDM_DISABLE {"MultiMedia19 Mixer", "SEN_TDM_TX_0", "SEN_TDM_TX_0"}, {"MultiMedia19 Mixer", "SEN_TDM_TX_1", "SEN_TDM_TX_1"}, {"MultiMedia19 Mixer", "SEN_TDM_TX_2", "SEN_TDM_TX_2"}, {"MultiMedia19 Mixer", "SEN_TDM_TX_3", "SEN_TDM_TX_3"}, +#endif {"MultiMedia28 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"}, {"MultiMedia28 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"}, {"MultiMedia28 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"}, {"MultiMedia28 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"}, {"MultiMedia28 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"}, +#ifndef CONFIG_SEN_TDM_DISABLE {"MultiMedia28 Mixer", "SEN_TDM_TX_0", "SEN_TDM_TX_0"}, {"MultiMedia28 Mixer", "SEN_TDM_TX_1", "SEN_TDM_TX_1"}, {"MultiMedia28 Mixer", "SEN_TDM_TX_2", "SEN_TDM_TX_2"}, {"MultiMedia28 Mixer", "SEN_TDM_TX_3", "SEN_TDM_TX_3"}, +#endif {"MultiMedia29 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"}, {"MultiMedia29 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"}, {"MultiMedia29 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"}, {"MultiMedia29 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"}, {"MultiMedia29 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"}, +#ifndef CONFIG_SEN_TDM_DISABLE {"MultiMedia29 Mixer", "SEN_TDM_TX_0", "SEN_TDM_TX_0"}, {"MultiMedia29 Mixer", "SEN_TDM_TX_1", "SEN_TDM_TX_1"}, {"MultiMedia29 Mixer", "SEN_TDM_TX_2", "SEN_TDM_TX_2"}, {"MultiMedia29 Mixer", "SEN_TDM_TX_3", "SEN_TDM_TX_3"}, +#endif {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia1", "MM_DL1"}, {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia2", "MM_DL2"}, @@ -28824,10 +28833,12 @@ static const struct snd_soc_dapm_route intercon_tdm[] = { {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"}, {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"}, {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"}, +#ifndef CONFIG_SEN_TDM_DISABLE {"PRI_TDM_RX_0 Port Mixer", "SEN_TDM_TX_0", "SEN_TDM_TX_0"}, {"PRI_TDM_RX_0 Port Mixer", "SEN_TDM_TX_1", "SEN_TDM_TX_1"}, {"PRI_TDM_RX_0 Port Mixer", "SEN_TDM_TX_2", "SEN_TDM_TX_2"}, {"PRI_TDM_RX_0 Port Mixer", "SEN_TDM_TX_3", "SEN_TDM_TX_3"}, +#endif {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0 Port Mixer"}, #ifndef CONFIG_MI2S_DISABLE @@ -28853,10 +28864,12 @@ static const struct snd_soc_dapm_route intercon_tdm[] = { {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"}, {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"}, {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"}, +#ifndef CONFIG_SEN_TDM_DISABLE {"PRI_TDM_RX_1 Port Mixer", "SEN_TDM_TX_0", "SEN_TDM_TX_0"}, {"PRI_TDM_RX_1 Port Mixer", "SEN_TDM_TX_1", "SEN_TDM_TX_1"}, {"PRI_TDM_RX_1 Port Mixer", "SEN_TDM_TX_2", "SEN_TDM_TX_2"}, {"PRI_TDM_RX_1 Port Mixer", "SEN_TDM_TX_3", "SEN_TDM_TX_3"}, +#endif {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1 Port Mixer"}, #ifndef CONFIG_MI2S_DISABLE @@ -28882,10 +28895,12 @@ static const struct snd_soc_dapm_route intercon_tdm[] = { {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"}, {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"}, {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"}, +#ifndef CONFIG_SEN_TDM_DISABLE {"PRI_TDM_RX_2 Port Mixer", "SEN_TDM_TX_0", "SEN_TDM_TX_0"}, {"PRI_TDM_RX_2 Port Mixer", "SEN_TDM_TX_1", "SEN_TDM_TX_1"}, {"PRI_TDM_RX_2 Port Mixer", "SEN_TDM_TX_2", "SEN_TDM_TX_2"}, {"PRI_TDM_RX_2 Port Mixer", "SEN_TDM_TX_3", "SEN_TDM_TX_3"}, +#endif {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2 Port Mixer"}, #ifndef CONFIG_MI2S_DISABLE @@ -28911,10 +28926,12 @@ static const struct snd_soc_dapm_route intercon_tdm[] = { {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"}, {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"}, {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"}, +#ifndef CONFIG_SEN_TDM_DISABLE {"PRI_TDM_RX_3 Port Mixer", "SEN_TDM_TX_0", "SEN_TDM_TX_0"}, {"PRI_TDM_RX_3 Port Mixer", "SEN_TDM_TX_1", "SEN_TDM_TX_1"}, {"PRI_TDM_RX_3 Port Mixer", "SEN_TDM_TX_2", "SEN_TDM_TX_2"}, {"PRI_TDM_RX_3 Port Mixer", "SEN_TDM_TX_3", "SEN_TDM_TX_3"}, +#endif {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3 Port Mixer"}, #ifndef CONFIG_MI2S_DISABLE @@ -28940,10 +28957,12 @@ static const struct snd_soc_dapm_route intercon_tdm[] = { {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"}, {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"}, {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"}, +#ifndef CONFIG_SEN_TDM_DISABLE {"SEC_TDM_RX_0 Port Mixer", "SEN_TDM_TX_0", "SEN_TDM_TX_0"}, {"SEC_TDM_RX_0 Port Mixer", "SEN_TDM_TX_1", "SEN_TDM_TX_1"}, {"SEC_TDM_RX_0 Port Mixer", "SEN_TDM_TX_2", "SEN_TDM_TX_2"}, {"SEC_TDM_RX_0 Port Mixer", "SEN_TDM_TX_3", "SEN_TDM_TX_3"}, +#endif {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0 Port Mixer"}, #ifndef CONFIG_MI2S_DISABLE @@ -28969,10 +28988,12 @@ static const struct snd_soc_dapm_route intercon_tdm[] = { {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"}, {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"}, {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"}, +#ifndef CONFIG_SEN_TDM_DISABLE {"SEC_TDM_RX_1 Port Mixer", "SEN_TDM_TX_0", "SEN_TDM_TX_0"}, {"SEC_TDM_RX_1 Port Mixer", "SEN_TDM_TX_1", "SEN_TDM_TX_1"}, {"SEC_TDM_RX_1 Port Mixer", "SEN_TDM_TX_2", "SEN_TDM_TX_2"}, {"SEC_TDM_RX_1 Port Mixer", "SEN_TDM_TX_3", "SEN_TDM_TX_3"}, +#endif {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1 Port Mixer"}, #ifndef CONFIG_MI2S_DISABLE @@ -28998,10 +29019,12 @@ static const struct snd_soc_dapm_route intercon_tdm[] = { {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"}, {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"}, {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"}, +#ifndef CONFIG_SEN_TDM_DISABLE {"SEC_TDM_RX_2 Port Mixer", "SEN_TDM_TX_0", "SEN_TDM_TX_0"}, {"SEC_TDM_RX_2 Port Mixer", "SEN_TDM_TX_1", "SEN_TDM_TX_1"}, {"SEC_TDM_RX_2 Port Mixer", "SEN_TDM_TX_2", "SEN_TDM_TX_2"}, {"SEC_TDM_RX_2 Port Mixer", "SEN_TDM_TX_3", "SEN_TDM_TX_3"}, +#endif {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2 Port Mixer"}, #ifndef CONFIG_MI2S_DISABLE @@ -29027,10 +29050,12 @@ static const struct snd_soc_dapm_route intercon_tdm[] = { {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"}, {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"}, {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"}, +#ifndef CONFIG_SEN_TDM_DISABLE {"SEC_TDM_RX_3 Port Mixer", "SEN_TDM_TX_0", "SEN_TDM_TX_0"}, {"SEC_TDM_RX_3 Port Mixer", "SEN_TDM_TX_1", "SEN_TDM_TX_1"}, {"SEC_TDM_RX_3 Port Mixer", "SEN_TDM_TX_2", "SEN_TDM_TX_2"}, {"SEC_TDM_RX_3 Port Mixer", "SEN_TDM_TX_3", "SEN_TDM_TX_3"}, +#endif {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Port Mixer"}, {"SEC_TDM_RX_7 Port Mixer", "TERT_TDM_TX_7", "TERT_TDM_TX_7"}, @@ -29059,10 +29084,12 @@ static const struct snd_soc_dapm_route intercon_tdm[] = { {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"}, {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"}, {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"}, +#ifndef CONFIG_SEN_TDM_DISABLE {"TERT_TDM_RX_0 Port Mixer", "SEN_TDM_TX_0", "SEN_TDM_TX_0"}, {"TERT_TDM_RX_0 Port Mixer", "SEN_TDM_TX_1", "SEN_TDM_TX_1"}, {"TERT_TDM_RX_0 Port Mixer", "SEN_TDM_TX_2", "SEN_TDM_TX_2"}, {"TERT_TDM_RX_0 Port Mixer", "SEN_TDM_TX_3", "SEN_TDM_TX_3"}, +#endif {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0 Port Mixer"}, #ifndef CONFIG_MI2S_DISABLE @@ -29088,10 +29115,12 @@ static const struct snd_soc_dapm_route intercon_tdm[] = { {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"}, {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"}, {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"}, +#ifndef CONFIG_SEN_TDM_DISABLE {"TERT_TDM_RX_1 Port Mixer", "SEN_TDM_TX_0", "SEN_TDM_TX_0"}, {"TERT_TDM_RX_1 Port Mixer", "SEN_TDM_TX_1", "SEN_TDM_TX_1"}, {"TERT_TDM_RX_1 Port Mixer", "SEN_TDM_TX_2", "SEN_TDM_TX_2"}, {"TERT_TDM_RX_1 Port Mixer", "SEN_TDM_TX_3", "SEN_TDM_TX_3"}, +#endif {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1 Port Mixer"}, #ifndef CONFIG_MI2S_DISABLE @@ -29117,10 +29146,12 @@ static const struct snd_soc_dapm_route intercon_tdm[] = { {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"}, {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"}, {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"}, +#ifndef CONFIG_SEN_TDM_DISABLE {"TERT_TDM_RX_2 Port Mixer", "SEN_TDM_TX_0", "SEN_TDM_TX_0"}, {"TERT_TDM_RX_2 Port Mixer", "SEN_TDM_TX_1", "SEN_TDM_TX_1"}, {"TERT_TDM_RX_2 Port Mixer", "SEN_TDM_TX_2", "SEN_TDM_TX_2"}, {"TERT_TDM_RX_2 Port Mixer", "SEN_TDM_TX_3", "SEN_TDM_TX_3"}, +#endif {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2 Port Mixer"}, #ifndef CONFIG_MI2S_DISABLE @@ -29146,10 +29177,12 @@ static const struct snd_soc_dapm_route intercon_tdm[] = { {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"}, {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"}, {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"}, +#ifndef CONFIG_SEN_TDM_DISABLE {"TERT_TDM_RX_3 Port Mixer", "SEN_TDM_TX_0", "SEN_TDM_TX_0"}, {"TERT_TDM_RX_3 Port Mixer", "SEN_TDM_TX_1", "SEN_TDM_TX_1"}, {"TERT_TDM_RX_3 Port Mixer", "SEN_TDM_TX_2", "SEN_TDM_TX_2"}, {"TERT_TDM_RX_3 Port Mixer", "SEN_TDM_TX_3", "SEN_TDM_TX_3"}, +#endif {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3 Port Mixer"}, #ifndef CONFIG_MI2S_DISABLE @@ -29175,10 +29208,12 @@ static const struct snd_soc_dapm_route intercon_tdm[] = { {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"}, {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"}, {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"}, +#ifndef CONFIG_SEN_TDM_DISABLE {"QUAT_TDM_RX_0 Port Mixer", "SEN_TDM_TX_0", "SEN_TDM_TX_0"}, {"QUAT_TDM_RX_0 Port Mixer", "SEN_TDM_TX_1", "SEN_TDM_TX_1"}, {"QUAT_TDM_RX_0 Port Mixer", "SEN_TDM_TX_2", "SEN_TDM_TX_2"}, {"QUAT_TDM_RX_0 Port Mixer", "SEN_TDM_TX_3", "SEN_TDM_TX_3"}, +#endif {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0 Port Mixer"}, #ifndef CONFIG_MI2S_DISABLE @@ -29204,10 +29239,12 @@ static const struct snd_soc_dapm_route intercon_tdm[] = { {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"}, {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"}, {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"}, +#ifndef CONFIG_SEN_TDM_DISABLE {"QUAT_TDM_RX_1 Port Mixer", "SEN_TDM_TX_0", "SEN_TDM_TX_0"}, {"QUAT_TDM_RX_1 Port Mixer", "SEN_TDM_TX_1", "SEN_TDM_TX_1"}, {"QUAT_TDM_RX_1 Port Mixer", "SEN_TDM_TX_2", "SEN_TDM_TX_2"}, {"QUAT_TDM_RX_1 Port Mixer", "SEN_TDM_TX_3", "SEN_TDM_TX_3"}, +#endif {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1 Port Mixer"}, #ifndef CONFIG_MI2S_DISABLE @@ -29233,10 +29270,12 @@ static const struct snd_soc_dapm_route intercon_tdm[] = { {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"}, {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"}, {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"}, +#ifndef CONFIG_SEN_TDM_DISABLE {"QUAT_TDM_RX_2 Port Mixer", "SEN_TDM_TX_0", "SEN_TDM_TX_0"}, {"QUAT_TDM_RX_2 Port Mixer", "SEN_TDM_TX_1", "SEN_TDM_TX_1"}, {"QUAT_TDM_RX_2 Port Mixer", "SEN_TDM_TX_2", "SEN_TDM_TX_2"}, {"QUAT_TDM_RX_2 Port Mixer", "SEN_TDM_TX_3", "SEN_TDM_TX_3"}, +#endif {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2 Port Mixer"}, #ifndef CONFIG_MI2S_DISABLE @@ -29262,10 +29301,12 @@ static const struct snd_soc_dapm_route intercon_tdm[] = { {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"}, {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"}, {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"}, +#ifndef CONFIG_SEN_TDM_DISABLE {"QUAT_TDM_RX_3 Port Mixer", "SEN_TDM_TX_0", "SEN_TDM_TX_0"}, {"QUAT_TDM_RX_3 Port Mixer", "SEN_TDM_TX_1", "SEN_TDM_TX_1"}, {"QUAT_TDM_RX_3 Port Mixer", "SEN_TDM_TX_2", "SEN_TDM_TX_2"}, {"QUAT_TDM_RX_3 Port Mixer", "SEN_TDM_TX_3", "SEN_TDM_TX_3"}, +#endif {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Port Mixer"}, {"QUAT_TDM_RX_7 Port Mixer", "TERT_TDM_TX_7", "TERT_TDM_TX_7"}, @@ -29296,10 +29337,12 @@ static const struct snd_soc_dapm_route intercon_tdm[] = { {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"}, {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"}, {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"}, +#ifndef CONFIG_SEN_TDM_DISABLE {"QUIN_TDM_RX_0 Port Mixer", "SEN_TDM_TX_0", "SEN_TDM_TX_0"}, {"QUIN_TDM_RX_0 Port Mixer", "SEN_TDM_TX_1", "SEN_TDM_TX_1"}, {"QUIN_TDM_RX_0 Port Mixer", "SEN_TDM_TX_2", "SEN_TDM_TX_2"}, {"QUIN_TDM_RX_0 Port Mixer", "SEN_TDM_TX_3", "SEN_TDM_TX_3"}, +#endif {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0 Port Mixer"}, #ifndef CONFIG_MI2S_DISABLE @@ -29325,10 +29368,12 @@ static const struct snd_soc_dapm_route intercon_tdm[] = { {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"}, {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"}, {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"}, +#ifndef CONFIG_SEN_TDM_DISABLE {"QUIN_TDM_RX_1 Port Mixer", "SEN_TDM_TX_0", "SEN_TDM_TX_0"}, {"QUIN_TDM_RX_1 Port Mixer", "SEN_TDM_TX_1", "SEN_TDM_TX_1"}, {"QUIN_TDM_RX_1 Port Mixer", "SEN_TDM_TX_2", "SEN_TDM_TX_2"}, {"QUIN_TDM_RX_1 Port Mixer", "SEN_TDM_TX_3", "SEN_TDM_TX_3"}, +#endif {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1 Port Mixer"}, #ifndef CONFIG_MI2S_DISABLE @@ -29354,10 +29399,12 @@ static const struct snd_soc_dapm_route intercon_tdm[] = { {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"}, {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"}, {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"}, +#ifndef CONFIG_SEN_TDM_DISABLE {"QUIN_TDM_RX_2 Port Mixer", "SEN_TDM_TX_0", "SEN_TDM_TX_0"}, {"QUIN_TDM_RX_2 Port Mixer", "SEN_TDM_TX_1", "SEN_TDM_TX_1"}, {"QUIN_TDM_RX_2 Port Mixer", "SEN_TDM_TX_2", "SEN_TDM_TX_2"}, {"QUIN_TDM_RX_2 Port Mixer", "SEN_TDM_TX_3", "SEN_TDM_TX_3"}, +#endif {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2 Port Mixer"}, #ifndef CONFIG_MI2S_DISABLE @@ -29383,10 +29430,12 @@ static const struct snd_soc_dapm_route intercon_tdm[] = { {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"}, {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"}, {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"}, +#ifndef CONFIG_SEN_TDM_DISABLE {"QUIN_TDM_RX_3 Port Mixer", "SEN_TDM_TX_0", "SEN_TDM_TX_0"}, {"QUIN_TDM_RX_3 Port Mixer", "SEN_TDM_TX_1", "SEN_TDM_TX_1"}, {"QUIN_TDM_RX_3 Port Mixer", "SEN_TDM_TX_2", "SEN_TDM_TX_2"}, {"QUIN_TDM_RX_3 Port Mixer", "SEN_TDM_TX_3", "SEN_TDM_TX_3"}, +#endif {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3 Port Mixer"}, {"QUIN_TDM_RX_7 Port Mixer", "TERT_TDM_TX_7", "TERT_TDM_TX_7"}, @@ -32338,6 +32387,9 @@ static int msm_pcm_routing_prepare(struct snd_pcm_substream *substream) (fdai->passthr_mode == LEGACY_PCM)) msm_pcm_routing_cfg_pp(port_id, copp_idx, topology, channels); + if(msm_pcm_routing_channel_mixer(i, fdai->perf_mode,fdai->strm_id, session_type)){ + pr_err("%s: failed to send channel mixer \n", __func__); + } } } diff --git a/asoc/msm-pcm-routing-v2.c b/asoc/msm-pcm-routing-v2.c index 6ec26e7d53b9..d77844984bdb 100644 --- a/asoc/msm-pcm-routing-v2.c +++ b/asoc/msm-pcm-routing-v2.c @@ -1,6 +1,39 @@ // SPDX-License-Identifier: GPL-2.0-only /* Copyright (c) 2012-2021, The Linux Foundation. All rights reserved. - * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. + * + * Changes from Qualcomm Innovation Center are provided under the following license: + * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted (subject to the limitations in the + * disclaimer below) 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 Qualcomm Innovation Center, Inc. nor the + * names of its contributors may be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE + * GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT + * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER 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. */ /* * Add support for 24 and 32bit format for ASM loopback and playback session. @@ -33189,7 +33222,7 @@ static const struct soc_enum wsa_rx_0_vi_fb_rch_mux_enum = wsa_rx_0_vi_fb_tx_rch_mux_text, wsa_rx_0_vi_fb_tx_rch_value); static const struct soc_enum mi2s_rx_vi_fb_mux_enum = - SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_PRI_MI2S_RX, 0, 0, + SOC_VALUE_ENUM_DOUBLE(SND_SOC_NOPM, MSM_BACKEND_DAI_PRI_MI2S_RX, 0, 0, ARRAY_SIZE(mi2s_rx_vi_fb_tx_mux_text), mi2s_rx_vi_fb_tx_mux_text, mi2s_rx_vi_fb_tx_value); diff --git a/dsp/Kbuild b/dsp/Kbuild index 2c5506ff7c5c..060ce5d88009 100755 --- a/dsp/Kbuild +++ b/dsp/Kbuild @@ -61,6 +61,10 @@ else include $(AUDIO_ROOT)/config/konaauto.conf INCS += -include $(AUDIO_ROOT)/config/konaautoconf.h endif + ifeq ($(CONFIG_ARCH_LAHAINA), y) + include $(AUDIO_ROOT)/config/lahainaauto.conf + INCS += -include $(AUDIO_ROOT)/config/lahainaautoconf.h + endif ifeq ($(CONFIG_ARCH_LITO), y) include $(AUDIO_ROOT)/config/litoauto.conf export diff --git a/dsp/audio_cal_utils.c b/dsp/audio_cal_utils.c index 01e9c349142d..1406088b4ea6 100644 --- a/dsp/audio_cal_utils.c +++ b/dsp/audio_cal_utils.c @@ -1,6 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2014-2020, The Linux Foundation. All rights reserved. + * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. */ #include #include @@ -458,6 +459,7 @@ static void delete_cal_block(struct cal_block_data *cal_block) cal_block->map_data.dma_buf = NULL; } kfree(cal_block); + cal_block = NULL; done: return; } diff --git a/dsp/audio_calibration.c b/dsp/audio_calibration.c index a77be946a231..74a05c27b04a 100644 --- a/dsp/audio_calibration.c +++ b/dsp/audio_calibration.c @@ -1,6 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2014, 2016-2017, 2020-2021, The Linux Foundation. All rights reserved. + * Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. */ #include #include @@ -416,7 +417,7 @@ static long audio_cal_shared_ioctl(struct file *file, unsigned int cmd, pr_err("%s: Could not copy size value from user\n", __func__); ret = -EFAULT; goto done; - } else if ((size < sizeof(struct audio_cal_basic)) + } else if ((size < 0) || (size < sizeof(struct audio_cal_basic)) || (size > MAX_IOCTL_CMD_SIZE)) { pr_err("%s: Invalid size sent to driver: %d, max size is %d, min size is %zd\n", __func__, size, MAX_IOCTL_CMD_SIZE, diff --git a/dsp/codecs/Kbuild b/dsp/codecs/Kbuild index 68b05ffacced..c87c4224de79 100644 --- a/dsp/codecs/Kbuild +++ b/dsp/codecs/Kbuild @@ -28,6 +28,11 @@ ifeq ($(KERNEL_BUILD), 0) include $(AUDIO_ROOT)/config/konaauto.conf INCS += -include $(AUDIO_ROOT)/config/konaautoconf.h endif + ifeq ($(CONFIG_ARCH_LAHAINA), y) + include $(AUDIO_ROOT)/config/lahainaauto.conf + export + INCS += -include $(AUDIO_ROOT)/config/lahainaautoconf.h + endif ifeq ($(CONFIG_ARCH_LITO), y) include $(AUDIO_ROOT)/config/litoauto.conf export diff --git a/include/dsp/apr_audio-v2.h b/include/dsp/apr_audio-v2.h index f1c73e5087b8..ed5963474da6 100644 --- a/include/dsp/apr_audio-v2.h +++ b/include/dsp/apr_audio-v2.h @@ -333,9 +333,11 @@ struct adm_cmd_device_open_v5 { */ u16 endpoint_id_2; -/* Logical and physical endpoint ID 2 for a voice processor - * Tx block. - * This is not applicable to audio COPP. +/* Endpoint 2 is set with 0xFFFF by default. + * In cases of ECREF, Endpoint 2 can be set with the ecref AFE port id, + * which will be connected to the TX block. + * ECREF data is given as input to the TX block. + * Endpoint 2 is applicable to audio CoPreP. * Supported values: * - AFE Rx port * - 0xFFFF -- Endpoint 2 is unavailable and the voice @@ -423,9 +425,11 @@ struct adm_cmd_device_open_v6 { */ u16 endpoint_id_2; -/* Logical and physical endpoint ID 2 for a voice processor - * Tx block. - * This is not applicable to audio COPP. +/* Endpoint 2 is set with 0xFFFF by default. + * In cases of ECREF, Endpoint 2 can be set with the ecref AFE port id, + * which will be connected to the TX block. + * ECREF data is given as input to the TX block. + * Endpoint 2 is applicable to audio CoPreP. * Supported values: * - AFE Rx port * - 0xFFFF -- Endpoint 2 is unavailable and the voice @@ -589,9 +593,11 @@ struct adm_cmd_device_open_v8 { */ u16 endpoint_id_2; -/* Logical and physical endpoint ID 2 for a voice processor - * Tx block. - * This is not applicable to audio COPP. +/* Endpoint 2 is set with 0xFFFF by default. + * In cases of ECREF, Endpoint 2 can be set with the ecref AFE port id, + * which will be connected to the TX block. + * ECREF data is given as input to the TX block. + * Endpoint 2 is applicable to audio CoPreP. * Supported values: * - AFE Rx port * - 0xFFFF -- Endpoint 2 is unavailable and the voice diff --git a/ipc/Kbuild b/ipc/Kbuild index 06a1f42b9063..1a70731e6dfc 100755 --- a/ipc/Kbuild +++ b/ipc/Kbuild @@ -62,6 +62,11 @@ else include $(AUDIO_ROOT)/config/konaauto.conf INCS += -include $(AUDIO_ROOT)/config/konaautoconf.h endif + ifeq ($(CONFIG_ARCH_LAHAINA), y) + include $(AUDIO_ROOT)/config/lahainaauto.conf + export + INCS += -include $(AUDIO_ROOT)/config/lahainaautoconf.h + endif ifeq ($(CONFIG_ARCH_LITO), y) include $(AUDIO_ROOT)/config/litoauto.conf export diff --git a/soc/Kbuild b/soc/Kbuild index edb9aeee478b..6548624ad390 100755 --- a/soc/Kbuild +++ b/soc/Kbuild @@ -56,6 +56,11 @@ else include $(AUDIO_ROOT)/config/konaauto.conf INCS += -include $(AUDIO_ROOT)/config/konaautoconf.h endif + ifeq ($(CONFIG_ARCH_LAHAINA), y) + include $(AUDIO_ROOT)/config/lahainaauto.conf + export + INCS += -include $(AUDIO_ROOT)/config/lahainaautoconf.h + endif ifeq ($(CONFIG_ARCH_LITO), y) include $(AUDIO_ROOT)/config/litoauto.conf export