summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKuirong Wang <kuirongw@codeaurora.org>2016-01-04 13:23:26 -0800
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 21:20:14 -0700
commit34c137e188d3957d8751bba1308aae111dbcd775 (patch)
tree4017d7ae977577a1ea383ece42fa4ce37003dce4
parentaef5c4d9afd59666274d8b5e8705eba7f9c0c4f8 (diff)
ASoC: wcd9335: Add codec rx4 dai
Add codec rx4 dai to support independent backend for different devices. CRs-fixed: 940415 Change-Id: I48b24d81e2047d4d4c299ca60cdbd299e172393e Signed-off-by: Kuirong Wang <kuirongw@codeaurora.org>
-rwxr-xr-xsound/soc/codecs/wcd9335.c42
1 files changed, 41 insertions, 1 deletions
diff --git a/sound/soc/codecs/wcd9335.c b/sound/soc/codecs/wcd9335.c
index def2b807cd28..46afca3984ed 100755
--- a/sound/soc/codecs/wcd9335.c
+++ b/sound/soc/codecs/wcd9335.c
@@ -348,6 +348,7 @@ enum {
AIF2_CAP,
AIF3_PB,
AIF3_CAP,
+ AIF4_PB,
AIF_MIX1_PB,
AIF4_MAD_TX,
AIF4_VIFEED,
@@ -465,6 +466,7 @@ static const u32 vport_slim_check_table[NUM_CODEC_DAIS] = {
BIT(AIF1_CAP) | BIT(AIF3_CAP) | BIT(AIF4_MAD_TX), /* AIF2_CAP */
0, /* AIF3_PB */
BIT(AIF1_CAP) | BIT(AIF2_CAP) | BIT(AIF4_MAD_TX), /* AIF3_CAP */
+ 0, /* AIF4_PB */
0, /* AIF_MIX1_PB */
BIT(AIF1_CAP) | BIT(AIF2_CAP) | BIT(AIF3_CAP), /* AIF4_MAD_TX */
};
@@ -2278,7 +2280,7 @@ static int slim_rx_mux_get(struct snd_kcontrol *kcontrol,
}
static const char *const slim_rx_mux_text[] = {
- "ZERO", "AIF1_PB", "AIF2_PB", "AIF3_PB", "AIF_MIX1_PB"
+ "ZERO", "AIF1_PB", "AIF2_PB", "AIF3_PB", "AIF4_PB", "AIF_MIX1_PB"
};
static int slim_rx_mux_put(struct snd_kcontrol *kcontrol,
@@ -2350,6 +2352,17 @@ static int slim_rx_mux_put(struct snd_kcontrol *kcontrol,
case 4:
if (wcd9xxx_rx_vport_validation(port_id +
TASHA_RX_PORT_START_NUMBER,
+ &tasha_p->dai[AIF4_PB].wcd9xxx_ch_list)) {
+ dev_dbg(codec->dev, "%s: RX%u is used by current requesting AIF_PB itself\n",
+ __func__, port_id);
+ goto rtn;
+ }
+ list_add_tail(&core->rx_chs[port_id].list,
+ &tasha_p->dai[AIF4_PB].wcd9xxx_ch_list);
+ break;
+ case 5:
+ if (wcd9xxx_rx_vport_validation(port_id +
+ TASHA_RX_PORT_START_NUMBER,
&tasha_p->dai[AIF_MIX1_PB].wcd9xxx_ch_list)) {
dev_dbg(codec->dev, "%s: RX%u is used by current requesting AIF_PB itself\n",
__func__, port_id);
@@ -6366,6 +6379,15 @@ static const struct snd_soc_dapm_route audio_map[] = {
{"SLIM RX5 MUX", "AIF3_PB", "AIF3 PB"},
{"SLIM RX6 MUX", "AIF3_PB", "AIF3 PB"},
{"SLIM RX7 MUX", "AIF3_PB", "AIF3 PB"},
+ /* SLIM_MUX("AIF4_PB", "AIF4 PB"),*/
+ {"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_MUX("AIF_MIX1_PB", "AIF MIX1 PB"),*/
{"SLIM RX0 MUX", "AIF_MIX1_PB", "AIF MIX1 PB"},
@@ -9375,6 +9397,9 @@ static const struct snd_soc_dapm_widget tasha_dapm_widgets[] = {
SND_SOC_DAPM_AIF_IN_E("AIF3 PB", "AIF3 Playback", 0, SND_SOC_NOPM,
AIF3_PB, 0, tasha_codec_enable_slimrx,
SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD),
+ SND_SOC_DAPM_AIF_IN_E("AIF4 PB", "AIF4 Playback", 0, SND_SOC_NOPM,
+ AIF4_PB, 0, tasha_codec_enable_slimrx,
+ SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD),
SND_SOC_DAPM_AIF_IN_E("AIF MIX1 PB", "AIF Mix Playback", 0,
SND_SOC_NOPM, AIF_MIX1_PB, 0,
tasha_codec_enable_slimrx,
@@ -10115,6 +10140,7 @@ static int tasha_get_channel_map(struct snd_soc_dai *dai,
case AIF1_PB:
case AIF2_PB:
case AIF3_PB:
+ case AIF4_PB:
case AIF_MIX1_PB:
if (!rx_slot || !rx_num) {
pr_err("%s: Invalid rx_slot %p or rx_num %p\n",
@@ -10764,6 +10790,20 @@ static struct snd_soc_dai_driver tasha_dai[] = {
.ops = &tasha_dai_ops,
},
{
+ .name = "tasha_rx4",
+ .id = AIF4_PB,
+ .playback = {
+ .stream_name = "AIF4 Playback",
+ .rates = WCD9335_RATES_MASK | WCD9335_FRAC_RATES_MASK,
+ .formats = TASHA_FORMATS_S16_S24_LE,
+ .rate_min = 8000,
+ .rate_max = 192000,
+ .channels_min = 1,
+ .channels_max = 2,
+ },
+ .ops = &tasha_dai_ops,
+ },
+ {
.name = "tasha_mix_rx1",
.id = AIF_MIX1_PB,
.playback = {