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

Commit 2363f949 authored by Gopikrishnaiah Anandan's avatar Gopikrishnaiah Anandan Committed by Stephen Boyd
Browse files

ASoC: Route AIF and CPU DAI widgets



Kernel 3.10 Asoc framework creates a widget for
each dai.These dai's are routed to the AIF widgets
during the probe to form a complete capture/playback
path.

Change-Id: I2c9d2ded87c69694f05eade2db42c9fe9a452b49
Signed-off-by: default avatarGopikrishnaiah Anandan <agopik@codeaurora.org>
parent 1471d51a
Loading
Loading
Loading
Loading
+91 −31
Original line number Diff line number Diff line
@@ -40,7 +40,37 @@ static int multimedia_startup(struct snd_pcm_substream *substream,
	snd_pcm_hw_constraint_list(substream->runtime, 0,
		SNDRV_PCM_HW_PARAM_RATE,
		&constraints_sample_rates);
	return 0;
}

static int fe_dai_probe(struct snd_soc_dai *dai)
{
	struct snd_soc_dapm_route intercon;
	if (!dai || !dai->driver) {
		pr_err("%s invalid params\n", __func__);
		return -EINVAL;
	}
	memset(&intercon, 0 , sizeof(intercon));
	if (dai->driver->playback.stream_name &&
		dai->driver->playback.aif_name) {
		dev_dbg(dai->dev, "%s add route for widget %s",
			   __func__, dai->driver->playback.stream_name);
		intercon.source = dai->driver->playback.stream_name;
		intercon.sink = dai->driver->playback.aif_name;
		dev_dbg(dai->dev, "%s src %s sink %s\n",
			   __func__, intercon.source, intercon.sink);
		snd_soc_dapm_add_routes(&dai->dapm, &intercon, 1);
	}
	if (dai->driver->capture.stream_name &&
	   dai->driver->capture.aif_name) {
		dev_dbg(dai->dev, "%s add route for widget %s",
			   __func__, dai->driver->capture.stream_name);
		intercon.sink = dai->driver->capture.stream_name;
		intercon.source = dai->driver->capture.aif_name;
		dev_dbg(dai->dev, "%s src %s sink %s\n",
			   __func__, intercon.source, intercon.sink);
		snd_soc_dapm_add_routes(&dai->dapm, &intercon, 1);
	}
	return 0;
}

