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 <kmani@codeaurora.org>
This commit is contained in:
Karthikeyan Mani 2017-09-12 12:23:32 -07:00 committed by Gerrit - the friendly Code Review server
parent da56c67bc4
commit 98d3d590bb
2 changed files with 966 additions and 107 deletions

View file

@ -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 Load diff