Browse Source

asoc: codecs: enable i2s mode for tavil

Add support for tavil i2c access. Add audio
routings dapm widgets for data and control.

Change-Id: I96ebf7a5700b10f294f4fadfeeb21dab490a9313
Signed-off-by: Karthikeyan Mani <[email protected]>
Karthikeyan Mani 7 years ago
parent
commit
98d3d590bb
2 changed files with 895 additions and 99 deletions
  1. 107 36
      asoc/codecs/wcd934x/wcd934x-routing.h
  2. 788 63
      asoc/codecs/wcd934x/wcd934x.c

+ 107 - 36
asoc/codecs/wcd934x/wcd934x-routing.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2017, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2015-2018, 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
@@ -17,13 +17,9 @@
 
 const struct snd_soc_dapm_route tavil_slim_audio_map[] = {
 
-	/* Virtual input widgets */
-	{"AIF1 CAP", NULL, "AIF1_CAP Mixer"},
-	{"AIF2 CAP", NULL, "AIF2_CAP Mixer"},
-	{"AIF3 CAP", NULL, "AIF3_CAP Mixer"},
 	{"AIF4 MAD", NULL, "AIF4_MAD Mixer"},
 
-	/* Virtual input widget Mixer */
+	/* Virtual input widget Mixer SLIMBUS*/
 	{"AIF1_CAP Mixer", "SLIM TX0", "SLIM TX0"},
 	{"AIF1_CAP Mixer", "SLIM TX1", "SLIM TX1"},
 	{"AIF1_CAP Mixer", "SLIM TX2", "SLIM TX2"},
@@ -68,6 +64,21 @@ const struct snd_soc_dapm_route tavil_slim_audio_map[] = {
 
 	{"AIF4_MAD Mixer", "SLIM TX13", "SLIM TX13"},
 
+	/* CDC Tx interface with SLIMBUS */
+	{"SLIM TX0", NULL, "CDC_IF TX0 MUX"},
+	{"SLIM TX1", NULL, "CDC_IF TX1 MUX"},
+	{"SLIM TX2", NULL, "CDC_IF TX2 MUX"},
+	{"SLIM TX3", NULL, "CDC_IF TX3 MUX"},
+	{"SLIM TX4", NULL, "CDC_IF TX4 MUX"},
+	{"SLIM TX5", NULL, "CDC_IF TX5 MUX"},
+	{"SLIM TX6", NULL, "CDC_IF TX6 MUX"},
+	{"SLIM TX7", NULL, "CDC_IF TX7 MUX"},
+	{"SLIM TX8", NULL, "CDC_IF TX8 MUX"},
+	{"SLIM TX9", NULL, "CDC_IF TX9 MUX"},
+	{"SLIM TX10", NULL, "CDC_IF TX10 MUX"},
+	{"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"},
@@ -113,10 +124,100 @@ const struct snd_soc_dapm_route tavil_slim_audio_map[] = {
 	{"SLIM RX6", NULL, "SLIM RX6 MUX"},
 	{"SLIM RX7", NULL, "SLIM RX7 MUX"},
 
+	/* CDC Rx interface with SLIMBUS */
+	{"CDC_IF RX0 MUX", "SLIM RX0", "SLIM RX0"},
+	{"CDC_IF RX1 MUX", "SLIM RX1", "SLIM RX1"},
+	{"CDC_IF RX2 MUX", "SLIM RX2", "SLIM RX2"},
+	{"CDC_IF RX3 MUX", "SLIM RX3", "SLIM RX3"},
+	{"CDC_IF RX4 MUX", "SLIM RX4", "SLIM RX4"},
+	{"CDC_IF RX5 MUX", "SLIM RX5", "SLIM RX5"},
+	{"CDC_IF RX6 MUX", "SLIM RX6", "SLIM RX6"},
+	{"CDC_IF RX7 MUX", "SLIM RX7", "SLIM RX7"},
+
+	/* VI Feedback */
+	{"AIF4_VI Mixer", "SPKR_VI_1", "VIINPUT"},
+	{"AIF4_VI Mixer", "SPKR_VI_2", "VIINPUT"},
+	{"AIF4 VI", NULL, "AIF4_VI Mixer"},
+
+};
+
+const struct snd_soc_dapm_route tavil_i2s_audio_map[] = {
+
+	/* Virtual input widget Mixer I2S*/
+	{"AIF1_CAP Mixer", "I2S TX1", "I2S TX1"},
+	{"AIF1_CAP Mixer", "I2S TX2", "I2S TX2"},
+	{"AIF1_CAP Mixer", "I2S TX3", "I2S TX3"},
+	{"AIF1_CAP Mixer", "I2S TX4", "I2S TX4"},
+	{"AIF1_CAP Mixer", "I2S TX5", "I2S TX5"},
+	{"AIF1_CAP Mixer", "I2S TX6", "I2S TX6"},
+	{"AIF1_CAP Mixer", "I2S TX7", "I2S TX7"},
+
+	{"AIF2_CAP Mixer", "I2S TX8", "I2S TX8"},
+	{"AIF2_CAP Mixer", "I2S TX11", "I2S TX11"},
+
+	{"AIF3_CAP Mixer", "I2S TX0", "I2S TX0"},
+	{"AIF3_CAP Mixer", "I2S TX1", "I2S TX1"},
+
+	/* CDC Tx interface with I2S */
+	{"I2S TX0", NULL, "CDC_IF TX0 MUX"},
+	{"I2S TX1", NULL, "CDC_IF TX1 MUX"},
+	{"I2S TX2", NULL, "CDC_IF TX2 MUX"},
+	{"I2S TX3", NULL, "CDC_IF TX3 MUX"},
+	{"I2S TX4", NULL, "CDC_IF TX4 MUX"},
+	{"I2S TX5", NULL, "CDC_IF TX5 MUX"},
+	{"I2S TX6", NULL, "CDC_IF TX6 MUX"},
+	{"I2S TX7", NULL, "CDC_IF TX7 MUX"},
+	{"I2S TX8", NULL, "CDC_IF TX8 MUX"},
+	{"I2S TX11", NULL, "CDC_IF TX11 MUX"},
+
+	{"I2S RX0 MUX", "AIF1_PB", "AIF1 PB"},
+	{"I2S RX1 MUX", "AIF1_PB", "AIF1 PB"},
+	{"I2S RX2 MUX", "AIF1_PB", "AIF1 PB"},
+	{"I2S RX3 MUX", "AIF1_PB", "AIF1 PB"},
+	{"I2S RX4 MUX", "AIF1_PB", "AIF1 PB"},
+	{"I2S RX5 MUX", "AIF1_PB", "AIF1 PB"},
+	{"I2S RX6 MUX", "AIF1_PB", "AIF1 PB"},
+	{"I2S RX7 MUX", "AIF1_PB", "AIF1 PB"},
+
+	{"I2S RX2 MUX", "AIF2_PB", "AIF2 PB"},
+	{"I2S RX3 MUX", "AIF2_PB", "AIF2 PB"},
+
+	{"I2S RX4 MUX", "AIF3_PB", "AIF3 PB"},
+	{"I2S RX5 MUX", "AIF3_PB", "AIF3 PB"},
+
+	{"I2S RX0", NULL, "I2S RX0 MUX"},
+	{"I2S RX1", NULL, "I2S RX1 MUX"},
+	{"I2S RX2", NULL, "I2S RX2 MUX"},
+	{"I2S RX3", NULL, "I2S RX3 MUX"},
+	{"I2S RX4", NULL, "I2S RX4 MUX"},
+	{"I2S RX5", NULL, "I2S RX5 MUX"},
+	{"I2S RX6", NULL, "I2S RX6 MUX"},
+	{"I2S RX7", NULL, "I2S RX7 MUX"},
+
+	/* CDC Rx interface with I2S */
+	{"CDC_IF RX0 MUX", "I2S RX0", "I2S RX0"},
+	{"CDC_IF RX1 MUX", "I2S RX1", "I2S RX1"},
+	{"CDC_IF RX2 MUX", "I2S RX2", "I2S RX2"},
+	{"CDC_IF RX3 MUX", "I2S RX3", "I2S RX3"},
+	{"CDC_IF RX4 MUX", "I2S RX4", "I2S RX4"},
+	{"CDC_IF RX5 MUX", "I2S RX5", "I2S RX5"},
+	{"CDC_IF RX6 MUX", "I2S RX6", "I2S RX6"},
+	{"CDC_IF RX7 MUX", "I2S RX7", "I2S RX7"},
+
 };
 
 const struct snd_soc_dapm_route tavil_audio_map[] = {
 
+	/*
+	 * AIF CAP to Mixer routes are common
+	 * for both SLIM as well as I2S
+	 */
+
+	/* Virtual input widgets */
+	{"AIF1 CAP", NULL, "AIF1_CAP Mixer"},
+	{"AIF2 CAP", NULL, "AIF2_CAP Mixer"},
+	{"AIF3 CAP", NULL, "AIF3_CAP Mixer"},
+
 	/* WDMA3 */
 	{"WDMA3 PORT0 MUX", "DEC0", "ADC MUX0"},
 	{"WDMA3 PORT0 MUX", "RX_MIX_TX0", "RX MIX TX0 MUX"},
@@ -195,26 +296,6 @@ const struct snd_soc_dapm_route tavil_audio_map[] = {
 	{"MAD_CPE_OUT1", NULL, "MAD_CPE1"},
 	{"MAD_CPE_OUT2", NULL, "MAD_CPE2"},
 
-	/* VI Feedback */
-	{"AIF4_VI Mixer", "SPKR_VI_1", "VIINPUT"},
-	{"AIF4_VI Mixer", "SPKR_VI_2", "VIINPUT"},
-	{"AIF4 VI", NULL, "AIF4_VI Mixer"},
-
-	/* CDC Tx interface with SLIMBUS */
-	{"SLIM TX0", NULL, "CDC_IF TX0 MUX"},
-	{"SLIM TX1", NULL, "CDC_IF TX1 MUX"},
-	{"SLIM TX2", NULL, "CDC_IF TX2 MUX"},
-	{"SLIM TX3", NULL, "CDC_IF TX3 MUX"},
-	{"SLIM TX4", NULL, "CDC_IF TX4 MUX"},
-	{"SLIM TX5", NULL, "CDC_IF TX5 MUX"},
-	{"SLIM TX6", NULL, "CDC_IF TX6 MUX"},
-	{"SLIM TX7", NULL, "CDC_IF TX7 MUX"},
-	{"SLIM TX8", NULL, "CDC_IF TX8 MUX"},
-	{"SLIM TX9", NULL, "CDC_IF TX9 MUX"},
-	{"SLIM TX10", NULL, "CDC_IF TX10 MUX"},
-	{"SLIM TX11", NULL, "CDC_IF TX11 MUX"},
-	{"SLIM TX13", NULL, "CDC_IF TX13 MUX"},
-
 	{"CDC_IF TX0 MUX", "DEC0", "ADC MUX0"},
 	{"CDC_IF TX0 MUX", "RX_MIX_TX0", "RX MIX TX0 MUX"},
 	{"CDC_IF TX0 MUX", "DEC0_192", "ADC US MUX0"},
@@ -568,16 +649,6 @@ const struct snd_soc_dapm_route tavil_audio_map[] = {
 	{"ADC3", NULL, "AMIC3"},
 	{"ADC4", NULL, "AMIC4_5 SEL"},
 
-	/* CDC Rx interface with SLIMBUS */
-	{"CDC_IF RX0 MUX", "SLIM RX0", "SLIM RX0"},
-	{"CDC_IF RX1 MUX", "SLIM RX1", "SLIM RX1"},
-	{"CDC_IF RX2 MUX", "SLIM RX2", "SLIM RX2"},
-	{"CDC_IF RX3 MUX", "SLIM RX3", "SLIM RX3"},
-	{"CDC_IF RX4 MUX", "SLIM RX4", "SLIM RX4"},
-	{"CDC_IF RX5 MUX", "SLIM RX5", "SLIM RX5"},
-	{"CDC_IF RX6 MUX", "SLIM RX6", "SLIM RX6"},
-	{"CDC_IF RX7 MUX", "SLIM RX7", "SLIM RX7"},
-
 	{"RX INT0_1 MIX1 INP0", "RX0", "CDC_IF RX0 MUX"},
 	{"RX INT0_1 MIX1 INP0", "RX1", "CDC_IF RX1 MUX"},
 	{"RX INT0_1 MIX1 INP0", "RX2", "CDC_IF RX2 MUX"},

File diff suppressed because it is too large
+ 788 - 63
asoc/codecs/wcd934x/wcd934x.c


Some files were not shown because too many files changed in this diff