Merge efed2c1546 on remote branch

Change-Id: I84d642cd0fb68d66bfd1ba0dc2d79e195ead4105
This commit is contained in:
Linux Build Service Account 2022-05-04 23:43:06 -07:00
commit f426d9d441
21 changed files with 265 additions and 22 deletions

View file

@ -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)

5
asoc/Kbuild Normal file → Executable file
View file

@ -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

View file

@ -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

View file

@ -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,

View file

@ -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 {

View file

@ -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 <linux/module.h>
@ -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[] = {

View file

@ -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);

7
asoc/msm-pcm-q6-v2.c Executable file → Normal file
View file

@ -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;

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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

19
config/arauto.conf Executable file
View file

@ -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

27
config/arautoconf.h Executable file
View file

@ -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

View file

@ -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

7
dsp/q6asm.c Executable file → Normal file
View file

@ -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;
}

3
include/dsp/apr_audio-v2.h Executable file → Normal file
View file

@ -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

View file

@ -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

View file

@ -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;

View file

@ -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",

View file

@ -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