From 05c9918e58ab9ae57bca1ae11cf9bfc0eeb6dd14 Mon Sep 17 00:00:00 2001 From: Kogara Naveen Kumar Date: Thu, 6 Oct 2022 10:59:12 +0530 Subject: [PATCH 1/9] Asoc: 24bit support for output devices Enabled 24bit support for output devices Change-Id: If48ebbd849d619019cc5ecff972ca638ecb771d4 --- asoc/codecs/msm_stub.c | 2 +- asoc/msm-dai-stub-v2.c | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/asoc/codecs/msm_stub.c b/asoc/codecs/msm_stub.c index 69fa6bf62b5e..1947a9a60e0e 100644 --- a/asoc/codecs/msm_stub.c +++ b/asoc/codecs/msm_stub.c @@ -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, }, }, { diff --git a/asoc/msm-dai-stub-v2.c b/asoc/msm-dai-stub-v2.c index 55701566be15..102a7070e83b 100644 --- a/asoc/msm-dai-stub-v2.c +++ b/asoc/msm-dai-stub-v2.c @@ -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, From 37bcf911fa351f0b1c526f8eb3708140e0b0a8f3 Mon Sep 17 00:00:00 2001 From: ftong Date: Mon, 19 Sep 2022 12:13:32 +0800 Subject: [PATCH 2/9] asoc: add return value check for channel mapping function Add return value check for channel mapping function, and reject invalid input Change-Id: If8ddc16b33bf2b6af10f9d6055d6de27d86ad240 Signed-off-by: ftong --- asoc/msm-pcm-loopback-v2.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/asoc/msm-pcm-loopback-v2.c b/asoc/msm-pcm-loopback-v2.c index 6094a8fca863..0746ffd0c349 100644 --- a/asoc/msm-pcm-loopback-v2.c +++ b/asoc/msm-pcm-loopback-v2.c @@ -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; From 1a2ec5b37237bbd74a5d93ab82db89a5f92dd66e Mon Sep 17 00:00:00 2001 From: ftong Date: Mon, 19 Sep 2022 11:53:03 +0800 Subject: [PATCH 3/9] asoc: destroy mutex during module_exit Mutexes are initialized, but not destroyed, add destruction in exit routines. Change-Id: Ia45c604141f4f03403a765e0d10ff0b86b25885e Signed-off-by: ftong --- asoc/msm-pcm-host-voice-v2.c | 1 + asoc/msm-pcm-voice-v2.c | 5 +++++ asoc/msm-pcm-voip-v2.c | 1 + 3 files changed, 7 insertions(+) diff --git a/asoc/msm-pcm-host-voice-v2.c b/asoc/msm-pcm-host-voice-v2.c index cb6a478434f6..4496e05a966a 100644 --- a/asoc/msm-pcm-host-voice-v2.c +++ b/asoc/msm-pcm-host-voice-v2.c @@ -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"); diff --git a/asoc/msm-pcm-voice-v2.c b/asoc/msm-pcm-voice-v2.c index 7b8c5dbe55f4..cbabe85b91c8 100644 --- a/asoc/msm-pcm-voice-v2.c +++ b/asoc/msm-pcm-voice-v2.c @@ -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"); diff --git a/asoc/msm-pcm-voip-v2.c b/asoc/msm-pcm-voip-v2.c index f635a2b63fbe..14803f1d235a 100644 --- a/asoc/msm-pcm-voip-v2.c +++ b/asoc/msm-pcm-voip-v2.c @@ -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"); From 2068734c2785aa018ebc708566405c19d33e6d2f Mon Sep 17 00:00:00 2001 From: fei tong Date: Fri, 23 Sep 2022 11:12:56 +0800 Subject: [PATCH 4/9] asoc: Fix App Type Gain can`t work proper App Type Gain command does not work due to max value Change-Id: I27a7e4cf22e6b53650e1b51af65c7aadafa064dc Signed-off-by: ftong --- asoc/msm-pcm-routing-auto.c | 2 +- asoc/msm-pcm-routing-v2.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/asoc/msm-pcm-routing-auto.c b/asoc/msm-pcm-routing-auto.c index 5b4a572cef52..4eccb8c4f398 100755 --- a/asoc/msm-pcm-routing-auto.c +++ b/asoc/msm-pcm-routing-auto.c @@ -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, diff --git a/asoc/msm-pcm-routing-v2.c b/asoc/msm-pcm-routing-v2.c index bb064eac9dbb..3849f6470242 100755 --- a/asoc/msm-pcm-routing-v2.c +++ b/asoc/msm-pcm-routing-v2.c @@ -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, From 66448f4e5e71723b58d6513a99e6bbe0177554f0 Mon Sep 17 00:00:00 2001 From: Vijay Kumar Maddula Date: Fri, 30 Sep 2022 20:39:35 +0530 Subject: [PATCH 5/9] asoc: tavil: modify RX routes and dapm widgets Observed audio playback mute after upgrade to 5.4 kernel due to change in dapm power up sequence in 5.4 kernel. Modified tavil RX routes and dapm widgets to meet the recent kenrel dapm power up sequence. Change-Id: I24576f342c43e586ed9b55eeab2510c59c70e33d Signed-off-by: Vijay Kumar Maddula --- asoc/codecs/wcd934x/wcd934x-routing.h | 70 +++++++++++++++------------ asoc/codecs/wcd934x/wcd934x.c | 30 +++++++----- 2 files changed, 56 insertions(+), 44 deletions(-) diff --git a/asoc/codecs/wcd934x/wcd934x-routing.h b/asoc/codecs/wcd934x/wcd934x-routing.h index 771f91f1cbab..85ff7db3d9b6 100644 --- a/asoc/codecs/wcd934x/wcd934x-routing.h +++ b/asoc/codecs/wcd934x/wcd934x-routing.h @@ -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"}, diff --git a/asoc/codecs/wcd934x/wcd934x.c b/asoc/codecs/wcd934x/wcd934x.c index 88cd5aa30334..98c5b011e060 100644 --- a/asoc/codecs/wcd934x/wcd934x.c +++ b/asoc/codecs/wcd934x/wcd934x.c @@ -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), From c0b9e1dcd84d1ddcb30e8657a6a4990e42d00325 Mon Sep 17 00:00:00 2001 From: Vijay Kumar Maddula Date: Wed, 12 Oct 2022 16:36:13 +0530 Subject: [PATCH 6/9] asoc: tavil: modify TX routes and dapm widgets Observed audio capture has no data after upgrade to 5.4 kernel due to change in dapm power up sequence in 5.4 kernel. Modified tavil TX routes and dapm widgets to meet the recent kenrel dapm power up sequence. Change-Id: I15965a4f221b396e670a5b2888a60557c302db51 Signed-off-by: Vijay Kumar Maddula --- asoc/codecs/wcd934x/wcd934x-routing.h | 10 +++++++--- asoc/codecs/wcd934x/wcd934x.c | 24 +++++++++++++++--------- 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/asoc/codecs/wcd934x/wcd934x-routing.h b/asoc/codecs/wcd934x/wcd934x-routing.h index 85ff7db3d9b6..77ca86896dd4 100644 --- a/asoc/codecs/wcd934x/wcd934x-routing.h +++ b/asoc/codecs/wcd934x/wcd934x-routing.h @@ -212,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"}, diff --git a/asoc/codecs/wcd934x/wcd934x.c b/asoc/codecs/wcd934x/wcd934x.c index 98c5b011e060..bd98a054572c 100644 --- a/asoc/codecs/wcd934x/wcd934x.c +++ b/asoc/codecs/wcd934x/wcd934x.c @@ -8187,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), From b39574b943cb656bdb132c5d1e6a9ccdbdd29ded Mon Sep 17 00:00:00 2001 From: Kogara Naveen Kumar Date: Mon, 7 Nov 2022 18:16:44 +0530 Subject: [PATCH 7/9] asoc : modify spf_machine_dlkm module name for GVM Suggested-by: Ahamed Rasim. Change-Id : I642ddf5fd475ba5e6a1f27ab60339c0287fe5678 --- asoc/Kbuild | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/asoc/Kbuild b/asoc/Kbuild index 6bfe53412acb..6014ba9c5634 100755 --- a/asoc/Kbuild +++ b/asoc/Kbuild @@ -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')\" From 457009dc9409bf87cea33b0c50c36e36fe50436a Mon Sep 17 00:00:00 2001 From: Jiazai Wu Date: Thu, 17 Nov 2022 12:11:31 +0800 Subject: [PATCH 8/9] uapi:align msm_audio_ar.h with AR need to align msm_audio_ar.h with AR. Change-Id: Ib3d7bad7e2e3b1320927d1d2ce7f891bfd7bd065 --- include/uapi/audio/linux/msm_audio_ar.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/include/uapi/audio/linux/msm_audio_ar.h b/include/uapi/audio/linux/msm_audio_ar.h index 5edce37bb6d8..32dec4d63185 100644 --- a/include/uapi/audio/linux/msm_audio_ar.h +++ b/include/uapi/audio/linux/msm_audio_ar.h @@ -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 From 73e13435c9432c1a1bc95c8adf6c361d4cd24312 Mon Sep 17 00:00:00 2001 From: Hari Krishna chowdary Yennana Date: Fri, 23 Sep 2022 19:28:58 +0530 Subject: [PATCH 9/9] asoc: Update wcd937x codec driver controls Amic2 recording is failing due to missing of mixer controls. Change is to add support of ADC and DMIC control for swr master channel map. Change-Id: I0377ec84a49d2eaa390872a29e2d8cf8909794b1 Signed-off-by: Hari Krishna Chowdary Yennana --- asoc/codecs/wcd937x/wcd937x.c | 3 ++- asoc/codecs/wcd937x/wcd937x.h | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/asoc/codecs/wcd937x/wcd937x.c b/asoc/codecs/wcd937x/wcd937x.c index a7b3a5a0e8d4..c002574d26b2 100644 --- a/asoc/codecs/wcd937x/wcd937x.c +++ b/asoc/codecs/wcd937x/wcd937x.c @@ -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 = diff --git a/asoc/codecs/wcd937x/wcd937x.h b/asoc/codecs/wcd937x/wcd937x.h index c97ee78254ad..a868eeb32b9a 100644 --- a/asoc/codecs/wcd937x/wcd937x.h +++ b/asoc/codecs/wcd937x/wcd937x.h @@ -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