mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-25 06:03:36 -04:00
Merge efed2c1546 on remote branch
Change-Id: I84d642cd0fb68d66bfd1ba0dc2d79e195ead4105
This commit is contained in:
commit
f426d9d441
21 changed files with 265 additions and 22 deletions
14
Makefile.am
14
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)
|
||||
|
|
|
|||
5
asoc/Kbuild
Normal file → Executable file
5
asoc/Kbuild
Normal file → Executable 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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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[] = {
|
||||
|
|
|
|||
|
|
@ -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
7
asoc/msm-pcm-q6-v2.c
Executable file → Normal 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;
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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
19
config/arauto.conf
Executable 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
27
config/arautoconf.h
Executable 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
|
||||
|
||||
|
|
@ -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
7
dsp/q6asm.c
Executable file → Normal 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
3
include/dsp/apr_audio-v2.h
Executable file → Normal 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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue