Skip to content

Commit

Permalink
ASoC: omap-abe-twl6040: DAI link selection based on platform data
Browse files Browse the repository at this point in the history
We can have machines without DMIC connected. In this case there is
no need to create amother (unusable) capture PCM on the card.
The existence of the DMIC connection can be checked via
pdata->has_dmic.
Select the correct dai_link structure for the card based on
pdata->has_dmic.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
  • Loading branch information
Peter Ujfalusi committed Jan 26, 2012
1 parent b320883 commit 8d946dd
Showing 1 changed file with 22 additions and 3 deletions.
25 changes: 22 additions & 3 deletions sound/soc/omap/omap-abe-twl6040.c
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ static int omap_abe_dmic_init(struct snd_soc_pcm_runtime *rtd)
}

/* Digital audio interface glue - connects codec <--> CPU */
static struct snd_soc_dai_link sdp4430_dai[] = {
static struct snd_soc_dai_link twl6040_dmic_dai[] = {
{
.name = "TWL6040",
.stream_name = "TWL6040",
Expand All @@ -235,11 +235,22 @@ static struct snd_soc_dai_link sdp4430_dai[] = {
},
};

static struct snd_soc_dai_link twl6040_only_dai[] = {
{
.name = "TWL6040",
.stream_name = "TWL6040",
.cpu_dai_name = "omap-mcpdm",
.codec_dai_name = "twl6040-legacy",
.platform_name = "omap-pcm-audio",
.codec_name = "twl6040-codec",
.init = omap_abe_twl6040_init,
.ops = &omap_abe_ops,
},
};

/* Audio machine driver */
static struct snd_soc_card omap_abe_card = {
.owner = THIS_MODULE,
.dai_link = sdp4430_dai,
.num_links = ARRAY_SIZE(sdp4430_dai),

.dapm_widgets = twl6040_dapm_widgets,
.num_dapm_widgets = ARRAY_SIZE(twl6040_dapm_widgets),
Expand Down Expand Up @@ -267,6 +278,14 @@ static __devinit int omap_abe_probe(struct platform_device *pdev)
return -ENODEV;
}

if (pdata->has_dmic) {
card->dai_link = twl6040_dmic_dai;
card->num_links = ARRAY_SIZE(twl6040_dmic_dai);
} else {
card->dai_link = twl6040_only_dai;
card->num_links = ARRAY_SIZE(twl6040_only_dai);
}

ret = snd_soc_register_card(card);
if (ret)
dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n",
Expand Down

0 comments on commit 8d946dd

Please sign in to comment.