@@ -55,7 +85,7 @@ static const struct snd_soc_component_driver msm_fe_dai_component = {
static struct snd_soc_dai_driver msm_fe_dais[] = {
	{
		.playback = {
			.stream_name = "Multimedia1 Playback",
			.stream_name = "MultiMedia1 Playback",
			.aif_name = "MM_DL1",
			.rates = (SNDRV_PCM_RATE_8000_192000|
					SNDRV_PCM_RATE_KNOT),
@@ -67,7 +97,7 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
			.rate_max =	192000,
		},
		.capture = {
			.stream_name = "Multimedia1 Capture",
			.stream_name = "MultiMedia1 Capture",
			.aif_name = "MM_UL1",
			.rates = (SNDRV_PCM_RATE_8000_48000|
					SNDRV_PCM_RATE_KNOT),
@@ -80,10 +110,11 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
		},
		.ops = &msm_fe_Multimedia_dai_ops,
		.name = "MultiMedia1",
		.probe = fe_dai_probe,
	},
	{
		.playback = {
			.stream_name = "Multimedia2 Playback",
			.stream_name = "MultiMedia2 Playback",
			.aif_name = "MM_DL2",
			.rates = (SNDRV_PCM_RATE_8000_192000|
					SNDRV_PCM_RATE_KNOT),
@@ -95,7 +126,7 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
			.rate_max =	192000,
		},
		.capture = {
			.stream_name = "Multimedia2 Capture",
			.stream_name = "MultiMedia2 Capture",
			.aif_name = "MM_UL2",
			.rates = (SNDRV_PCM_RATE_8000_48000|
					SNDRV_PCM_RATE_KNOT),
@@ -107,10 +138,11 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
		},
		.ops = &msm_fe_Multimedia_dai_ops,
		.name = "MultiMedia2",
		.probe = fe_dai_probe,
	},
	{
		.playback = {
			.stream_name = "Voice Playback",
			.stream_name = "CS-VOICE Playback",
			.aif_name = "CS-VOICE_DL1",
			.rates = SNDRV_PCM_RATE_8000_48000,
			.formats = SNDRV_PCM_FMTBIT_S16_LE,
@@ -120,7 +152,7 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
			.rate_max =     48000,
		},
		.capture = {
			.stream_name = "Voice Capture",
			.stream_name = "CS-VOICE Capture",
			.aif_name = "CS-VOICE_UL1",
			.rates = SNDRV_PCM_RATE_8000_48000,
			.formats = SNDRV_PCM_FMTBIT_S16_LE,
@@ -131,6 +163,7 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
		},
		.ops = &msm_fe_dai_ops,
		.name = "CS-VOICE",
		.probe = fe_dai_probe,
	},
	{
		.playback = {
@@ -157,6 +190,7 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
		},
		.ops = &msm_fe_dai_ops,
		.name = "VoIP",
		.probe = fe_dai_probe,
	},
	{
		.playback = {
@@ -173,6 +207,7 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
		},
		.ops = &msm_fe_Multimedia_dai_ops,
		.name = "MultiMedia3",
		.probe = fe_dai_probe,
	},
	{
		.playback = {
@@ -200,6 +235,7 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
		},
		.ops = &msm_fe_Multimedia_dai_ops,
		.name = "MultiMedia4",
		.probe = fe_dai_probe,
	},
	{
		.playback = {
@@ -227,6 +263,7 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
		},
		.ops = &msm_fe_Multimedia_dai_ops,
		.name = "MultiMedia5",
		.probe = fe_dai_probe,
	},
	{
		.playback = {
@@ -254,6 +291,7 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
		},
		.ops = &msm_fe_Multimedia_dai_ops,
		.name = "MultiMedia6",
		.probe = fe_dai_probe,
	},
	{
		.playback = {
@@ -270,6 +308,7 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
		},
		.ops = &msm_fe_Multimedia_dai_ops,
		.name = "MultiMedia7",
		.probe = fe_dai_probe,
	},
	{
		.playback = {
@@ -286,11 +325,12 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
		},
		.ops = &msm_fe_Multimedia_dai_ops,
		.name = "MultiMedia8",
		.probe = fe_dai_probe,
	},
	/* FE DAIs created for hostless operation purpose */
	{
		.playback = {
			.stream_name = "SLIMBUS0 Hostless Playback",
			.stream_name = "SLIMBUS0_HOSTLESS Playback",
			.aif_name = "SLIM0_DL_HL",
			.rates = SNDRV_PCM_RATE_8000_192000,
			.formats = (SNDRV_PCM_FMTBIT_S16_LE |
@@ -301,7 +341,7 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
			.rate_max =     192000,
		},
		.capture = {
			.stream_name = "SLIMBUS0 Hostless Capture",
			.stream_name = "SLIMBUS0_HOSTLESS Capture",
			.aif_name = "SLIM0_UL_HL",
			.rates = SNDRV_PCM_RATE_8000_96000,
			.formats = SNDRV_PCM_FMTBIT_S16_LE,
@@ -312,10 +352,11 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
		},
		.ops = &msm_fe_dai_ops,
		.name = "SLIMBUS0_HOSTLESS",
		.probe = fe_dai_probe,
	},
	{
		.playback = {
			.stream_name = "SLIMBUS1 Hostless Playback",
			.stream_name = "SLIMBUS1_HOSTLESS Playback",
			.aif_name = "SLIM1_DL_HL",
			.rates = SNDRV_PCM_RATE_8000_192000,
			.formats = (SNDRV_PCM_FMTBIT_S16_LE |
@@ -326,7 +367,7 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
			.rate_max =     192000,
		},
		.capture = {
			.stream_name = "SLIMBUS1 Hostless Capture",
			.stream_name = "SLIMBUS1_HOSTLESS Capture",
			.aif_name = "SLIM1_UL_HL",
			.rates = SNDRV_PCM_RATE_8000_48000,
			.formats = SNDRV_PCM_FMTBIT_S16_LE,
@@ -337,10 +378,11 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
		},
		.ops = &msm_fe_dai_ops,
		.name = "SLIMBUS1_HOSTLESS",
		.probe = fe_dai_probe,
	},
	{
		.playback = {
			.stream_name = "SLIMBUS3 Hostless Playback",
			.stream_name = "SLIMBUS3_HOSTLESS Playback",
			.aif_name = "SLIM3_DL_HL",
			.rates = SNDRV_PCM_RATE_8000_192000,
			.formats = (SNDRV_PCM_FMTBIT_S16_LE |
@@ -351,7 +393,7 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
			.rate_max =     192000,
		},
		.capture = {
			.stream_name = "SLIMBUS3 Hostless Capture",
			.stream_name = "SLIMBUS3_HOSTLESS Capture",
			.aif_name = "SLIM3_UL_HL",
			.rates = SNDRV_PCM_RATE_8000_48000,
			.formats = SNDRV_PCM_FMTBIT_S16_LE,
@@ -362,10 +404,11 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
		},
		.ops = &msm_fe_dai_ops,
		.name = "SLIMBUS3_HOSTLESS",
		.probe = fe_dai_probe,
	},
	{
		.playback = {
			.stream_name = "SLIMBUS4 Hostless Playback",
			.stream_name = "SLIMBUS4_HOSTLESS Playback",
			.aif_name = "SLIM4_DL_HL",
			.rates = SNDRV_PCM_RATE_8000_192000,
			.formats = (SNDRV_PCM_FMTBIT_S16_LE |
@@ -376,7 +419,7 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
			.rate_max =     192000,
		},
		.capture = {
			.stream_name = "SLIMBUS4 Hostless Capture",
			.stream_name = "SLIMBUS4_HOSTLESS Capture",
			.aif_name = "SLIM4_UL_HL",
			.rates = SNDRV_PCM_RATE_8000_48000,
			.formats = SNDRV_PCM_FMTBIT_S16_LE,
@@ -387,10 +430,11 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
		},
		.ops = &msm_fe_dai_ops,
		.name = "SLIMBUS4_HOSTLESS",
		.probe = fe_dai_probe,
	},
	{
		.playback = {
			.stream_name = "INT_FM Hostless Playback",
			.stream_name = "INT_FM_HOSTLESS Playback",
			.aif_name = "INTFM_DL_HL",
			.rates = SNDRV_PCM_RATE_8000_48000,
			.formats = SNDRV_PCM_FMTBIT_S16_LE,
@@ -400,7 +444,7 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
			.rate_max =     48000,
		},
		.capture = {
			.stream_name = "INT_FM Hostless Capture",
			.stream_name = "INT_FM_HOSTLESS Capture",
			.aif_name = "INTFM_UL_HL",
			.rates = SNDRV_PCM_RATE_8000_48000,
			.formats = SNDRV_PCM_FMTBIT_S16_LE,
@@ -411,10 +455,11 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
		},
		.ops = &msm_fe_dai_ops,
		.name = "INT_FM_HOSTLESS",
		.probe = fe_dai_probe,
	},
	{
		.playback = {
			.stream_name = "AFE-PROXY Playback",
			.stream_name = "AFE Playback",
			.aif_name = "PCM_RX",
			.rates = (SNDRV_PCM_RATE_8000 |
				SNDRV_PCM_RATE_16000 |
@@ -426,7 +471,7 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
			.rate_max =     48000,
		},
		.capture = {
			.stream_name = "AFE-PROXY Capture",
			.stream_name = "AFE Capture",
			.aif_name = "PCM_TX",
			.rates = (SNDRV_PCM_RATE_8000 |
				SNDRV_PCM_RATE_16000 |
@@ -439,10 +484,11 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
		},
		.ops = &msm_fe_dai_ops,
		.name = "AFE-PROXY",
		.probe = fe_dai_probe,
	},
	{
		.playback = {
			.stream_name = "HDMI_Rx Hostless Playback",
			.stream_name = "HDMI_HOSTLESS Playback",
			.aif_name = "HDMI_DL_HL",
			.rates = SNDRV_PCM_RATE_8000_48000,
			.formats = SNDRV_PCM_FMTBIT_S16_LE,
@@ -452,11 +498,12 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
			.rate_max = 48000,
		},
		.ops = &msm_fe_dai_ops,
		.name = "HDMI_HOSTLESS"
		.name = "HDMI_HOSTLESS",
		.probe = fe_dai_probe,
	},
	{
		.playback = {
			.stream_name = "AUXPCM Hostless Playback",
			.stream_name = "AUXPCM_HOSTLESS Playback",
			.aif_name = "AUXPCM_DL_HL",
			.rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000,
			.formats = SNDRV_PCM_FMTBIT_S16_LE,
@@ -466,7 +513,7 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
			.rate_max =     16000,
		},
		.capture = {
			.stream_name = "AUXPCM Hostless Capture",
			.stream_name = "AUXPCM_HOSTLESS Capture",
			.aif_name = "AUXPCM_UL_HL",
			.rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000,
			.formats = SNDRV_PCM_FMTBIT_S16_LE,
@@ -477,10 +524,11 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
		},
		.ops = &msm_fe_dai_ops,
		.name = "AUXPCM_HOSTLESS",
		.probe = fe_dai_probe,
	},
	{
		.playback = {
			.stream_name = "Voice Stub Playback",
			.stream_name = "VOICE_STUB Playback",
			.aif_name = "VOICE_STUB_DL",
			.rates = SNDRV_PCM_RATE_8000_48000,
			.formats = SNDRV_PCM_FMTBIT_S16_LE,
@@ -490,7 +538,7 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
			.rate_max = 48000,
		},
		.capture = {
			.stream_name = "Voice Stub Capture",
			.stream_name = "VOICE_STUB Capture",
			.aif_name = "VOICE_STUB_UL",
			.rates = SNDRV_PCM_RATE_8000_48000,
			.formats = SNDRV_PCM_FMTBIT_S16_LE,
@@ -501,6 +549,7 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
		},
		.ops = &msm_fe_dai_ops,
		.name = "VOICE_STUB",
		.probe = fe_dai_probe,
	},
	{
		.playback = {
@@ -525,6 +574,7 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
		},
		.ops = &msm_fe_dai_ops,
		.name = "VoLTE",
		.probe = fe_dai_probe,
	},
	{
		.playback = {
@@ -538,7 +588,7 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
			.rate_max = 48000,
		},
		.capture = {
			.stream_name = "MI2S_TX Hostless Capture",
			.stream_name = "MI2S_TX_HOSTLESS Capture",
			.aif_name = "MI2S_UL_HL",
			.rates = SNDRV_PCM_RATE_8000_48000,
			.formats = SNDRV_PCM_FMTBIT_S16_LE,
@@ -549,10 +599,11 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
		},
		.ops = &msm_fe_dai_ops,
		.name = "MI2S_TX_HOSTLESS",
		.probe = fe_dai_probe,
	},
	{
		.playback = {
			.stream_name = "SEC_I2S_RX Hostless Playback",
			.stream_name = "SEC_I2S_RX_HOSTLESS Playback",
			.aif_name = "SEC_I2S_DL_HL",
			.rates = SNDRV_PCM_RATE_8000_48000,
			.formats = SNDRV_PCM_FMTBIT_S16_LE,
@@ -563,6 +614,7 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
		},
		.ops = &msm_fe_dai_ops,
		.name = "SEC_I2S_RX_HOSTLESS",
		.probe = fe_dai_probe,
	},
	{
		.capture = {
@@ -577,6 +629,7 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
		},
		.ops = &msm_fe_dai_ops,
		.name = "PRI_MI2S_TX_HOSTLESS",
		.probe = fe_dai_probe,
	},
	{
		.playback = {
@@ -591,6 +644,7 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
		},
		.ops = &msm_fe_dai_ops,
		.name = "SEC_MI2S_RX_HOSTLESS",
		.probe = fe_dai_probe,
	},
	{
		.playback = {
@@ -615,6 +669,7 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
		},
		.ops = &msm_fe_dai_ops,
		.name = "Voice2",
		.probe = fe_dai_probe,
	},
	{
		.playback = {
@@ -641,10 +696,11 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
		},
		.ops = &msm_fe_Multimedia_dai_ops,
		.name = "Pseudo",
		.probe = fe_dai_probe,
	},
	{
		.playback = {
			.stream_name = "DTMF_RX Hostless Playback",
			.stream_name = "DTMF_RX_HOSTLESS Playback",
			.aif_name = "DTMF_DL_HL",
			.rates = SNDRV_PCM_RATE_8000_48000,
			.formats = SNDRV_PCM_FMTBIT_S16_LE,
@@ -655,6 +711,7 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
		},
		.ops = &msm_fe_dai_ops,
		.name = "DTMF_RX_HOSTLESS",
		.probe = fe_dai_probe,
	},
	{
		.capture = {
@@ -669,10 +726,11 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
		},
		.ops = &msm_fe_dai_ops,
		.name = "LSM",
		.probe = fe_dai_probe,
	},
	{
		.playback = {
			.stream_name = "VoLTE Stub Playback",
			.stream_name = "VOLTE_STUB Playback",
			.aif_name = "VOLTE_STUB_DL",
			.rates = SNDRV_PCM_RATE_8000_48000,
			.formats = SNDRV_PCM_FMTBIT_S16_LE,
@@ -682,7 +740,7 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
			.rate_max = 48000,
		},
		.capture = {
			.stream_name = "VoLTE Stub Capture",
			.stream_name = "VOLTE_STUB Capture",
			.aif_name = "VOLTE_STUB_UL",
			.rates = SNDRV_PCM_RATE_8000_48000,
			.formats = SNDRV_PCM_FMTBIT_S16_LE,
@@ -693,10 +751,11 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
		},
		.ops = &msm_fe_dai_ops,
		.name = "VOLTE_STUB",
		.probe = fe_dai_probe,
	},
	{
		.playback = {
			.stream_name = "Voice2 Stub Playback",
			.stream_name = "VOICE2_STUB Playback",
			.aif_name = "VOICE2_STUB_DL",
			.rates = SNDRV_PCM_RATE_8000_48000,
			.formats = SNDRV_PCM_FMTBIT_S16_LE,
@@ -706,7 +765,7 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
			.rate_max = 48000,
		},
		.capture = {
			.stream_name = "Voice2 Stub Capture",
			.stream_name = "VOICE2_STUB Capture",
			.aif_name = "VOICE2_STUB_UL",
			.rates = SNDRV_PCM_RATE_8000_48000,
			.formats = SNDRV_PCM_FMTBIT_S16_LE,
@@ -717,6 +776,7 @@ static struct snd_soc_dai_driver msm_fe_dais[] = {
		},
		.ops = &msm_fe_dai_ops,
		.name = "VOICE2_STUB",
		.probe = fe_dai_probe,
	},
	{
		.playback = {
+427 −111

File changed.

Preview size limit exceeded, changes collapsed.