aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/soc-core.c
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2011-03-07 11:38:44 -0500
committerMark Brown <broonie@opensource.wolfsonmicro.com>2011-03-08 13:55:51 -0500
commit89b95ac09e408b5d88a8b3792dc76c863e45fb31 (patch)
tree32165ddb2eebf9b746a1ab239b4a4795c4fd0414 /sound/soc/soc-core.c
parentf9c540456ab662a3b5d79c1fa93c51305a97fdf3 (diff)
ASoC: Add DAPM widget and path data to CODEC driver structure
Allow a slight simplification of CODEC drivers by allowing DAPM routes and widgets to be provided in a table. They will be instantiated at the end of CODEC probe. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@ti.com>
Diffstat (limited to 'sound/soc/soc-core.c')
-rw-r--r--sound/soc/soc-core.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index be34f6b95386..c12f2bd23a4e 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -1464,6 +1464,7 @@ static int soc_probe_codec(struct snd_soc_card *card,
1464 struct snd_soc_codec *codec) 1464 struct snd_soc_codec *codec)
1465{ 1465{
1466 int ret = 0; 1466 int ret = 0;
1467 const struct snd_soc_codec_driver *driver = codec->driver;
1467 1468
1468 codec->card = card; 1469 codec->card = card;
1469 codec->dapm.card = card; 1470 codec->dapm.card = card;
@@ -1472,8 +1473,8 @@ static int soc_probe_codec(struct snd_soc_card *card,
1472 if (!try_module_get(codec->dev->driver->owner)) 1473 if (!try_module_get(codec->dev->driver->owner))
1473 return -ENODEV; 1474 return -ENODEV;
1474 1475
1475 if (codec->driver->probe) { 1476 if (driver->probe) {
1476 ret = codec->driver->probe(codec); 1477 ret = driver->probe(codec);
1477 if (ret < 0) { 1478 if (ret < 0) {
1478 dev_err(codec->dev, 1479 dev_err(codec->dev,
1479 "asoc: failed to probe CODEC %s: %d\n", 1480 "asoc: failed to probe CODEC %s: %d\n",
@@ -1482,6 +1483,13 @@ static int soc_probe_codec(struct snd_soc_card *card,
1482 } 1483 }
1483 } 1484 }
1484 1485
1486 if (driver->dapm_widgets)
1487 snd_soc_dapm_new_controls(&codec->dapm, driver->dapm_widgets,
1488 driver->num_dapm_widgets);
1489 if (driver->dapm_routes)
1490 snd_soc_dapm_add_routes(&codec->dapm, driver->dapm_routes,
1491 driver->num_dapm_routes);
1492
1485 soc_init_codec_debugfs(codec); 1493 soc_init_codec_debugfs(codec);
1486 1494
1487 /* mark codec as probed and add to card codec list */ 1495 /* mark codec as probed and add to card codec list */