mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 10:41:38 -04:00
Merge tag 'LA.UM.9.14.r1-21000-LAHAINA.QSSI13.0' of https://git.codelinaro.org/clo/la/platform/vendor/opensource/audio-kernel into android13-5.4-lahaina
"LA.UM.9.14.r1-21000-LAHAINA.QSSI13.0" * tag 'LA.UM.9.14.r1-21000-LAHAINA.QSSI13.0' of https://git.codelinaro.org/clo/la/platform/vendor/opensource/audio-kernel: asoc: Update wcd937x codec driver controls uapi:align msm_audio_ar.h with AR asoc : modify spf_machine_dlkm module name for GVM asoc: tavil: modify TX routes and dapm widgets asoc: tavil: modify RX routes and dapm widgets asoc: Fix App Type Gain can`t work proper asoc: destroy mutex during module_exit asoc: add return value check for channel mapping function Asoc: 24bit support for output devices Change-Id: Ic6f52c296b15b5e202da6c98668965d8ae997d6f
This commit is contained in:
commit
8d1a624193
14 changed files with 127 additions and 71 deletions
|
|
@ -329,8 +329,8 @@ machine_dlkm-y := $(MACHINE_OBJS)
|
|||
obj-$(CONFIG_SND_SOC_CPE) += cpe_lsm_dlkm.o
|
||||
cpe_lsm_dlkm-y := $(CPE_LSM_OBJS)
|
||||
|
||||
obj-$(CONFIG_SND_SOC_GVM_AUTO_SPF) += spf_machine_dlkm.o
|
||||
spf_machine_dlkm-y := $(SPF_MACHINE_OBJS)
|
||||
obj-$(CONFIG_SND_SOC_GVM_AUTO_SPF) += gvm_spf_machine_dlkm.o
|
||||
gvm_spf_machine_dlkm-y := $(SPF_MACHINE_OBJS)
|
||||
|
||||
# inject some build related information
|
||||
DEFINES += -DBUILD_TIMESTAMP=\"$(shell date -u +'%Y-%m-%dT%H:%M:%SZ')\"
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ static struct snd_soc_dai_driver msm_stub_dais[] = {
|
|||
.channels_min = 1,
|
||||
.channels_max = 32,
|
||||
.rates = SNDRV_PCM_RATE_8000_48000,
|
||||
.formats = SNDRV_PCM_FMTBIT_S16_LE,
|
||||
.formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE,
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
/*
|
||||
* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
#ifndef WCD934X_ROUTING_H
|
||||
#define WCD934X_ROUTING_H
|
||||
|
|
@ -71,41 +72,46 @@ const struct snd_soc_dapm_route tavil_slim_audio_map[] = {
|
|||
{"SLIM TX11", NULL, "CDC_IF TX11 MUX"},
|
||||
{"SLIM TX13", NULL, "CDC_IF TX13 MUX"},
|
||||
|
||||
{"SLIM RX0 MUX", "AIF1_PB", "AIF1 PB"},
|
||||
{"SLIM RX1 MUX", "AIF1_PB", "AIF1 PB"},
|
||||
{"SLIM RX2 MUX", "AIF1_PB", "AIF1 PB"},
|
||||
{"SLIM RX3 MUX", "AIF1_PB", "AIF1 PB"},
|
||||
{"SLIM RX4 MUX", "AIF1_PB", "AIF1 PB"},
|
||||
{"SLIM RX5 MUX", "AIF1_PB", "AIF1 PB"},
|
||||
{"SLIM RX6 MUX", "AIF1_PB", "AIF1 PB"},
|
||||
{"SLIM RX7 MUX", "AIF1_PB", "AIF1 PB"},
|
||||
{"AIF4 PB MIX", NULL, "AIF4 PB"},
|
||||
{"AIF3 PB MIX", NULL, "AIF3 PB"},
|
||||
{"AIF2 PB MIX", NULL, "AIF2 PB"},
|
||||
{"AIF1 PB MIX", NULL, "AIF1 PB"},
|
||||
|
||||
{"SLIM RX0 MUX", "AIF2_PB", "AIF2 PB"},
|
||||
{"SLIM RX1 MUX", "AIF2_PB", "AIF2 PB"},
|
||||
{"SLIM RX2 MUX", "AIF2_PB", "AIF2 PB"},
|
||||
{"SLIM RX3 MUX", "AIF2_PB", "AIF2 PB"},
|
||||
{"SLIM RX4 MUX", "AIF2_PB", "AIF2 PB"},
|
||||
{"SLIM RX5 MUX", "AIF2_PB", "AIF2 PB"},
|
||||
{"SLIM RX6 MUX", "AIF2_PB", "AIF2 PB"},
|
||||
{"SLIM RX7 MUX", "AIF2_PB", "AIF2 PB"},
|
||||
{"SLIM RX0 MUX", "AIF1_PB", "AIF1 PB MIX"},
|
||||
{"SLIM RX1 MUX", "AIF1_PB", "AIF1 PB MIX"},
|
||||
{"SLIM RX2 MUX", "AIF1_PB", "AIF1 PB MIX"},
|
||||
{"SLIM RX3 MUX", "AIF1_PB", "AIF1 PB MIX"},
|
||||
{"SLIM RX4 MUX", "AIF1_PB", "AIF1 PB MIX"},
|
||||
{"SLIM RX5 MUX", "AIF1_PB", "AIF1 PB MIX"},
|
||||
{"SLIM RX6 MUX", "AIF1_PB", "AIF1 PB MIX"},
|
||||
{"SLIM RX7 MUX", "AIF1_PB", "AIF1 PB MIX"},
|
||||
|
||||
{"SLIM RX0 MUX", "AIF3_PB", "AIF3 PB"},
|
||||
{"SLIM RX1 MUX", "AIF3_PB", "AIF3 PB"},
|
||||
{"SLIM RX2 MUX", "AIF3_PB", "AIF3 PB"},
|
||||
{"SLIM RX3 MUX", "AIF3_PB", "AIF3 PB"},
|
||||
{"SLIM RX4 MUX", "AIF3_PB", "AIF3 PB"},
|
||||
{"SLIM RX5 MUX", "AIF3_PB", "AIF3 PB"},
|
||||
{"SLIM RX6 MUX", "AIF3_PB", "AIF3 PB"},
|
||||
{"SLIM RX7 MUX", "AIF3_PB", "AIF3 PB"},
|
||||
{"SLIM RX0 MUX", "AIF2_PB", "AIF2 PB MIX"},
|
||||
{"SLIM RX1 MUX", "AIF2_PB", "AIF2 PB MIX"},
|
||||
{"SLIM RX2 MUX", "AIF2_PB", "AIF2 PB MIX"},
|
||||
{"SLIM RX3 MUX", "AIF2_PB", "AIF2 PB MIX"},
|
||||
{"SLIM RX4 MUX", "AIF2_PB", "AIF2 PB MIX"},
|
||||
{"SLIM RX5 MUX", "AIF2_PB", "AIF2 PB MIX"},
|
||||
{"SLIM RX6 MUX", "AIF2_PB", "AIF2 PB MIX"},
|
||||
{"SLIM RX7 MUX", "AIF2_PB", "AIF2 PB MIX"},
|
||||
|
||||
{"SLIM RX0 MUX", "AIF4_PB", "AIF4 PB"},
|
||||
{"SLIM RX1 MUX", "AIF4_PB", "AIF4 PB"},
|
||||
{"SLIM RX2 MUX", "AIF4_PB", "AIF4 PB"},
|
||||
{"SLIM RX3 MUX", "AIF4_PB", "AIF4 PB"},
|
||||
{"SLIM RX4 MUX", "AIF4_PB", "AIF4 PB"},
|
||||
{"SLIM RX5 MUX", "AIF4_PB", "AIF4 PB"},
|
||||
{"SLIM RX6 MUX", "AIF4_PB", "AIF4 PB"},
|
||||
{"SLIM RX7 MUX", "AIF4_PB", "AIF4 PB"},
|
||||
{"SLIM RX0 MUX", "AIF3_PB", "AIF3 PB MIX"},
|
||||
{"SLIM RX1 MUX", "AIF3_PB", "AIF3 PB MIX"},
|
||||
{"SLIM RX2 MUX", "AIF3_PB", "AIF3 PB MIX"},
|
||||
{"SLIM RX3 MUX", "AIF3_PB", "AIF3 PB MIX"},
|
||||
{"SLIM RX4 MUX", "AIF3_PB", "AIF3 PB MIX"},
|
||||
{"SLIM RX5 MUX", "AIF3_PB", "AIF3 PB MIX"},
|
||||
{"SLIM RX6 MUX", "AIF3_PB", "AIF3 PB MIX"},
|
||||
{"SLIM RX7 MUX", "AIF3_PB", "AIF3 PB MIX"},
|
||||
|
||||
{"SLIM RX0 MUX", "AIF4_PB", "AIF4 PB MIX"},
|
||||
{"SLIM RX1 MUX", "AIF4_PB", "AIF4 PB MIX"},
|
||||
{"SLIM RX2 MUX", "AIF4_PB", "AIF4 PB MIX"},
|
||||
{"SLIM RX3 MUX", "AIF4_PB", "AIF4 PB MIX"},
|
||||
{"SLIM RX4 MUX", "AIF4_PB", "AIF4 PB MIX"},
|
||||
{"SLIM RX5 MUX", "AIF4_PB", "AIF4 PB MIX"},
|
||||
{"SLIM RX6 MUX", "AIF4_PB", "AIF4 PB MIX"},
|
||||
{"SLIM RX7 MUX", "AIF4_PB", "AIF4 PB MIX"},
|
||||
|
||||
{"SLIM RX0", NULL, "SLIM RX0 MUX"},
|
||||
{"SLIM RX1", NULL, "SLIM RX1 MUX"},
|
||||
|
|
@ -206,9 +212,13 @@ const struct snd_soc_dapm_route tavil_audio_map[] = {
|
|||
*/
|
||||
|
||||
/* Virtual input widgets */
|
||||
{"AIF1 CAP", NULL, "AIF1_CAP Mixer"},
|
||||
{"AIF2 CAP", NULL, "AIF2_CAP Mixer"},
|
||||
{"AIF3 CAP", NULL, "AIF3_CAP Mixer"},
|
||||
{"AIF1 CAP", NULL, "AIF1_CAP_MIX"},
|
||||
{"AIF2 CAP", NULL, "AIF2_CAP_MIX"},
|
||||
{"AIF3 CAP", NULL, "AIF3_CAP_MIX"},
|
||||
|
||||
{"AIF1_CAP_MIX", NULL, "AIF1_CAP Mixer"},
|
||||
{"AIF2_CAP_MIX", NULL, "AIF2_CAP Mixer"},
|
||||
{"AIF3_CAP_MIX", NULL, "AIF3_CAP Mixer"},
|
||||
|
||||
/* WDMA3 */
|
||||
{"WDMA3 PORT0 MUX", "DEC0", "ADC MUX0"},
|
||||
|
|
|
|||
|
|
@ -7835,9 +7835,11 @@ static const struct snd_kcontrol_new lo2_mixer[] = {
|
|||
};
|
||||
|
||||
static const struct snd_soc_dapm_widget tavil_dapm_slim_widgets[] = {
|
||||
SND_SOC_DAPM_AIF_IN_E("AIF4 PB", "AIF4 Playback", 0, SND_SOC_NOPM,
|
||||
AIF4_PB, 0, tavil_codec_enable_rx,
|
||||
SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD),
|
||||
SND_SOC_DAPM_AIF_IN("AIF4 PB", "AIF4 Playback", 0, SND_SOC_NOPM, 0, 0),
|
||||
|
||||
SND_SOC_DAPM_MIXER_E("AIF4 PB MIX", SND_SOC_NOPM, AIF4_PB, 0,
|
||||
NULL, 0, tavil_codec_enable_rx,
|
||||
SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD),
|
||||
|
||||
SND_SOC_DAPM_AIF_OUT_E("AIF4 VI", "VIfeed", 0, SND_SOC_NOPM,
|
||||
AIF4_VIFEED, 0,
|
||||
|
|
@ -7884,15 +7886,19 @@ static const struct snd_soc_dapm_widget tavil_dapm_slim_widgets[] = {
|
|||
};
|
||||
|
||||
static const struct snd_soc_dapm_widget tavil_dapm_widgets[] = {
|
||||
SND_SOC_DAPM_AIF_IN_E("AIF1 PB", "AIF1 Playback", 0, SND_SOC_NOPM,
|
||||
AIF1_PB, 0, tavil_codec_enable_rx,
|
||||
SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD),
|
||||
SND_SOC_DAPM_AIF_IN_E("AIF2 PB", "AIF2 Playback", 0, SND_SOC_NOPM,
|
||||
AIF2_PB, 0, tavil_codec_enable_rx,
|
||||
SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD),
|
||||
SND_SOC_DAPM_AIF_IN_E("AIF3 PB", "AIF3 Playback", 0, SND_SOC_NOPM,
|
||||
AIF3_PB, 0, tavil_codec_enable_rx,
|
||||
SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD),
|
||||
SND_SOC_DAPM_AIF_IN("AIF1 PB", "AIF1 Playback", 0, SND_SOC_NOPM, 0, 0),
|
||||
SND_SOC_DAPM_AIF_IN("AIF2 PB", "AIF2 Playback", 0, SND_SOC_NOPM, 0, 0),
|
||||
SND_SOC_DAPM_AIF_IN("AIF3 PB", "AIF3 Playback", 0, SND_SOC_NOPM, 0, 0),
|
||||
|
||||
SND_SOC_DAPM_MIXER_E("AIF1 PB MIX", SND_SOC_NOPM, AIF1_PB, 0,
|
||||
NULL, 0, tavil_codec_enable_rx,
|
||||
SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD),
|
||||
SND_SOC_DAPM_MIXER_E("AIF2 PB MIX", SND_SOC_NOPM, AIF2_PB, 0,
|
||||
NULL, 0, tavil_codec_enable_rx,
|
||||
SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD),
|
||||
SND_SOC_DAPM_MIXER_E("AIF3 PB MIX", SND_SOC_NOPM, AIF3_PB, 0,
|
||||
NULL, 0, tavil_codec_enable_rx,
|
||||
SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD),
|
||||
|
||||
WCD_DAPM_MUX("CDC_IF RX0 MUX", WCD934X_RX0, cdc_if_rx0),
|
||||
WCD_DAPM_MUX("CDC_IF RX1 MUX", WCD934X_RX1, cdc_if_rx1),
|
||||
|
|
@ -8181,15 +8187,21 @@ static const struct snd_soc_dapm_widget tavil_dapm_widgets[] = {
|
|||
tavil_codec_force_enable_micbias,
|
||||
SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD),
|
||||
|
||||
SND_SOC_DAPM_AIF_OUT_E("AIF1 CAP", "AIF1 Capture", 0, SND_SOC_NOPM,
|
||||
AIF1_CAP, 0, tavil_codec_enable_tx,
|
||||
SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD),
|
||||
SND_SOC_DAPM_AIF_OUT_E("AIF2 CAP", "AIF2 Capture", 0, SND_SOC_NOPM,
|
||||
AIF2_CAP, 0, tavil_codec_enable_tx,
|
||||
SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD),
|
||||
SND_SOC_DAPM_AIF_OUT_E("AIF3 CAP", "AIF3 Capture", 0, SND_SOC_NOPM,
|
||||
AIF3_CAP, 0, tavil_codec_enable_tx,
|
||||
SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD),
|
||||
SND_SOC_DAPM_AIF_OUT("AIF1 CAP", "AIF1 Capture", 0, SND_SOC_NOPM, 0, 0),
|
||||
SND_SOC_DAPM_AIF_OUT("AIF2 CAP", "AIF2 Capture", 0, SND_SOC_NOPM, 0, 0),
|
||||
SND_SOC_DAPM_AIF_OUT("AIF3 CAP", "AIF3 Capture", 0, SND_SOC_NOPM, 0, 0),
|
||||
|
||||
SND_SOC_DAPM_MIXER_E("AIF1_CAP_MIX", SND_SOC_NOPM, AIF1_CAP, 0,
|
||||
NULL, 0, tavil_codec_enable_tx,
|
||||
SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD),
|
||||
|
||||
SND_SOC_DAPM_MIXER_E("AIF2_CAP_MIX", SND_SOC_NOPM, AIF2_CAP, 0,
|
||||
NULL, 0, tavil_codec_enable_tx,
|
||||
SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD),
|
||||
|
||||
SND_SOC_DAPM_MIXER_E("AIF3_CAP_MIX", SND_SOC_NOPM, AIF3_CAP, 0,
|
||||
NULL, 0, tavil_codec_enable_tx,
|
||||
SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD),
|
||||
|
||||
SND_SOC_DAPM_MIXER("SLIM TX0", SND_SOC_NOPM, 0, 0, NULL, 0),
|
||||
SND_SOC_DAPM_MIXER("SLIM TX1", SND_SOC_NOPM, 0, 0, NULL, 0),
|
||||
|
|
|
|||
|
|
@ -2074,7 +2074,8 @@ const char * const tx_master_ch_text[] = {
|
|||
"ZERO", "SWRM_TX1_CH1", "SWRM_TX1_CH2", "SWRM_TX1_CH3", "SWRM_TX1_CH4",
|
||||
"SWRM_TX2_CH1", "SWRM_TX2_CH2", "SWRM_TX2_CH3", "SWRM_TX2_CH4",
|
||||
"SWRM_TX3_CH1", "SWRM_TX3_CH2", "SWRM_TX3_CH3", "SWRM_TX3_CH4",
|
||||
"SWRM_PCM_IN",
|
||||
"SWRM_PCM_IN", "ADC1", "ADC3", "ADC4", "DMIC0", "DMIC1", "DMIC2",
|
||||
"DMIC4", "DMIC5", "DMIC6", "DMIC7",
|
||||
};
|
||||
|
||||
const struct soc_enum tx_master_ch_enum =
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
/* 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 _WCD937X_H
|
||||
|
|
@ -50,6 +51,16 @@ static int wcd937x_swr_master_ch_map[] = {
|
|||
SWRM_TX3_CH3,
|
||||
SWRM_TX3_CH4,
|
||||
SWRM_PCM_IN,
|
||||
ADC1,
|
||||
ADC3,
|
||||
ADC4,
|
||||
DMIC0,
|
||||
DMIC1,
|
||||
DMIC2,
|
||||
DMIC4,
|
||||
DMIC5,
|
||||
DMIC6,
|
||||
DMIC7,
|
||||
};
|
||||
|
||||
#ifdef CONFIG_SND_SOC_WCD937X
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ static struct snd_soc_dai_driver msm_dai_stub_dai_rx = {
|
|||
.aif_name = "STUB_RX",
|
||||
.rates = SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_8000 |
|
||||
SNDRV_PCM_RATE_16000,
|
||||
.formats = SNDRV_PCM_FMTBIT_S16_LE,
|
||||
.formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE,
|
||||
.channels_min = 1,
|
||||
.channels_max = 2,
|
||||
.rate_min = 8000,
|
||||
|
|
@ -104,7 +104,8 @@ static struct snd_soc_dai_driver msm_dai_stub_dai_tx[] = {
|
|||
.aif_name = "STUB_TX",
|
||||
.rates = SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_8000 |
|
||||
SNDRV_PCM_RATE_16000,
|
||||
.formats = SNDRV_PCM_FMTBIT_S16_LE,
|
||||
.formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S24_3LE |
|
||||
SNDRV_PCM_FMTBIT_S32_LE,
|
||||
.channels_min = 1,
|
||||
.channels_max = 2,
|
||||
.rate_min = 8000,
|
||||
|
|
@ -120,7 +121,8 @@ static struct snd_soc_dai_driver msm_dai_stub_dai_tx[] = {
|
|||
.aif_name = "STUB_1_TX",
|
||||
.rates = SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_8000 |
|
||||
SNDRV_PCM_RATE_16000,
|
||||
.formats = SNDRV_PCM_FMTBIT_S16_LE,
|
||||
.formats = SNDRV_PCM_FMTBIT_S16_LE |SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S24_3LE |
|
||||
SNDRV_PCM_FMTBIT_S32_LE,
|
||||
.channels_min = 1,
|
||||
.channels_max = 2,
|
||||
.rate_min = 8000,
|
||||
|
|
|
|||
|
|
@ -1524,6 +1524,7 @@ int __init msm_voice_host_init(void)
|
|||
void msm_voice_host_exit(void)
|
||||
{
|
||||
platform_driver_unregister(&msm_pcm_driver);
|
||||
mutex_destroy(&hpcm_drv.lock);
|
||||
}
|
||||
|
||||
MODULE_DESCRIPTION("PCM module platform driver");
|
||||
|
|
|
|||
|
|
@ -964,8 +964,13 @@ static int msm_pcm_channel_mixer_cfg_ctl_put(struct snd_kcontrol *kcontrol,
|
|||
__func__, chmixer_pspd->input_channel);
|
||||
return -EINVAL;
|
||||
}
|
||||
q6asm_map_channels(asm_ch_map,
|
||||
ret = q6asm_map_channels(asm_ch_map,
|
||||
chmixer_pspd->input_channel, false);
|
||||
if (ret < 0) {
|
||||
pr_err("%s q6asm_map_channels failed\n", __func__);
|
||||
return ret;
|
||||
}
|
||||
|
||||
for (i = 0; i < PCM_FORMAT_MAX_NUM_CHANNEL_V8; i++)
|
||||
chmixer_pspd->in_ch_map[i] = asm_ch_map[i];
|
||||
chmixer_pspd->override_in_ch_map = true;
|
||||
|
|
@ -977,8 +982,12 @@ static int msm_pcm_channel_mixer_cfg_ctl_put(struct snd_kcontrol *kcontrol,
|
|||
__func__, chmixer_pspd->output_channel);
|
||||
return -EINVAL;
|
||||
}
|
||||
q6asm_map_channels(asm_ch_map,
|
||||
ret = q6asm_map_channels(asm_ch_map,
|
||||
chmixer_pspd->output_channel, false);
|
||||
if (ret < 0) {
|
||||
pr_err("%s q6asm_map_channels failed\n", __func__);
|
||||
return ret;
|
||||
}
|
||||
for (i = 0; i < PCM_FORMAT_MAX_NUM_CHANNEL_V8; i++)
|
||||
chmixer_pspd->out_ch_map[i] = asm_ch_map[i];
|
||||
chmixer_pspd->override_out_ch_map = true;
|
||||
|
|
|
|||
|
|
@ -25219,7 +25219,7 @@ static const struct snd_kcontrol_new app_type_cfg_controls[] = {
|
|||
0x7FFFFFFF, 0, 128, msm_routing_get_app_type_cfg_control,
|
||||
msm_routing_put_app_type_cfg_control),
|
||||
SOC_SINGLE_MULTI_EXT("App Type Gain", SND_SOC_NOPM, 0,
|
||||
0x2000, 0, 4, NULL, msm_routing_put_app_type_gain_control)
|
||||
0x7FFFFFFF, 0, 4, NULL, msm_routing_put_app_type_gain_control)
|
||||
};
|
||||
|
||||
static int msm_routing_put_module_cfg_control(struct snd_kcontrol *kcontrol,
|
||||
|
|
|
|||
|
|
@ -32053,7 +32053,7 @@ static const struct snd_kcontrol_new app_type_cfg_controls[] = {
|
|||
0x7FFFFFFF, 0, 128, msm_routing_get_app_type_cfg_control,
|
||||
msm_routing_put_app_type_cfg_control),
|
||||
SOC_SINGLE_MULTI_EXT("App Type Gain", SND_SOC_NOPM, 0,
|
||||
0x2000, 0, 4, NULL, msm_routing_put_app_type_gain_control)
|
||||
0x7FFFFFFF, 0, 4, NULL, msm_routing_put_app_type_gain_control)
|
||||
};
|
||||
|
||||
static int msm_routing_put_module_cfg_control(struct snd_kcontrol *kcontrol,
|
||||
|
|
|
|||
|
|
@ -850,7 +850,12 @@ int __init msm_pcm_voice_init(void)
|
|||
|
||||
void msm_pcm_voice_exit(void)
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
platform_driver_unregister(&msm_pcm_driver);
|
||||
|
||||
for (i = 0; i < VOICE_SESSION_INDEX_MAX; i++)
|
||||
mutex_destroy(&voice_info[i].lock);
|
||||
}
|
||||
|
||||
MODULE_DESCRIPTION("Voice PCM module platform driver");
|
||||
|
|
|
|||
|
|
@ -1699,6 +1699,7 @@ int __init msm_pcm_voip_init(void)
|
|||
void msm_pcm_voip_exit(void)
|
||||
{
|
||||
platform_driver_unregister(&msm_pcm_driver);
|
||||
mutex_destroy(&voip_info.lock);
|
||||
}
|
||||
|
||||
MODULE_DESCRIPTION("PCM module platform driver");
|
||||
|
|
|
|||
|
|
@ -113,7 +113,11 @@
|
|||
#define AUDIO_PM_RELAX _IOW(AUDIO_IOCTL_MAGIC, 106, unsigned int)
|
||||
#define AUDIO_REGISTER_ION _IOW(AUDIO_IOCTL_MAGIC, 107, struct msm_audio_ion_info)
|
||||
#define AUDIO_DEREGISTER_ION _IOW(AUDIO_IOCTL_MAGIC, 108, struct msm_audio_ion_info)
|
||||
#define AUDIO_MAX_COMMON_IOCTL_NUM 109
|
||||
#define IOCTL_MAP_HYP_ASSIGN _IOW(AUDIO_IOCTL_MAGIC, 109, int)
|
||||
#define IOCTL_UNMAP_HYP_ASSIGN _IOW(AUDIO_IOCTL_MAGIC, 110, int)
|
||||
#define IOCTL_MAP_HYP_ASSIGN_V2 _IOW(AUDIO_IOCTL_MAGIC, 111, int)
|
||||
#define IOCTL_UNMAP_HYP_ASSIGN_V2 _IOW(AUDIO_IOCTL_MAGIC, 112, int)
|
||||
#define AUDIO_MAX_COMMON_IOCTL_NUM 113
|
||||
|
||||
|
||||
#define HANDSET_MIC 0x01
|
||||
|
|
|
|||
Loading…
Reference in a new issue