diff --git a/Makefile.am b/Makefile.am index 5e3faccf5492..207f76746eb3 100755 --- a/Makefile.am +++ b/Makefile.am @@ -44,7 +44,7 @@ obj-m += asoc/codecs/bolero/ obj-m += asoc/codecs/wcd937x/ endif -ifeq ($(TARGET_SUPPORT), $(filter $(TARGET_SUPPORT), sa8155 sa8155ivi sa6155 sa8195 qtiquingvm qtiquingvm8295 sa8295 qtigvmi3)) +ifeq ($(TARGET_SUPPORT), $(filter $(TARGET_SUPPORT), sa8155 sa8155ivi sa6155 sa8195 qtiquingvm qtiquingvm8295 sa8295)) KBUILD_OPTIONS += CONFIG_SND_SOC_AUTO=y obj-m := ipc/ obj-m += dsp/ @@ -57,14 +57,22 @@ endif ifeq ($(TARGET_SUPPORT), $(filter $(TARGET_SUPPORT), sa6155)) KBUILD_OPTIONS += CONFIG_SND_SOC_SA6155=m endif -ifeq ($(TARGET_SUPPORT), $(filter $(TARGET_SUPPORT), qtiquingvm qtigvmi3)) +ifeq ($(TARGET_SUPPORT), $(filter $(TARGET_SUPPORT), qtiquingvm)) KBUILD_OPTIONS += CONFIG_SND_SOC_GVM=m endif ifeq ($(TARGET_SUPPORT), $(filter $(TARGET_SUPPORT), qtiquingvm8295)) KBUILD_OPTIONS += CONFIG_SND_SOC_GVM_SA8295=m endif endif - +ifeq ($(AR_SUPPORT), $(filter $(AR_SUPPORT), yes)) +obj-m := ipc/ +obj-m += dsp/ +obj-m += asoc/ +obj-m += asoc/codecs/ +obj-m += soc/ +KBUILD_OPTIONS += CONFIG_SND_SOC_AUTO=y +KBUILD_OPTIONS += CONFIG_SND_SOC_AR=m +endif all: $(shell rm -fr $(shell pwd)/soc/core.h) $(shell ln -s $(KERNEL_SRC)/drivers/pinctrl/core.h $(shell pwd)/soc/core.h) diff --git a/asoc/Kbuild b/asoc/Kbuild old mode 100644 new mode 100755 index 8f105ae11d28..84aaa73b3eeb --- a/asoc/Kbuild +++ b/asoc/Kbuild @@ -29,6 +29,11 @@ ifeq ($(CONFIG_SND_SOC_AUTO), y) export INCS += -include $(AUDIO_ROOT)/config/gvmautoconf.h endif + ifdef CONFIG_SND_SOC_AR + include $(AUDIO_ROOT)/config/arauto.conf + export + INCS += -include $(AUDIO_ROOT)/config/arautoconf.h + endif ifdef CONFIG_SND_SOC_GVM_SA8295 include $(AUDIO_ROOT)/config/sa8295gvmauto.conf export diff --git a/asoc/codecs/Kbuild b/asoc/codecs/Kbuild index 0e842ee1bf6c..8f19011f6f02 100755 --- a/asoc/codecs/Kbuild +++ b/asoc/codecs/Kbuild @@ -29,6 +29,11 @@ ifeq ($(CONFIG_SND_SOC_AUTO), y) export INCS += -include $(AUDIO_ROOT)/config/gvmautoconf.h endif + ifdef CONFIG_SND_SOC_AR + include $(AUDIO_ROOT)/config/arauto.conf + export + INCS += -include $(AUDIO_ROOT)/config/arautoconf.h + endif ifdef CONFIG_SND_SOC_GVM_SA8295 include $(AUDIO_ROOT)/config/sa8295gvmauto.conf export diff --git a/asoc/codecs/wcd937x/wcd937x.c b/asoc/codecs/wcd937x/wcd937x.c index a563dca20e81..24de137ad11f 100644 --- a/asoc/codecs/wcd937x/wcd937x.c +++ b/asoc/codecs/wcd937x/wcd937x.c @@ -505,7 +505,8 @@ static int wcd937x_codec_hphl_dac_event(struct snd_soc_dapm_widget *w, case SND_SOC_DAPM_POST_PMU: if ((snd_soc_component_read32(component, WCD937X_DIGITAL_EFUSE_REG_16) == 0x02) && - hph_mode == CLS_H_ULP) + ((snd_soc_component_read32(component, + WCD937X_ANA_HPH) & 0x0C) == 0x0C)) snd_soc_component_update_bits(component, WCD937X_RX_BIAS_HPH_LOWPOWER, 0xF0, 0x90); if (hph_mode == CLS_AB_HIFI || hph_mode == CLS_H_HIFI) @@ -551,7 +552,8 @@ static int wcd937x_codec_hphl_dac_event(struct snd_soc_dapm_widget *w, case SND_SOC_DAPM_POST_PMD: if ((snd_soc_component_read32(component, WCD937X_DIGITAL_EFUSE_REG_16) == 0x02) && - hph_mode == CLS_H_ULP) + ((snd_soc_component_read32(component, + WCD937X_ANA_HPH) & 0x0C) == 0x0C)) snd_soc_component_update_bits(component, WCD937X_RX_BIAS_HPH_LOWPOWER, 0xF0, 0x80); snd_soc_component_update_bits(component, @@ -589,7 +591,8 @@ static int wcd937x_codec_hphr_dac_event(struct snd_soc_dapm_widget *w, case SND_SOC_DAPM_POST_PMU: if ((snd_soc_component_read32(component, WCD937X_DIGITAL_EFUSE_REG_16) == 0x02) && - hph_mode == CLS_H_ULP) + ((snd_soc_component_read32(component, + WCD937X_ANA_HPH) & 0x0C) == 0x0C)) snd_soc_component_update_bits(component, WCD937X_RX_BIAS_HPH_LOWPOWER, 0xF0, 0x90); if (hph_mode == CLS_AB_HIFI || hph_mode == CLS_H_HIFI) @@ -635,7 +638,8 @@ static int wcd937x_codec_hphr_dac_event(struct snd_soc_dapm_widget *w, case SND_SOC_DAPM_POST_PMD: if ((snd_soc_component_read32(component, WCD937X_DIGITAL_EFUSE_REG_16) == 0x02) && - hph_mode == CLS_H_ULP) + ((snd_soc_component_read32(component, + WCD937X_ANA_HPH) & 0x0C) == 0x0C)) snd_soc_component_update_bits(component, WCD937X_RX_BIAS_HPH_LOWPOWER, 0xF0, 0x80); snd_soc_component_update_bits(component, diff --git a/asoc/codecs/wcd938x/internal.h b/asoc/codecs/wcd938x/internal.h index 7da5b36875f7..9a86ddf4bf8f 100644 --- a/asoc/codecs/wcd938x/internal.h +++ b/asoc/codecs/wcd938x/internal.h @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: GPL-2.0-only */ /* * Copyright (c) 2018-2020, The Linux Foundation. All rights reserved. + * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. */ #ifndef _WCD938X_INTERNAL_H @@ -110,6 +111,7 @@ struct wcd938x_priv { /* wcd to swr dmic notification */ bool notify_swr_dmic; struct blocking_notifier_head notifier; + int micb_enabled[WCD938X_MAX_MICBIAS]; }; struct wcd938x_micbias_setting { diff --git a/asoc/codecs/wcd938x/wcd938x.c b/asoc/codecs/wcd938x/wcd938x.c index b8e05ae02f33..eae9dfb280b2 100644 --- a/asoc/codecs/wcd938x/wcd938x.c +++ b/asoc/codecs/wcd938x/wcd938x.c @@ -1,6 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2018-2020, The Linux Foundation. All rights reserved. + * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. */ #include @@ -2919,6 +2920,95 @@ static int wcd938x_bcs_put(struct snd_kcontrol *kcontrol, return 0; } +/* + * wcd938x_codec_enable_standalone_micbias - enable micbias standalone + * @component: pointer to component instance + * @micb_num: number of micbias to be enabled + * @enable: true to enable micbias or false to disable + * + * This function is used to enable micbias (1, 2, 3 or 4) during + * standalone independent of whether TX use-case is running or not + * + * Return: error code in case of failure or 0 for success + */ + +int wcd938x_codec_enable_standalone_micbias(struct snd_soc_component *component, + int micb_num, + bool enable) +{ + const char * const micb_names[] = { + DAPM_MICBIAS1_STANDALONE, DAPM_MICBIAS2_STANDALONE, + DAPM_MICBIAS3_STANDALONE, DAPM_MICBIAS4_STANDALONE + }; + int micb_index = micb_num - 1; + int rc; + struct snd_soc_dapm_context *dapm = + snd_soc_component_get_dapm(component); + + if ((micb_index < 0) || (micb_index > WCD938X_MAX_MICBIAS - 1)) { + dev_err(component->dev, "%s: Invalid micbias index, micb_ind:%d\n", + __func__, micb_index); + return -EINVAL; + } + + if (enable) + rc = snd_soc_dapm_force_enable_pin( + dapm, + micb_names[micb_index]); + else + rc = snd_soc_dapm_disable_pin( + dapm, + micb_names[micb_index]); + if (!rc) + snd_soc_dapm_sync(dapm); + else + dev_err(component->dev, "%s: micbias%d force %s pin failed\n", + __func__, micb_num, (enable ? "enable" : "disable")); + + return rc; +} +EXPORT_SYMBOL(wcd938x_codec_enable_standalone_micbias); + +static int wcd938x_get_micbias(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol); + struct wcd938x_priv *wcd938x = snd_soc_component_get_drvdata(component); + int micb_num = ((struct soc_multi_mixer_control *) + kcontrol->private_value)->shift; + + ucontrol->value.integer.value[0] = wcd938x->micb_enabled[micb_num - 1]; + return 0; +} + +static int wcd938x_set_micbias(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol); + struct wcd938x_priv *wcd938x = snd_soc_component_get_drvdata(component); + int micb_num = ((struct soc_multi_mixer_control *) + kcontrol->private_value)->shift; + int value = ucontrol->value.integer.value[0]; + bool enable; + int ret; + + if ((micb_num != MIC_BIAS_1) && (micb_num != MIC_BIAS_2) && + (micb_num != MIC_BIAS_3) && (micb_num != MIC_BIAS_4)) + return -EINVAL; + + enable = !!value; + ret = wcd938x_codec_enable_standalone_micbias(component, micb_num, + enable); + if (ret) { + dev_err(component->dev, "%s: Failed to enable standalone micb:%d\n", + __func__, micb_num); + return ret; + } + + wcd938x->micb_enabled[micb_num - 1] = enable; + return ret; +} + static const char * const tx_mode_mux_text_wcd9380[] = { "ADC_INVALID", "ADC_HIFI", "ADC_LO_HIF", "ADC_NORMAL", "ADC_LP", }; @@ -3045,6 +3135,14 @@ static const struct snd_kcontrol_new wcd938x_snd_controls[] = { wcd938x_tx_master_ch_get, wcd938x_tx_master_ch_put), SOC_ENUM_EXT("DMIC7 ChMap", tx_master_ch_enum, wcd938x_tx_master_ch_get, wcd938x_tx_master_ch_put), + SOC_SINGLE_EXT("MIC BIAS1 Standalone", SND_SOC_NOPM, MIC_BIAS_1, 1, 0, + wcd938x_get_micbias, wcd938x_set_micbias), + SOC_SINGLE_EXT("MIC BIAS2 Standalone", SND_SOC_NOPM, MIC_BIAS_2, 1, 0, + wcd938x_get_micbias, wcd938x_set_micbias), + SOC_SINGLE_EXT("MIC BIAS3 Standalone", SND_SOC_NOPM, MIC_BIAS_3, 1, 0, + wcd938x_get_micbias, wcd938x_set_micbias), + SOC_SINGLE_EXT("MIC BIAS4 Standalone", SND_SOC_NOPM, MIC_BIAS_4, 1, 0, + wcd938x_get_micbias, wcd938x_set_micbias), }; static const struct snd_kcontrol_new adc1_switch[] = { diff --git a/asoc/codecs/wsa881x-analog.c b/asoc/codecs/wsa881x-analog.c index 14d027ac141f..965fc56831ed 100755 --- a/asoc/codecs/wsa881x-analog.c +++ b/asoc/codecs/wsa881x-analog.c @@ -274,7 +274,8 @@ static int wsa881x_i2c_read_device(struct wsa881x_pdata *wsa881x, } pr_debug("read success reg = %x val = %x\n", reg, val); - } else { + } else if (wsa881x->client[wsa881x_index]) { + reg_addr = (u8)reg; msg = &wsa881x->xfer_msg[0]; msg->addr = wsa881x->client[wsa881x_index]->addr; @@ -302,6 +303,9 @@ static int wsa881x_i2c_read_device(struct wsa881x_pdata *wsa881x, } } val = dest[0]; + } else { + pr_err("failed for i2c client is not initilized\n"); + return -EINVAL; } return val; } @@ -1202,15 +1206,16 @@ static int wsa881x_probe(struct snd_soc_component *component) wsa881x_temp_reg_read; snd_soc_component_set_drvdata(component, &wsa_pdata[wsa881x_index]); while (retry) { - if (wsa_pdata[wsa881x_index].regmap[WSA881X_ANALOG_SLAVE] - != NULL) + if (wsa_pdata[wsa881x_index].regmap_flag) break; msleep(100); retry--; } - if (!retry) + if (!retry) { dev_err(&client->dev, "%s: max retry expired and regmap of\n" "analog slave not initilized\n", __func__); + return -EPROBE_DEFER; + } wsa881x_init_thermal(&wsa_pdata[wsa881x_index].tz_pdata); INIT_DELAYED_WORK(&wsa_pdata[wsa881x_index].ocp_ctl_work, wsa881x_ocp_ctl_work); diff --git a/asoc/msm-pcm-q6-v2.c b/asoc/msm-pcm-q6-v2.c old mode 100755 new mode 100644 index 70fc54190027..037885635cce --- a/asoc/msm-pcm-q6-v2.c +++ b/asoc/msm-pcm-q6-v2.c @@ -751,9 +751,11 @@ static int msm_pcm_capture_prepare(struct snd_pcm_substream *substream) else if (params_format(params) == SNDRV_PCM_FORMAT_S32_LE) bits_per_sample = 32; - /* ULL mode is not supported in capture path */ + /* ULL mode is not supported in capture path so using LLNP insted of ULL */ if (pdata->perf_mode == LEGACY_PCM_MODE) prtd->audio_client->perf_mode = LEGACY_PCM_MODE; + else if (pdata->perf_mode == ULTRA_LOW_LATENCY_PCM_MODE) + prtd->audio_client->perf_mode = LOW_LATENCY_PCM_NOPROC_MODE; else prtd->audio_client->perf_mode = LOW_LATENCY_PCM_MODE; @@ -3774,6 +3776,9 @@ static int msm_pcm_probe(struct platform_device *pdev) else if (!strcmp(latency_level, "ull-pp")) pdata->perf_mode = ULL_POST_PROCESSING_PCM_MODE; + else if (!strcmp(latency_level, "llnp")) + pdata->perf_mode = + LOW_LATENCY_PCM_NOPROC_MODE; } } else { pdata->perf_mode = LEGACY_PCM_MODE; diff --git a/asoc/msm-pcm-routing-auto.c b/asoc/msm-pcm-routing-auto.c index dd40eb0c5c31..43eb5344ec3b 100755 --- a/asoc/msm-pcm-routing-auto.c +++ b/asoc/msm-pcm-routing-auto.c @@ -1456,6 +1456,8 @@ int msm_pcm_routing_set_channel_mixer_cfg( struct msm_pcm_channel_mixer *params) { int i, j = 0; + int num_ch_input_map = 0; + int num_ch_out_map = 0; channel_mixer_v2[fe_id][type].enable = params->enable; channel_mixer_v2[fe_id][type].rule = params->rule; @@ -1465,12 +1467,18 @@ int msm_pcm_routing_set_channel_mixer_cfg( params->output_channel; channel_mixer_v2[fe_id][type].port_idx = params->port_idx; - for (i = 0; i < ADM_MAX_CHANNELS; i++) + for (i = 0; i < ADM_MAX_CHANNELS; i++) { channel_mixer_v2[fe_id][type].in_ch_map[i] = params->in_ch_map[i]; - for (i = 0; i < ADM_MAX_CHANNELS; i++) + if (channel_mixer_v2[fe_id][type].in_ch_map[i] > 0) + num_ch_input_map++; + } + for (i = 0; i < ADM_MAX_CHANNELS; i++) { channel_mixer_v2[fe_id][type].out_ch_map[i] = params->out_ch_map[i]; + if (channel_mixer_v2[fe_id][type].out_ch_map[i] > 0) + num_ch_out_map++; + } for (i = 0; i < ADM_MAX_CHANNELS; i++) for (j = 0; j < ADM_MAX_CHANNELS; j++) @@ -1481,7 +1489,14 @@ int msm_pcm_routing_set_channel_mixer_cfg( params->override_in_ch_map; channel_mixer_v2[fe_id][type].override_out_ch_map = params->override_out_ch_map; - + if (channel_mixer_v2[fe_id][type].input_channel != num_ch_input_map && channel_mixer_v2[fe_id][type].override_in_ch_map) { + channel_mixer_v2[fe_id][type].override_in_ch_map =false; + pr_info("%s: mismatched with num_ch_input_map %d override_in_ch_map set to false \n", __func__,num_ch_input_map); + } + if (channel_mixer_v2[fe_id][type].output_channel != num_ch_out_map && channel_mixer_v2[fe_id][type].override_out_ch_map) { + channel_mixer_v2[fe_id][type].override_out_ch_map =false; + pr_info("%s: mismatched with num_ch_out_map %d override_out_ch_map set to false \n", __func__,num_ch_out_map); + } return 0; } EXPORT_SYMBOL(msm_pcm_routing_set_channel_mixer_cfg); @@ -3702,6 +3717,12 @@ static int msm_routing_adm_get_backend_idx(struct snd_kcontrol *kcontrol) backend_id = MSM_BACKEND_DAI_SLIMBUS_7_TX; } else if (strnstr(kcontrol->id.name, "TERT_TDM_TX_0", sizeof("TERT_TDM_TX_0"))) { backend_id = MSM_BACKEND_DAI_TERT_TDM_TX_0; + } else if (strnstr(kcontrol->id.name, "TERT_TDM_RX_0", sizeof("TERT_TDM_RX_0"))) { + backend_id = MSM_BACKEND_DAI_TERT_TDM_RX_0; + } else if (strnstr(kcontrol->id.name, "SEC_TDM_TX_0", sizeof("SEC_TDM_TX_0"))) { + backend_id = MSM_BACKEND_DAI_SEC_TDM_TX_0; + } else if (strnstr(kcontrol->id.name, "SEC_TDM_RX_0", sizeof("SEC_TDM_RX_0"))) { + backend_id = MSM_BACKEND_DAI_SEC_TDM_RX_0; } else { pr_err("%s: unsupported backend id: %s", __func__, kcontrol->id.name); @@ -3752,6 +3773,15 @@ static const struct snd_kcontrol_new adm_channel_config_controls[] = { SOC_ENUM_EXT("TERT_TDM_TX_0 ADM Channels", adm_override_chs, msm_routing_adm_channel_config_get, msm_routing_adm_channel_config_put), + SOC_ENUM_EXT("TERT_TDM_RX_0 ADM Channels", adm_override_chs, + msm_routing_adm_channel_config_get, + msm_routing_adm_channel_config_put), + SOC_ENUM_EXT("SEC_TDM_TX_0 ADM Channels", adm_override_chs, + msm_routing_adm_channel_config_get, + msm_routing_adm_channel_config_put), + SOC_ENUM_EXT("SEC_TDM_RX_0 ADM Channels", adm_override_chs, + msm_routing_adm_channel_config_get, + msm_routing_adm_channel_config_put), }; static int msm_routing_get_port_mixer(struct snd_kcontrol *kcontrol, diff --git a/asoc/msm-pcm-routing-v2.c b/asoc/msm-pcm-routing-v2.c index 0d482e3de41c..d7196fd50ae8 100755 --- a/asoc/msm-pcm-routing-v2.c +++ b/asoc/msm-pcm-routing-v2.c @@ -1721,10 +1721,13 @@ done: EXPORT_SYMBOL(msm_pcm_routing_get_stream_app_type_cfg); static struct cal_block_data *msm_routing_find_topology_by_path(int path, - int cal_index) + int cal_index, + int app_type, + int acdb_id) { struct list_head *ptr, *next; struct cal_block_data *cal_block = NULL; + struct audio_cal_info_adm_top *cal_info; pr_debug("%s\n", __func__); list_for_each_safe(ptr, next, @@ -1735,9 +1738,11 @@ static struct cal_block_data *msm_routing_find_topology_by_path(int path, if (cal_utils_is_cal_stale(cal_block)) continue; - - if (((struct audio_cal_info_adm_top *)cal_block - ->cal_info)->path == path) { + cal_info = (struct audio_cal_info_adm_top *) + cal_block->cal_info; + if ((cal_info->path == path) && + (cal_info->app_type == app_type) && + (cal_info->acdb_id == acdb_id)) { return cal_block; } } @@ -1778,7 +1783,9 @@ static struct cal_block_data *msm_routing_find_topology(int path, "acdb_id %d %s\n", __func__, path, app_type, acdb_id, exact ? "fail" : "defaulting to search by path"); return exact ? NULL : msm_routing_find_topology_by_path(path, - cal_index); + cal_index, + app_type, + acdb_id); } static struct cal_block_data *msm_routing_find_topology_by_buf_number(int usecase, int path, diff --git a/asoc/sa8155.c b/asoc/sa8155.c index 138df88a73d2..e0292f83bd79 100644 --- a/asoc/sa8155.c +++ b/asoc/sa8155.c @@ -7582,6 +7582,7 @@ static struct snd_soc_dai_link msm_common_dai_links[] = { .async_ops = ASYNC_DPCM_SND_SOC_PREPARE, #endif /* CONFIG_AUDIO_QGKI */ .dpcm_playback = 1, + .dpcm_capture = 1, .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, .ignore_suspend = 1, diff --git a/asoc/sm6150.c b/asoc/sm6150.c index 40e36b9e9c18..f3afe9138999 100644 --- a/asoc/sm6150.c +++ b/asoc/sm6150.c @@ -7208,7 +7208,7 @@ static struct snd_soc_dai_link msm_tasha_be_dai_links[] = { static struct snd_soc_dai_link msm_wcn_be_dai_links[] = { { - .name = LPASS_BE_SLIMBUS_TX_VI, + .name = LPASS_BE_SLIMBUS_7_RX, .stream_name = "Slimbus7 Playback", /* BT codec driver determines capabilities based on * dai name, bt codecdai name should always contains diff --git a/config/arauto.conf b/config/arauto.conf new file mode 100755 index 000000000000..36eb6be8a26f --- /dev/null +++ b/config/arauto.conf @@ -0,0 +1,19 @@ +# SPDX-License-Identifier: GPL-2.0-only +# Copyright (c) 2021, The Linux Foundation. All rights reserved. + +ifeq ($(CONFIG_QGKI), y) +export CONFIG_SND_SOC_GVM_AUTO_SPF=m +export CONFIG_MSM_QDSP6_APRV2_VM=m +export CONFIG_MSM_QDSP6_SSR=m +export CONFIG_MSM_ADSP_LOADER=m +export CONFIG_MSM_QDSP6_NOTIFIER=m +export CONFIG_SND_SOC_MSM_QDSP6V2_VM=m +export CONFIG_SND_SOC_QDSP6V2=m +export CONFIG_QTI_PP=m +export CONFIG_SND_HWDEP_ROUTING=m +export CONFIG_SND_SOC_MSM_STUB=m +export CONFIG_SND_SOC_MSM_HDMI_CODEC_RX=m +export CONFIG_MSM_QDSP6V2_CODECS=m +export CONFIG_SND_EVENT=m +export CONFIG_SND_SOC_SA8155=m +endif \ No newline at end of file diff --git a/config/arautoconf.h b/config/arautoconf.h new file mode 100755 index 000000000000..6e28cae199ca --- /dev/null +++ b/config/arautoconf.h @@ -0,0 +1,27 @@ +/* Copyright (c) 2018-2019, 2021 The Linux Foundation. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 and + * only version 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#define CONFIG_SND_SOC_GVM_AUTO_SPF 1 +#define CONFIG_MSM_QDSP6_APRV2_VM 1 +#define CONFIG_MSM_ADSP_LOADER 1 +#define CONFIG_MSM_QDSP6_SSR 1 +#define CONFIG_MSM_QDSP6_NOTIFIER 1 +#define CONFIG_SND_SOC_MSM_QDSP6V2_VM 1 +#define CONFIG_SND_SOC_QDSP6V2 1 +#define CONFIG_QTI_PP 1 +#define CONFIG_SND_HWDEP_ROUTING 1 +#define CONFIG_SND_SOC_MSM_STUB 1 +#define CONFIG_SND_SOC_MSM_HDMI_CODEC_RX 1 +#define CONFIG_MSM_QDSP6V2_CODECS 1 +#define CONFIG_SND_EVENT 1 +#define CONFIG_SND_SOC_SA8155 1 + diff --git a/dsp/Kbuild b/dsp/Kbuild index 788a7d3c5a28..2c5506ff7c5c 100755 --- a/dsp/Kbuild +++ b/dsp/Kbuild @@ -29,6 +29,11 @@ ifeq ($(CONFIG_SND_SOC_AUTO), y) export INCS += -include $(AUDIO_ROOT)/config/gvmautoconf.h endif + ifdef CONFIG_SND_SOC_AR + include $(AUDIO_ROOT)/config/arauto.conf + export + INCS += -include $(AUDIO_ROOT)/config/arautoconf.h + endif ifdef CONFIG_SND_SOC_GVM_SA8295 include $(AUDIO_ROOT)/config/sa8295gvmauto.conf export diff --git a/dsp/q6asm.c b/dsp/q6asm.c old mode 100755 new mode 100644 index 9bcf3a0eaeb8..167ea186fff3 --- a/dsp/q6asm.c +++ b/dsp/q6asm.c @@ -3367,7 +3367,12 @@ static int __q6asm_open_read(struct audio_client *ac, if (ac->perf_mode == LOW_LATENCY_PCM_MODE) { open.mode_flags |= ASM_LOW_LATENCY_TX_STREAM_SESSION << ASM_SHIFT_STREAM_PERF_MODE_FLAG_IN_OPEN_READ; - } else { + } + else if (ac->perf_mode == LOW_LATENCY_PCM_NOPROC_MODE) { + open.mode_flags |= ASM_LOW_LATENCY_NPROC_TX_STREAM_SESSION << + ASM_SHIFT_STREAM_PERF_MODE_FLAG_IN_OPEN_READ; + } + else { open.mode_flags |= ASM_LEGACY_STREAM_SESSION << ASM_SHIFT_STREAM_PERF_MODE_FLAG_IN_OPEN_READ; } diff --git a/include/dsp/apr_audio-v2.h b/include/dsp/apr_audio-v2.h old mode 100755 new mode 100644 index c742d20aea54..f37ce1c96371 --- a/include/dsp/apr_audio-v2.h +++ b/include/dsp/apr_audio-v2.h @@ -8281,6 +8281,9 @@ struct asm_stream_cmd_open_shared_io { /* Bit value for Low Latency Tx stream subfield */ #define ASM_LOW_LATENCY_TX_STREAM_SESSION 1 +/* Bit value for Low Latency No Post Processing Tx stream subfield */ +#define ASM_LOW_LATENCY_NPROC_TX_STREAM_SESSION 3 + /* Bit shift for the stream_perf_mode subfield. */ #define ASM_SHIFT_STREAM_PERF_MODE_FLAG_IN_OPEN_READ 29 diff --git a/ipc/Kbuild b/ipc/Kbuild index 1d76bae1069e..06a1f42b9063 100755 --- a/ipc/Kbuild +++ b/ipc/Kbuild @@ -30,6 +30,11 @@ ifeq ($(CONFIG_SND_SOC_AUTO), y) export INCS += -include $(AUDIO_ROOT)/config/gvmautoconf.h endif + ifdef CONFIG_SND_SOC_AR + include $(AUDIO_ROOT)/config/arauto.conf + export + INCS += -include $(AUDIO_ROOT)/config/arautoconf.h + endif ifdef CONFIG_SND_SOC_GVM_SA8295 include $(AUDIO_ROOT)/config/sa8295gvmauto.conf export diff --git a/ipc/apr.c b/ipc/apr.c index 25a052014de6..55d834de0e00 100755 --- a/ipc/apr.c +++ b/ipc/apr.c @@ -1214,10 +1214,12 @@ static int apr_probe(struct platform_device *pdev) return -ENOMEM; } +#ifdef CONFIG_IPC_LOGGING apr_pkt_ctx = ipc_log_context_create(APR_PKT_IPC_LOG_PAGE_CNT, "apr", 0); if (!apr_pkt_ctx) pr_err("%s: Unable to create ipc log context\n", __func__); +#endif /* CONFIG_IPC_LOGGING */ spin_lock(&apr_priv->apr_lock); apr_priv->is_initial_boot = true; diff --git a/ipc/apr_vm.c b/ipc/apr_vm.c index 6f4d4580d79a..a79f64d0bcbd 100644 --- a/ipc/apr_vm.c +++ b/ipc/apr_vm.c @@ -1421,10 +1421,12 @@ static int apr_probe(struct platform_device *pdev) return -ENOMEM; } +#ifdef CONFIG_IPC_LOGGING apr_pkt_ctx = ipc_log_context_create(APR_PKT_IPC_LOG_PAGE_CNT, "apr", 0); if (!apr_pkt_ctx) pr_err("%s: Unable to create ipc log context\n", __func__); +#endif /* CONFIG_IPC_LOGGING */ ret = of_property_read_string(pdev->dev.of_node, "qcom,subsys-name", diff --git a/soc/Kbuild b/soc/Kbuild index 8ddec0d2625e..edb9aeee478b 100755 --- a/soc/Kbuild +++ b/soc/Kbuild @@ -29,6 +29,11 @@ ifeq ($(CONFIG_SND_SOC_AUTO), y) export INCS += -include $(AUDIO_ROOT)/config/gvmautoconf.h endif + ifdef CONFIG_SND_SOC_AR + include $(AUDIO_ROOT)/config/arauto.conf + export + INCS += -include $(AUDIO_ROOT)/config/arautoconf.h + endif ifdef CONFIG_SND_SOC_GVM_SA8295 include $(AUDIO_ROOT)/config/sa8295gvmauto.conf export