[alsa-devel] [PATCH] ASoC: fsl-asoc-card: Add snd_soc_of_parse_audio_routing()
This patch adds snd_soc_of_parse_audio_routing() to get dapm routes via Device Tree. Because snd_soc_of_parse_audio_routing() overrides dpam_routes, we use snd_soc_dapm_add_routes() to append the original build-in DPCM routes instead of linking them to dpam_routes directly.
Signed-off-by: Nicolin Chen nicoleotsuka@gmail.com --- sound/soc/fsl/fsl-asoc-card.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/sound/soc/fsl/fsl-asoc-card.c b/sound/soc/fsl/fsl-asoc-card.c index 3f6959c..bdc9671 100644 --- a/sound/soc/fsl/fsl-asoc-card.c +++ b/sound/soc/fsl/fsl-asoc-card.c @@ -388,6 +388,8 @@ static int fsl_asoc_card_late_probe(struct snd_soc_card *card) struct device *dev = card->dev; int ret;
+ snd_soc_dapm_add_routes(&card->dapm, audio_map, ARRAY_SIZE(audio_map)); + ret = snd_soc_dai_set_sysclk(codec_dai, codec_priv->mclk_id, codec_priv->mclk_freq, SND_SOC_CLOCK_IN); if (ret) { @@ -503,15 +505,19 @@ static int fsl_asoc_card_probe(struct platform_device *pdev) priv->card.dev = &pdev->dev; priv->card.name = priv->name; priv->card.dai_link = priv->dai_link; - priv->card.dapm_routes = audio_map; priv->card.late_probe = fsl_asoc_card_late_probe; - priv->card.num_dapm_routes = ARRAY_SIZE(audio_map); priv->card.dapm_widgets = fsl_asoc_card_dapm_widgets; priv->card.num_dapm_widgets = ARRAY_SIZE(fsl_asoc_card_dapm_widgets);
memcpy(priv->dai_link, fsl_asoc_card_dai, sizeof(struct snd_soc_dai_link) * ARRAY_SIZE(priv->dai_link));
+ ret = snd_soc_of_parse_audio_routing(&priv->card, "audio-routing"); + if (ret) { + dev_err(&pdev->dev, "failed to parse audio-routing: %d\n", ret); + goto asrc_fail; + } + /* Normal DAI Link */ priv->dai_link[0].cpu_of_node = cpu_np; priv->dai_link[0].codec_of_node = codec_np;
On Thu, Feb 12, 2015 at 01:30:02PM -0800, Nicolin Chen wrote:
This patch adds snd_soc_of_parse_audio_routing() to get dapm routes via Device Tree. Because snd_soc_of_parse_audio_routing() overrides dpam_routes, we use snd_soc_dapm_add_routes() to append the original build-in DPCM routes instead of linking them to dpam_routes directly.
It seems better to make the helper function play nicely with existing DAPM routes in the card rather than have to rearrange things like this. How about having it just record that it should parse the given property when the table in the card is being handleed rather than overwrite that?
On Sat, Feb 14, 2015 at 01:31:53PM +0900, Mark Brown wrote:
On Thu, Feb 12, 2015 at 01:30:02PM -0800, Nicolin Chen wrote:
This patch adds snd_soc_of_parse_audio_routing() to get dapm routes via Device Tree. Because snd_soc_of_parse_audio_routing() overrides dpam_routes, we use snd_soc_dapm_add_routes() to append the original build-in DPCM routes instead of linking them to dpam_routes directly.
It seems better to make the helper function play nicely with existing DAPM routes in the card rather than have to rearrange things like this.
Yes, that would be better.
How about having it just record that it should parse the given property when the table in the card is being handleed rather than overwrite that?
You mean adding another pair of dapm_routes with num_dapm_routes for Device Tree or something like that?
Thanks Nicolin
On Fri, Feb 13, 2015 at 09:02:46PM -0800, Nicolin Chen wrote:
On Sat, Feb 14, 2015 at 01:31:53PM +0900, Mark Brown wrote:
How about having it just record that it should parse the given property when the table in the card is being handleed rather than overwrite that?
You mean adding another pair of dapm_routes with num_dapm_routes for Device Tree or something like that?
That should work, I had been thinking of just recording where to parse from and deferring the parse entirely.
On Sat, Feb 14, 2015 at 02:32:12PM +0900, Mark Brown wrote:
On Fri, Feb 13, 2015 at 09:02:46PM -0800, Nicolin Chen wrote:
On Sat, Feb 14, 2015 at 01:31:53PM +0900, Mark Brown wrote:
How about having it just record that it should parse the given property when the table in the card is being handleed rather than overwrite that?
You mean adding another pair of dapm_routes with num_dapm_routes for Device Tree or something like that?
That should work, I had been thinking of just recording where to parse from and deferring the parse entirely.
Okay. I'll try both approaches and choose a comparatively neater one.
Thanks Nicolin
participants (2)
-
Mark Brown
-
Nicolin Chen