diff options
-rw-r--r-- | sound/soc/omap/omap-abe-twl6040.c | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/sound/soc/omap/omap-abe-twl6040.c b/sound/soc/omap/omap-abe-twl6040.c index f2b5fec8f680..5b781f904cd7 100644 --- a/sound/soc/omap/omap-abe-twl6040.c +++ b/sound/soc/omap/omap-abe-twl6040.c | |||
@@ -212,7 +212,7 @@ static int omap_abe_dmic_init(struct snd_soc_pcm_runtime *rtd) | |||
212 | } | 212 | } |
213 | 213 | ||
214 | /* Digital audio interface glue - connects codec <--> CPU */ | 214 | /* Digital audio interface glue - connects codec <--> CPU */ |
215 | static struct snd_soc_dai_link sdp4430_dai[] = { | 215 | static struct snd_soc_dai_link twl6040_dmic_dai[] = { |
216 | { | 216 | { |
217 | .name = "TWL6040", | 217 | .name = "TWL6040", |
218 | .stream_name = "TWL6040", | 218 | .stream_name = "TWL6040", |
@@ -235,11 +235,22 @@ static struct snd_soc_dai_link sdp4430_dai[] = { | |||
235 | }, | 235 | }, |
236 | }; | 236 | }; |
237 | 237 | ||
238 | static struct snd_soc_dai_link twl6040_only_dai[] = { | ||
239 | { | ||
240 | .name = "TWL6040", | ||
241 | .stream_name = "TWL6040", | ||
242 | .cpu_dai_name = "omap-mcpdm", | ||
243 | .codec_dai_name = "twl6040-legacy", | ||
244 | .platform_name = "omap-pcm-audio", | ||
245 | .codec_name = "twl6040-codec", | ||
246 | .init = omap_abe_twl6040_init, | ||
247 | .ops = &omap_abe_ops, | ||
248 | }, | ||
249 | }; | ||
250 | |||
238 | /* Audio machine driver */ | 251 | /* Audio machine driver */ |
239 | static struct snd_soc_card omap_abe_card = { | 252 | static struct snd_soc_card omap_abe_card = { |
240 | .owner = THIS_MODULE, | 253 | .owner = THIS_MODULE, |
241 | .dai_link = sdp4430_dai, | ||
242 | .num_links = ARRAY_SIZE(sdp4430_dai), | ||
243 | 254 | ||
244 | .dapm_widgets = twl6040_dapm_widgets, | 255 | .dapm_widgets = twl6040_dapm_widgets, |
245 | .num_dapm_widgets = ARRAY_SIZE(twl6040_dapm_widgets), | 256 | .num_dapm_widgets = ARRAY_SIZE(twl6040_dapm_widgets), |
@@ -267,6 +278,14 @@ static __devinit int omap_abe_probe(struct platform_device *pdev) | |||
267 | return -ENODEV; | 278 | return -ENODEV; |
268 | } | 279 | } |
269 | 280 | ||
281 | if (pdata->has_dmic) { | ||
282 | card->dai_link = twl6040_dmic_dai; | ||
283 | card->num_links = ARRAY_SIZE(twl6040_dmic_dai); | ||
284 | } else { | ||
285 | card->dai_link = twl6040_only_dai; | ||
286 | card->num_links = ARRAY_SIZE(twl6040_only_dai); | ||
287 | } | ||
288 | |||
270 | ret = snd_soc_register_card(card); | 289 | ret = snd_soc_register_card(card); |
271 | if (ret) | 290 | if (ret) |
272 | dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n", | 291 | dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n", |