Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3e2c37d2 authored by Ramlal Karra's avatar Ramlal Karra Committed by Gerrit - the friendly Code Review server
Browse files

asoc: codecs: Add unified SWR Tx mapping support



Add dynamic port enablement for wcd938x and
wcd937x targets to support unified swr tx port
mapping added as part of SWR 1.6 updates.

Change-Id: If0cf823dc51028fd5bd95f5a49ffe05998526be6
Signed-off-by: default avatarRamlal Karra <rkarra@codeaurora.org>
parent 669089fd
Loading
Loading
Loading
Loading
+99 −121
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0-only
/* Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.
/* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
 */

#include <linux/module.h>
@@ -1489,18 +1489,7 @@ static const struct snd_soc_dapm_widget tx_macro_dapm_widgets_common[] = {
		tx_macro_enable_dmic, SND_SOC_DAPM_PRE_PMU |
		SND_SOC_DAPM_POST_PMD),

	SND_SOC_DAPM_INPUT("TX SWR_MIC0"),
	SND_SOC_DAPM_INPUT("TX SWR_MIC1"),
	SND_SOC_DAPM_INPUT("TX SWR_MIC2"),
	SND_SOC_DAPM_INPUT("TX SWR_MIC3"),
	SND_SOC_DAPM_INPUT("TX SWR_MIC4"),
	SND_SOC_DAPM_INPUT("TX SWR_MIC5"),
	SND_SOC_DAPM_INPUT("TX SWR_MIC6"),
	SND_SOC_DAPM_INPUT("TX SWR_MIC7"),
	SND_SOC_DAPM_INPUT("TX SWR_MIC8"),
	SND_SOC_DAPM_INPUT("TX SWR_MIC9"),
	SND_SOC_DAPM_INPUT("TX SWR_MIC10"),
	SND_SOC_DAPM_INPUT("TX SWR_MIC11"),
	SND_SOC_DAPM_INPUT("TX SWR_INPUT"),

	SND_SOC_DAPM_MUX_E("TX DEC0 MUX", SND_SOC_NOPM,
			   TX_MACRO_DEC0, 0,
@@ -1786,18 +1775,18 @@ static const struct snd_soc_dapm_route tx_audio_map_common[] = {
	{"TX DMIC MUX0", "DMIC7", "TX DMIC7"},

	{"TX DEC0 MUX", "SWR_MIC", "TX SMIC MUX0"},
	{"TX SMIC MUX0", "SWR_MIC0", "TX SWR_MIC0"},
	{"TX SMIC MUX0", "SWR_MIC1", "TX SWR_MIC1"},
	{"TX SMIC MUX0", "SWR_MIC2", "TX SWR_MIC2"},
	{"TX SMIC MUX0", "SWR_MIC3", "TX SWR_MIC3"},
	{"TX SMIC MUX0", "SWR_MIC4", "TX SWR_MIC4"},
	{"TX SMIC MUX0", "SWR_MIC5", "TX SWR_MIC5"},
	{"TX SMIC MUX0", "SWR_MIC6", "TX SWR_MIC6"},
	{"TX SMIC MUX0", "SWR_MIC7", "TX SWR_MIC7"},
	{"TX SMIC MUX0", "SWR_MIC8", "TX SWR_MIC8"},
	{"TX SMIC MUX0", "SWR_MIC9", "TX SWR_MIC9"},
	{"TX SMIC MUX0", "SWR_MIC10", "TX SWR_MIC10"},
	{"TX SMIC MUX0", "SWR_MIC11", "TX SWR_MIC11"},
	{"TX SMIC MUX0", "SWR_MIC0", "TX SWR_INPUT"},
	{"TX SMIC MUX0", "SWR_MIC1", "TX SWR_INPUT"},
	{"TX SMIC MUX0", "SWR_MIC2", "TX SWR_INPUT"},
	{"TX SMIC MUX0", "SWR_MIC3", "TX SWR_INPUT"},
	{"TX SMIC MUX0", "SWR_MIC4", "TX SWR_INPUT"},
	{"TX SMIC MUX0", "SWR_MIC5", "TX SWR_INPUT"},
	{"TX SMIC MUX0", "SWR_MIC6", "TX SWR_INPUT"},
	{"TX SMIC MUX0", "SWR_MIC7", "TX SWR_INPUT"},
	{"TX SMIC MUX0", "SWR_MIC8", "TX SWR_INPUT"},
	{"TX SMIC MUX0", "SWR_MIC9", "TX SWR_INPUT"},
	{"TX SMIC MUX0", "SWR_MIC10", "TX SWR_INPUT"},
	{"TX SMIC MUX0", "SWR_MIC11", "TX SWR_INPUT"},

	{"TX DEC1 MUX", "MSM_DMIC", "TX DMIC MUX1"},
	{"TX DMIC MUX1", "DMIC0", "TX DMIC0"},
@@ -1810,18 +1799,18 @@ static const struct snd_soc_dapm_route tx_audio_map_common[] = {
	{"TX DMIC MUX1", "DMIC7", "TX DMIC7"},

	{"TX DEC1 MUX", "SWR_MIC", "TX SMIC MUX1"},
	{"TX SMIC MUX1", "SWR_MIC0", "TX SWR_MIC0"},
	{"TX SMIC MUX1", "SWR_MIC1", "TX SWR_MIC1"},
	{"TX SMIC MUX1", "SWR_MIC2", "TX SWR_MIC2"},
	{"TX SMIC MUX1", "SWR_MIC3", "TX SWR_MIC3"},
	{"TX SMIC MUX1", "SWR_MIC4", "TX SWR_MIC4"},
	{"TX SMIC MUX1", "SWR_MIC5", "TX SWR_MIC5"},
	{"TX SMIC MUX1", "SWR_MIC6", "TX SWR_MIC6"},
	{"TX SMIC MUX1", "SWR_MIC7", "TX SWR_MIC7"},
	{"TX SMIC MUX1", "SWR_MIC8", "TX SWR_MIC8"},
	{"TX SMIC MUX1", "SWR_MIC9", "TX SWR_MIC9"},
	{"TX SMIC MUX1", "SWR_MIC10", "TX SWR_MIC10"},
	{"TX SMIC MUX1", "SWR_MIC11", "TX SWR_MIC11"},
	{"TX SMIC MUX1", "SWR_MIC0", "TX SWR_INPUT"},
	{"TX SMIC MUX1", "SWR_MIC1", "TX SWR_INPUT"},
	{"TX SMIC MUX1", "SWR_MIC2", "TX SWR_INPUT"},
	{"TX SMIC MUX1", "SWR_MIC3", "TX SWR_INPUT"},
	{"TX SMIC MUX1", "SWR_MIC4", "TX SWR_INPUT"},
	{"TX SMIC MUX1", "SWR_MIC5", "TX SWR_INPUT"},
	{"TX SMIC MUX1", "SWR_MIC6", "TX SWR_INPUT"},
	{"TX SMIC MUX1", "SWR_MIC7", "TX SWR_INPUT"},
	{"TX SMIC MUX1", "SWR_MIC8", "TX SWR_INPUT"},
	{"TX SMIC MUX1", "SWR_MIC9", "TX SWR_INPUT"},
	{"TX SMIC MUX1", "SWR_MIC10", "TX SWR_INPUT"},
	{"TX SMIC MUX1", "SWR_MIC11", "TX SWR_INPUT"},

	{"TX DEC2 MUX", "MSM_DMIC", "TX DMIC MUX2"},
	{"TX DMIC MUX2", "DMIC0", "TX DMIC0"},
@@ -1834,18 +1823,18 @@ static const struct snd_soc_dapm_route tx_audio_map_common[] = {
	{"TX DMIC MUX2", "DMIC7", "TX DMIC7"},

	{"TX DEC2 MUX", "SWR_MIC", "TX SMIC MUX2"},
	{"TX SMIC MUX2", "SWR_MIC0", "TX SWR_MIC0"},
	{"TX SMIC MUX2", "SWR_MIC1", "TX SWR_MIC1"},
	{"TX SMIC MUX2", "SWR_MIC2", "TX SWR_MIC2"},
	{"TX SMIC MUX2", "SWR_MIC3", "TX SWR_MIC3"},
	{"TX SMIC MUX2", "SWR_MIC4", "TX SWR_MIC4"},
	{"TX SMIC MUX2", "SWR_MIC5", "TX SWR_MIC5"},
	{"TX SMIC MUX2", "SWR_MIC6", "TX SWR_MIC6"},
	{"TX SMIC MUX2", "SWR_MIC7", "TX SWR_MIC7"},
	{"TX SMIC MUX2", "SWR_MIC8", "TX SWR_MIC8"},
	{"TX SMIC MUX2", "SWR_MIC9", "TX SWR_MIC9"},
	{"TX SMIC MUX2", "SWR_MIC10", "TX SWR_MIC10"},
	{"TX SMIC MUX2", "SWR_MIC11", "TX SWR_MIC11"},
	{"TX SMIC MUX2", "SWR_MIC0", "TX SWR_INPUT"},
	{"TX SMIC MUX2", "SWR_MIC1", "TX SWR_INPUT"},
	{"TX SMIC MUX2", "SWR_MIC2", "TX SWR_INPUT"},
	{"TX SMIC MUX2", "SWR_MIC3", "TX SWR_INPUT"},
	{"TX SMIC MUX2", "SWR_MIC4", "TX SWR_INPUT"},
	{"TX SMIC MUX2", "SWR_MIC5", "TX SWR_INPUT"},
	{"TX SMIC MUX2", "SWR_MIC6", "TX SWR_INPUT"},
	{"TX SMIC MUX2", "SWR_MIC7", "TX SWR_INPUT"},
	{"TX SMIC MUX2", "SWR_MIC8", "TX SWR_INPUT"},
	{"TX SMIC MUX2", "SWR_MIC9", "TX SWR_INPUT"},
	{"TX SMIC MUX2", "SWR_MIC10", "TX SWR_INPUT"},
	{"TX SMIC MUX2", "SWR_MIC11", "TX SWR_INPUT"},

	{"TX DEC3 MUX", "MSM_DMIC", "TX DMIC MUX3"},
	{"TX DMIC MUX3", "DMIC0", "TX DMIC0"},
@@ -1858,18 +1847,18 @@ static const struct snd_soc_dapm_route tx_audio_map_common[] = {
	{"TX DMIC MUX3", "DMIC7", "TX DMIC7"},

	{"TX DEC3 MUX", "SWR_MIC", "TX SMIC MUX3"},
	{"TX SMIC MUX3", "SWR_MIC0", "TX SWR_MIC0"},
	{"TX SMIC MUX3", "SWR_MIC1", "TX SWR_MIC1"},
	{"TX SMIC MUX3", "SWR_MIC2", "TX SWR_MIC2"},
	{"TX SMIC MUX3", "SWR_MIC3", "TX SWR_MIC3"},
	{"TX SMIC MUX3", "SWR_MIC4", "TX SWR_MIC4"},
	{"TX SMIC MUX3", "SWR_MIC5", "TX SWR_MIC5"},
	{"TX SMIC MUX3", "SWR_MIC6", "TX SWR_MIC6"},
	{"TX SMIC MUX3", "SWR_MIC7", "TX SWR_MIC7"},
	{"TX SMIC MUX3", "SWR_MIC8", "TX SWR_MIC8"},
	{"TX SMIC MUX3", "SWR_MIC9", "TX SWR_MIC9"},
	{"TX SMIC MUX3", "SWR_MIC10", "TX SWR_MIC10"},
	{"TX SMIC MUX3", "SWR_MIC11", "TX SWR_MIC11"},
	{"TX SMIC MUX3", "SWR_MIC0", "TX SWR_INPUT"},
	{"TX SMIC MUX3", "SWR_MIC1", "TX SWR_INPUT"},
	{"TX SMIC MUX3", "SWR_MIC2", "TX SWR_INPUT"},
	{"TX SMIC MUX3", "SWR_MIC3", "TX SWR_INPUT"},
	{"TX SMIC MUX3", "SWR_MIC4", "TX SWR_INPUT"},
	{"TX SMIC MUX3", "SWR_MIC5", "TX SWR_INPUT"},
	{"TX SMIC MUX3", "SWR_MIC6", "TX SWR_INPUT"},
	{"TX SMIC MUX3", "SWR_MIC7", "TX SWR_INPUT"},
	{"TX SMIC MUX3", "SWR_MIC8", "TX SWR_INPUT"},
	{"TX SMIC MUX3", "SWR_MIC9", "TX SWR_INPUT"},
	{"TX SMIC MUX3", "SWR_MIC10", "TX SWR_INPUT"},
	{"TX SMIC MUX3", "SWR_MIC11", "TX SWR_INPUT"},
};

static const struct snd_soc_dapm_route tx_audio_map_v3[] = {
@@ -1904,18 +1893,18 @@ static const struct snd_soc_dapm_route tx_audio_map_v3[] = {
	{"TX DMIC MUX4", "DMIC7", "TX DMIC7"},

	{"TX DEC4 MUX", "SWR_MIC", "TX SMIC MUX4"},
	{"TX SMIC MUX4", "SWR_MIC0", "TX SWR_MIC0"},
	{"TX SMIC MUX4", "SWR_MIC1", "TX SWR_MIC1"},
	{"TX SMIC MUX4", "SWR_MIC2", "TX SWR_MIC2"},
	{"TX SMIC MUX4", "SWR_MIC3", "TX SWR_MIC3"},
	{"TX SMIC MUX4", "SWR_MIC4", "TX SWR_MIC4"},
	{"TX SMIC MUX4", "SWR_MIC5", "TX SWR_MIC5"},
	{"TX SMIC MUX4", "SWR_MIC6", "TX SWR_MIC6"},
	{"TX SMIC MUX4", "SWR_MIC7", "TX SWR_MIC7"},
	{"TX SMIC MUX4", "SWR_MIC8", "TX SWR_MIC8"},
	{"TX SMIC MUX4", "SWR_MIC9", "TX SWR_MIC9"},
	{"TX SMIC MUX4", "SWR_MIC10", "TX SWR_MIC10"},
	{"TX SMIC MUX4", "SWR_MIC11", "TX SWR_MIC11"},
	{"TX SMIC MUX4", "SWR_MIC0", "TX SWR_INPUT"},
	{"TX SMIC MUX4", "SWR_MIC1", "TX SWR_INPUT"},
	{"TX SMIC MUX4", "SWR_MIC2", "TX SWR_INPUT"},
	{"TX SMIC MUX4", "SWR_MIC3", "TX SWR_INPUT"},
	{"TX SMIC MUX4", "SWR_MIC4", "TX SWR_INPUT"},
	{"TX SMIC MUX4", "SWR_MIC5", "TX SWR_INPUT"},
	{"TX SMIC MUX4", "SWR_MIC6", "TX SWR_INPUT"},
	{"TX SMIC MUX4", "SWR_MIC7", "TX SWR_INPUT"},
	{"TX SMIC MUX4", "SWR_MIC8", "TX SWR_INPUT"},
	{"TX SMIC MUX4", "SWR_MIC9", "TX SWR_INPUT"},
	{"TX SMIC MUX4", "SWR_MIC10", "TX SWR_INPUT"},
	{"TX SMIC MUX4", "SWR_MIC11", "TX SWR_INPUT"},

	{"TX DEC5 MUX", "MSM_DMIC", "TX DMIC MUX5"},
	{"TX DMIC MUX5", "DMIC0", "TX DMIC0"},
@@ -1928,18 +1917,18 @@ static const struct snd_soc_dapm_route tx_audio_map_v3[] = {
	{"TX DMIC MUX5", "DMIC7", "TX DMIC7"},

	{"TX DEC5 MUX", "SWR_MIC", "TX SMIC MUX5"},
	{"TX SMIC MUX5", "SWR_MIC0", "TX SWR_MIC0"},
	{"TX SMIC MUX5", "SWR_MIC1", "TX SWR_MIC1"},
	{"TX SMIC MUX5", "SWR_MIC2", "TX SWR_MIC2"},
	{"TX SMIC MUX5", "SWR_MIC3", "TX SWR_MIC3"},
	{"TX SMIC MUX5", "SWR_MIC4", "TX SWR_MIC4"},
	{"TX SMIC MUX5", "SWR_MIC5", "TX SWR_MIC5"},
	{"TX SMIC MUX5", "SWR_MIC6", "TX SWR_MIC6"},
	{"TX SMIC MUX5", "SWR_MIC7", "TX SWR_MIC7"},
	{"TX SMIC MUX5", "SWR_MIC8", "TX SWR_MIC8"},
	{"TX SMIC MUX5", "SWR_MIC9", "TX SWR_MIC9"},
	{"TX SMIC MUX5", "SWR_MIC10", "TX SWR_MIC10"},
	{"TX SMIC MUX5", "SWR_MIC11", "TX SWR_MIC11"},
	{"TX SMIC MUX5", "SWR_MIC0", "TX SWR_INPUT"},
	{"TX SMIC MUX5", "SWR_MIC1", "TX SWR_INPUT"},
	{"TX SMIC MUX5", "SWR_MIC2", "TX SWR_INPUT"},
	{"TX SMIC MUX5", "SWR_MIC3", "TX SWR_INPUT"},
	{"TX SMIC MUX5", "SWR_MIC4", "TX SWR_INPUT"},
	{"TX SMIC MUX5", "SWR_MIC5", "TX SWR_INPUT"},
	{"TX SMIC MUX5", "SWR_MIC6", "TX SWR_INPUT"},
	{"TX SMIC MUX5", "SWR_MIC7", "TX SWR_INPUT"},
	{"TX SMIC MUX5", "SWR_MIC8", "TX SWR_INPUT"},
	{"TX SMIC MUX5", "SWR_MIC9", "TX SWR_INPUT"},
	{"TX SMIC MUX5", "SWR_MIC10", "TX SWR_INPUT"},
	{"TX SMIC MUX5", "SWR_MIC11", "TX SWR_INPUT"},

	{"TX DEC6 MUX", "MSM_DMIC", "TX DMIC MUX6"},
	{"TX DMIC MUX6", "DMIC0", "TX DMIC0"},
@@ -1952,18 +1941,18 @@ static const struct snd_soc_dapm_route tx_audio_map_v3[] = {
	{"TX DMIC MUX6", "DMIC7", "TX DMIC7"},

	{"TX DEC6 MUX", "SWR_MIC", "TX SMIC MUX6"},
	{"TX SMIC MUX6", "SWR_MIC0", "TX SWR_MIC0"},
	{"TX SMIC MUX6", "SWR_MIC1", "TX SWR_MIC1"},
	{"TX SMIC MUX6", "SWR_MIC2", "TX SWR_MIC2"},
	{"TX SMIC MUX6", "SWR_MIC3", "TX SWR_MIC3"},
	{"TX SMIC MUX6", "SWR_MIC4", "TX SWR_MIC4"},
	{"TX SMIC MUX6", "SWR_MIC5", "TX SWR_MIC5"},
	{"TX SMIC MUX6", "SWR_MIC6", "TX SWR_MIC6"},
	{"TX SMIC MUX6", "SWR_MIC7", "TX SWR_MIC7"},
	{"TX SMIC MUX6", "SWR_MIC8", "TX SWR_MIC8"},
	{"TX SMIC MUX6", "SWR_MIC9", "TX SWR_MIC9"},
	{"TX SMIC MUX6", "SWR_MIC10", "TX SWR_MIC10"},
	{"TX SMIC MUX6", "SWR_MIC11", "TX SWR_MIC11"},
	{"TX SMIC MUX6", "SWR_MIC0", "TX SWR_INPUT"},
	{"TX SMIC MUX6", "SWR_MIC1", "TX SWR_INPUT"},
	{"TX SMIC MUX6", "SWR_MIC2", "TX SWR_INPUT"},
	{"TX SMIC MUX6", "SWR_MIC3", "TX SWR_INPUT"},
	{"TX SMIC MUX6", "SWR_MIC4", "TX SWR_INPUT"},
	{"TX SMIC MUX6", "SWR_MIC5", "TX SWR_INPUT"},
	{"TX SMIC MUX6", "SWR_MIC6", "TX SWR_INPUT"},
	{"TX SMIC MUX6", "SWR_MIC7", "TX SWR_INPUT"},
	{"TX SMIC MUX6", "SWR_MIC8", "TX SWR_INPUT"},
	{"TX SMIC MUX6", "SWR_MIC9", "TX SWR_INPUT"},
	{"TX SMIC MUX6", "SWR_MIC10", "TX SWR_INPUT"},
	{"TX SMIC MUX6", "SWR_MIC11", "TX SWR_INPUT"},

	{"TX DEC7 MUX", "MSM_DMIC", "TX DMIC MUX7"},
	{"TX DMIC MUX7", "DMIC0", "TX DMIC0"},
@@ -1976,18 +1965,18 @@ static const struct snd_soc_dapm_route tx_audio_map_v3[] = {
	{"TX DMIC MUX7", "DMIC7", "TX DMIC7"},

	{"TX DEC7 MUX", "SWR_MIC", "TX SMIC MUX7"},
	{"TX SMIC MUX7", "SWR_MIC0", "TX SWR_MIC0"},
	{"TX SMIC MUX7", "SWR_MIC1", "TX SWR_MIC1"},
	{"TX SMIC MUX7", "SWR_MIC2", "TX SWR_MIC2"},
	{"TX SMIC MUX7", "SWR_MIC3", "TX SWR_MIC3"},
	{"TX SMIC MUX7", "SWR_MIC4", "TX SWR_MIC4"},
	{"TX SMIC MUX7", "SWR_MIC5", "TX SWR_MIC5"},
	{"TX SMIC MUX7", "SWR_MIC6", "TX SWR_MIC6"},
	{"TX SMIC MUX7", "SWR_MIC7", "TX SWR_MIC7"},
	{"TX SMIC MUX7", "SWR_MIC8", "TX SWR_MIC8"},
	{"TX SMIC MUX7", "SWR_MIC9", "TX SWR_MIC9"},
	{"TX SMIC MUX7", "SWR_MIC10", "TX SWR_MIC10"},
	{"TX SMIC MUX7", "SWR_MIC11", "TX SWR_MIC11"},
	{"TX SMIC MUX7", "SWR_MIC0", "TX SWR_INPUT"},
	{"TX SMIC MUX7", "SWR_MIC1", "TX SWR_INPUT"},
	{"TX SMIC MUX7", "SWR_MIC2", "TX SWR_INPUT"},
	{"TX SMIC MUX7", "SWR_MIC3", "TX SWR_INPUT"},
	{"TX SMIC MUX7", "SWR_MIC4", "TX SWR_INPUT"},
	{"TX SMIC MUX7", "SWR_MIC5", "TX SWR_INPUT"},
	{"TX SMIC MUX7", "SWR_MIC6", "TX SWR_INPUT"},
	{"TX SMIC MUX7", "SWR_MIC7", "TX SWR_INPUT"},
	{"TX SMIC MUX7", "SWR_MIC8", "TX SWR_INPUT"},
	{"TX SMIC MUX7", "SWR_MIC9", "TX SWR_INPUT"},
	{"TX SMIC MUX7", "SWR_MIC10", "TX SWR_INPUT"},
	{"TX SMIC MUX7", "SWR_MIC11", "TX SWR_INPUT"},

	{"TX SMIC MUX0", NULL, "TX_SWR_CLK"},
	{"TX SMIC MUX1", NULL, "TX_SWR_CLK"},
@@ -2864,18 +2853,7 @@ static int tx_macro_init(struct snd_soc_component *component)
	snd_soc_dapm_ignore_suspend(dapm, "TX_AIF2 Capture");
	snd_soc_dapm_ignore_suspend(dapm, "TX_AIF3 Capture");
	if (tx_priv->version >= BOLERO_VERSION_2_0) {
		snd_soc_dapm_ignore_suspend(dapm, "TX SWR_MIC0");
		snd_soc_dapm_ignore_suspend(dapm, "TX SWR_MIC1");
		snd_soc_dapm_ignore_suspend(dapm, "TX SWR_MIC2");
		snd_soc_dapm_ignore_suspend(dapm, "TX SWR_MIC3");
		snd_soc_dapm_ignore_suspend(dapm, "TX SWR_MIC4");
		snd_soc_dapm_ignore_suspend(dapm, "TX SWR_MIC5");
		snd_soc_dapm_ignore_suspend(dapm, "TX SWR_MIC6");
		snd_soc_dapm_ignore_suspend(dapm, "TX SWR_MIC7");
		snd_soc_dapm_ignore_suspend(dapm, "TX SWR_MIC8");
		snd_soc_dapm_ignore_suspend(dapm, "TX SWR_MIC9");
		snd_soc_dapm_ignore_suspend(dapm, "TX SWR_MIC10");
		snd_soc_dapm_ignore_suspend(dapm, "TX SWR_MIC11");
		snd_soc_dapm_ignore_suspend(dapm, "TX SWR_INPUT");
	} else {
		snd_soc_dapm_ignore_suspend(dapm, "TX SWR_ADC0");
		snd_soc_dapm_ignore_suspend(dapm, "TX SWR_ADC1");
+64 −86
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0-only
/* Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.
/* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
 */

#include <linux/module.h>
@@ -1672,18 +1672,7 @@ static const struct snd_soc_dapm_widget va_macro_dapm_widgets_common[] = {
	VA_MACRO_DAPM_MUX("VA SMIC MUX0", 0, va_smic0_v2),
	VA_MACRO_DAPM_MUX("VA SMIC MUX1", 0, va_smic1_v2),

	SND_SOC_DAPM_INPUT("VA SWR_MIC0"),
	SND_SOC_DAPM_INPUT("VA SWR_MIC1"),
	SND_SOC_DAPM_INPUT("VA SWR_MIC2"),
	SND_SOC_DAPM_INPUT("VA SWR_MIC3"),
	SND_SOC_DAPM_INPUT("VA SWR_MIC4"),
	SND_SOC_DAPM_INPUT("VA SWR_MIC5"),
	SND_SOC_DAPM_INPUT("VA SWR_MIC6"),
	SND_SOC_DAPM_INPUT("VA SWR_MIC7"),
	SND_SOC_DAPM_INPUT("VA SWR_MIC8"),
	SND_SOC_DAPM_INPUT("VA SWR_MIC9"),
	SND_SOC_DAPM_INPUT("VA SWR_MIC10"),
	SND_SOC_DAPM_INPUT("VA SWR_MIC11"),
	SND_SOC_DAPM_INPUT("VA SWR_INPUT"),

	SND_SOC_DAPM_SUPPLY("VA MIC BIAS1", SND_SOC_NOPM, 0, 0,
		va_macro_enable_micbias,
@@ -1971,18 +1960,18 @@ static const struct snd_soc_dapm_route va_audio_map_common[] = {
	{"VA DMIC MUX0", "DMIC7", "VA DMIC7"},

	{"VA DEC0 MUX", "SWR_MIC", "VA SMIC MUX0"},
	{"VA SMIC MUX0", "SWR_MIC0", "VA SWR_MIC0"},
	{"VA SMIC MUX0", "SWR_MIC1", "VA SWR_MIC1"},
	{"VA SMIC MUX0", "SWR_MIC2", "VA SWR_MIC2"},
	{"VA SMIC MUX0", "SWR_MIC3", "VA SWR_MIC3"},
	{"VA SMIC MUX0", "SWR_MIC4", "VA SWR_MIC4"},
	{"VA SMIC MUX0", "SWR_MIC5", "VA SWR_MIC5"},
	{"VA SMIC MUX0", "SWR_MIC6", "VA SWR_MIC6"},
	{"VA SMIC MUX0", "SWR_MIC7", "VA SWR_MIC7"},
	{"VA SMIC MUX0", "SWR_MIC8", "VA SWR_MIC8"},
	{"VA SMIC MUX0", "SWR_MIC9", "VA SWR_MIC9"},
	{"VA SMIC MUX0", "SWR_MIC10", "VA SWR_MIC10"},
	{"VA SMIC MUX0", "SWR_MIC11", "VA SWR_MIC11"},
	{"VA SMIC MUX0", "SWR_MIC0", "VA SWR_INPUT"},
	{"VA SMIC MUX0", "SWR_MIC1", "VA SWR_INPUT"},
	{"VA SMIC MUX0", "SWR_MIC2", "VA SWR_INPUT"},
	{"VA SMIC MUX0", "SWR_MIC3", "VA SWR_INPUT"},
	{"VA SMIC MUX0", "SWR_MIC4", "VA SWR_INPUT"},
	{"VA SMIC MUX0", "SWR_MIC5", "VA SWR_INPUT"},
	{"VA SMIC MUX0", "SWR_MIC6", "VA SWR_INPUT"},
	{"VA SMIC MUX0", "SWR_MIC7", "VA SWR_INPUT"},
	{"VA SMIC MUX0", "SWR_MIC8", "VA SWR_INPUT"},
	{"VA SMIC MUX0", "SWR_MIC9", "VA SWR_INPUT"},
	{"VA SMIC MUX0", "SWR_MIC10", "VA SWR_INPUT"},
	{"VA SMIC MUX0", "SWR_MIC11", "VA SWR_INPUT"},

	{"VA DEC1 MUX", "MSM_DMIC", "VA DMIC MUX1"},
	{"VA DMIC MUX1", "DMIC0", "VA DMIC0"},
@@ -1995,31 +1984,31 @@ static const struct snd_soc_dapm_route va_audio_map_common[] = {
	{"VA DMIC MUX1", "DMIC7", "VA DMIC7"},

	{"VA DEC1 MUX", "SWR_MIC", "VA SMIC MUX1"},
	{"VA SMIC MUX1", "SWR_MIC0", "VA SWR_MIC0"},
	{"VA SMIC MUX1", "SWR_MIC1", "VA SWR_MIC1"},
	{"VA SMIC MUX1", "SWR_MIC2", "VA SWR_MIC2"},
	{"VA SMIC MUX1", "SWR_MIC3", "VA SWR_MIC3"},
	{"VA SMIC MUX1", "SWR_MIC4", "VA SWR_MIC4"},
	{"VA SMIC MUX1", "SWR_MIC5", "VA SWR_MIC5"},
	{"VA SMIC MUX1", "SWR_MIC6", "VA SWR_MIC6"},
	{"VA SMIC MUX1", "SWR_MIC7", "VA SWR_MIC7"},
	{"VA SMIC MUX1", "SWR_MIC8", "VA SWR_MIC8"},
	{"VA SMIC MUX1", "SWR_MIC9", "VA SWR_MIC9"},
	{"VA SMIC MUX1", "SWR_MIC10", "VA SWR_MIC10"},
	{"VA SMIC MUX1", "SWR_MIC11", "VA SWR_MIC11"},

	{"VA SWR_MIC0", NULL, "VA_SWR_PWR"},
	{"VA SWR_MIC1", NULL, "VA_SWR_PWR"},
	{"VA SWR_MIC2", NULL, "VA_SWR_PWR"},
	{"VA SWR_MIC3", NULL, "VA_SWR_PWR"},
	{"VA SWR_MIC4", NULL, "VA_SWR_PWR"},
	{"VA SWR_MIC5", NULL, "VA_SWR_PWR"},
	{"VA SWR_MIC6", NULL, "VA_SWR_PWR"},
	{"VA SWR_MIC7", NULL, "VA_SWR_PWR"},
	{"VA SWR_MIC8", NULL, "VA_SWR_PWR"},
	{"VA SWR_MIC9", NULL, "VA_SWR_PWR"},
	{"VA SWR_MIC10", NULL, "VA_SWR_PWR"},
	{"VA SWR_MIC11", NULL, "VA_SWR_PWR"},
	{"VA SMIC MUX1", "SWR_MIC0", "VA SWR_INPUT"},
	{"VA SMIC MUX1", "SWR_MIC1", "VA SWR_INPUT"},
	{"VA SMIC MUX1", "SWR_MIC2", "VA SWR_INPUT"},
	{"VA SMIC MUX1", "SWR_MIC3", "VA SWR_INPUT"},
	{"VA SMIC MUX1", "SWR_MIC4", "VA SWR_INPUT"},
	{"VA SMIC MUX1", "SWR_MIC5", "VA SWR_INPUT"},
	{"VA SMIC MUX1", "SWR_MIC6", "VA SWR_INPUT"},
	{"VA SMIC MUX1", "SWR_MIC7", "VA SWR_INPUT"},
	{"VA SMIC MUX1", "SWR_MIC8", "VA SWR_INPUT"},
	{"VA SMIC MUX1", "SWR_MIC9", "VA SWR_INPUT"},
	{"VA SMIC MUX1", "SWR_MIC10", "VA SWR_INPUT"},
	{"VA SMIC MUX1", "SWR_MIC11", "VA SWR_INPUT"},

	{"VA SWR_INPUT", NULL, "VA_SWR_PWR"},
	{"VA SWR_INPUT", NULL, "VA_SWR_PWR"},
	{"VA SWR_INPUT", NULL, "VA_SWR_PWR"},
	{"VA SWR_INPUT", NULL, "VA_SWR_PWR"},
	{"VA SWR_INPUT", NULL, "VA_SWR_PWR"},
	{"VA SWR_INPUT", NULL, "VA_SWR_PWR"},
	{"VA SWR_INPUT", NULL, "VA_SWR_PWR"},
	{"VA SWR_INPUT", NULL, "VA_SWR_PWR"},
	{"VA SWR_INPUT", NULL, "VA_SWR_PWR"},
	{"VA SWR_INPUT", NULL, "VA_SWR_PWR"},
	{"VA SWR_INPUT", NULL, "VA_SWR_PWR"},
	{"VA SWR_INPUT", NULL, "VA_SWR_PWR"},

};

@@ -2044,18 +2033,18 @@ static const struct snd_soc_dapm_route va_audio_map_v3[] = {
	{"VA DMIC MUX2", "DMIC7", "VA DMIC7"},

	{"VA DEC2 MUX", "SWR_MIC", "VA SMIC MUX2"},
	{"VA SMIC MUX2", "SWR_MIC0", "VA SWR_MIC0"},
	{"VA SMIC MUX2", "SWR_MIC1", "VA SWR_MIC1"},
	{"VA SMIC MUX2", "SWR_MIC2", "VA SWR_MIC2"},
	{"VA SMIC MUX2", "SWR_MIC3", "VA SWR_MIC3"},
	{"VA SMIC MUX2", "SWR_MIC4", "VA SWR_MIC4"},
	{"VA SMIC MUX2", "SWR_MIC5", "VA SWR_MIC5"},
	{"VA SMIC MUX2", "SWR_MIC6", "VA SWR_MIC6"},
	{"VA SMIC MUX2", "SWR_MIC7", "VA SWR_MIC7"},
	{"VA SMIC MUX2", "SWR_MIC8", "VA SWR_MIC8"},
	{"VA SMIC MUX2", "SWR_MIC9", "VA SWR_MIC9"},
	{"VA SMIC MUX2", "SWR_MIC10", "VA SWR_MIC10"},
	{"VA SMIC MUX2", "SWR_MIC11", "VA SWR_MIC11"},
	{"VA SMIC MUX2", "SWR_MIC0", "VA SWR_INPUT"},
	{"VA SMIC MUX2", "SWR_MIC1", "VA SWR_INPUT"},
	{"VA SMIC MUX2", "SWR_MIC2", "VA SWR_INPUT"},
	{"VA SMIC MUX2", "SWR_MIC3", "VA SWR_INPUT"},
	{"VA SMIC MUX2", "SWR_MIC4", "VA SWR_INPUT"},
	{"VA SMIC MUX2", "SWR_MIC5", "VA SWR_INPUT"},
	{"VA SMIC MUX2", "SWR_MIC6", "VA SWR_INPUT"},
	{"VA SMIC MUX2", "SWR_MIC7", "VA SWR_INPUT"},
	{"VA SMIC MUX2", "SWR_MIC8", "VA SWR_INPUT"},
	{"VA SMIC MUX2", "SWR_MIC9", "VA SWR_INPUT"},
	{"VA SMIC MUX2", "SWR_MIC10", "VA SWR_INPUT"},
	{"VA SMIC MUX2", "SWR_MIC11", "VA SWR_INPUT"},

	{"VA DEC3 MUX", "MSM_DMIC", "VA DMIC MUX3"},
	{"VA DMIC MUX3", "DMIC0", "VA DMIC0"},
@@ -2068,18 +2057,18 @@ static const struct snd_soc_dapm_route va_audio_map_v3[] = {
	{"VA DMIC MUX3", "DMIC7", "VA DMIC7"},

	{"VA DEC3 MUX", "SWR_MIC", "VA SMIC MUX3"},
	{"VA SMIC MUX3", "SWR_MIC0", "VA SWR_MIC0"},
	{"VA SMIC MUX3", "SWR_MIC1", "VA SWR_MIC1"},
	{"VA SMIC MUX3", "SWR_MIC2", "VA SWR_MIC2"},
	{"VA SMIC MUX3", "SWR_MIC3", "VA SWR_MIC3"},
	{"VA SMIC MUX3", "SWR_MIC4", "VA SWR_MIC4"},
	{"VA SMIC MUX3", "SWR_MIC5", "VA SWR_MIC5"},
	{"VA SMIC MUX3", "SWR_MIC6", "VA SWR_MIC6"},
	{"VA SMIC MUX3", "SWR_MIC7", "VA SWR_MIC7"},
	{"VA SMIC MUX3", "SWR_MIC8", "VA SWR_MIC8"},
	{"VA SMIC MUX3", "SWR_MIC9", "VA SWR_MIC9"},
	{"VA SMIC MUX3", "SWR_MIC10", "VA SWR_MIC10"},
	{"VA SMIC MUX3", "SWR_MIC11", "VA SWR_MIC11"},
	{"VA SMIC MUX3", "SWR_MIC0", "VA SWR_INPUT"},
	{"VA SMIC MUX3", "SWR_MIC1", "VA SWR_INPUT"},
	{"VA SMIC MUX3", "SWR_MIC2", "VA SWR_INPUT"},
	{"VA SMIC MUX3", "SWR_MIC3", "VA SWR_INPUT"},
	{"VA SMIC MUX3", "SWR_MIC4", "VA SWR_INPUT"},
	{"VA SMIC MUX3", "SWR_MIC5", "VA SWR_INPUT"},
	{"VA SMIC MUX3", "SWR_MIC6", "VA SWR_INPUT"},
	{"VA SMIC MUX3", "SWR_MIC7", "VA SWR_INPUT"},
	{"VA SMIC MUX3", "SWR_MIC8", "VA SWR_INPUT"},
	{"VA SMIC MUX3", "SWR_MIC9", "VA SWR_INPUT"},
	{"VA SMIC MUX3", "SWR_MIC10", "VA SWR_INPUT"},
	{"VA SMIC MUX3", "SWR_MIC11", "VA SWR_INPUT"},
};

static const struct snd_soc_dapm_route va_audio_map[] = {
@@ -2549,18 +2538,7 @@ static int va_macro_init(struct snd_soc_component *component)
	snd_soc_dapm_ignore_suspend(dapm, "VA_AIF2 Capture");
	snd_soc_dapm_ignore_suspend(dapm, "VA_AIF3 Capture");
	if (va_priv->version >= BOLERO_VERSION_2_0) {
		snd_soc_dapm_ignore_suspend(dapm, "VA SWR_MIC0");
		snd_soc_dapm_ignore_suspend(dapm, "VA SWR_MIC1");
		snd_soc_dapm_ignore_suspend(dapm, "VA SWR_MIC2");
		snd_soc_dapm_ignore_suspend(dapm, "VA SWR_MIC3");
		snd_soc_dapm_ignore_suspend(dapm, "VA SWR_MIC4");
		snd_soc_dapm_ignore_suspend(dapm, "VA SWR_MIC5");
		snd_soc_dapm_ignore_suspend(dapm, "VA SWR_MIC6");
		snd_soc_dapm_ignore_suspend(dapm, "VA SWR_MIC7");
		snd_soc_dapm_ignore_suspend(dapm, "VA SWR_MIC8");
		snd_soc_dapm_ignore_suspend(dapm, "VA SWR_MIC9");
		snd_soc_dapm_ignore_suspend(dapm, "VA SWR_MIC10");
		snd_soc_dapm_ignore_suspend(dapm, "VA SWR_MIC11");
		snd_soc_dapm_ignore_suspend(dapm, "VA SWR_INPUT");
	} else {
		snd_soc_dapm_ignore_suspend(dapm, "VA SWR_ADC0");
		snd_soc_dapm_ignore_suspend(dapm, "VA SWR_ADC1");
+4 −1
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0-only */
/* Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.
/* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
 */

#ifndef _WCD937X_INTERNAL_H
@@ -9,6 +9,7 @@
#include <asoc/wcd-mbhc-v2.h>
#include <asoc/wcd-irq.h>
#include "wcd937x-mbhc.h"
#include "wcd937x.h"

#define WCD937X_MAX_MICBIAS 3

@@ -17,6 +18,7 @@
#define MAX_PORT 8
#define MAX_CH_PER_PORT 8

#define WCD937X_MAX_SLAVE_PORT_TYPES 10
extern struct regmap_config wcd937x_regmap_config;

struct codec_port_info {
@@ -87,6 +89,7 @@ struct wcd937x_priv {
	int ear_rx_path;
	int ana_clk_count;
	struct mutex ana_tx_clk_lock;
	u8 tx_master_ch_map[WCD937X_MAX_SLAVE_CH_TYPES];
};

struct wcd937x_micbias_setting {
+134 −10

File changed.

Preview size limit exceeded, changes collapsed.

+79 −1
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0-only */
/* Copyright (c) 2018, The Linux Foundation. All rights reserved.
/* Copyright (c) 2018, 2020 The Linux Foundation. All rights reserved.
 */

#ifndef _WCD937X_H
#define _WCD937X_H

#include <dt-bindings/sound/audio-codec-port-types.h>

#define WCD937X_MAX_SLAVE_CH_TYPES 10
#define ZERO 0

struct swr_slave_ch_map {
	u8 ch_type;
	u8 index;
};

static const struct swr_slave_ch_map swr_slv_tx_ch_idx[] = {
	{ADC1, 0},
	{ADC2, 1},
	{ADC3, 2},
	{DMIC0, 3},
	{DMIC1, 4},
	{MBHC, 5},
	{DMIC2, 6},
	{DMIC3, 7},
	{DMIC4, 8},
	{DMIC5, 9},
};

static int swr_master_ch_map[] = {
	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,
};

#ifdef CONFIG_SND_SOC_WCD937X
extern int wcd937x_info_create_codec_entry(struct snd_info_entry *codec_root,
				    struct snd_soc_component *component);

static inline int wcd937x_slave_get_master_ch_val(int ch)
{
	int i;

	for (i = 0; i < WCD937X_MAX_SLAVE_CH_TYPES; i++)
		if (ch == swr_master_ch_map[i])
			return i;
	return 0;
}

static inline int wcd937x_slave_get_master_ch(int idx)
{
	return swr_master_ch_map[idx];
}

static inline int wcd937x_slave_get_slave_ch_val(int ch)
{
	int i;

	for (i = 0; i < WCD937X_MAX_SLAVE_CH_TYPES; i++)
		if (ch == swr_slv_tx_ch_idx[i].ch_type)
			return swr_slv_tx_ch_idx[i].index;

	return -EINVAL;
}
#else
extern int wcd937x_info_create_codec_entry(struct snd_info_entry *codec_root,
				    struct snd_soc_component *component)
{
	return 0;
}
static inline int wcd937x_slave_get_master_ch_val(int ch)
{
	return 0;
}
static inline int wcd937x_slave_get_master_ch(int idx)
{
	return 0;
}
static inline int wcd937x_slave_get_slave_ch_val(int ch)
{
	return 0;
}
#endif /* CONFIG_SND_SOC_WCD937X */

#endif
Loading