diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2011-03-07 11:38:44 -0500 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2011-03-08 13:55:51 -0500 |
commit | 89b95ac09e408b5d88a8b3792dc76c863e45fb31 (patch) | |
tree | 32165ddb2eebf9b746a1ab239b4a4795c4fd0414 /sound/soc/soc-core.c | |
parent | f9c540456ab662a3b5d79c1fa93c51305a97fdf3 (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.c | 12 |
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 */ |