ASoC: Allow card DAPM widgets and routes to be set up at registration
authorMark Brown <broonie@opensource.wolfsonmicro.com>
Wed, 2 Mar 2011 18:35:51 +0000 (18:35 +0000)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Thu, 3 Mar 2011 11:15:26 +0000 (11:15 +0000)
These will be added after all devices are registered and allow most DAI
init functions in machine drivers to be replaced by simple data.
Regular controls are not supported as the registration function still
works in terms of CODECs.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
include/sound/soc.h
sound/soc/soc-core.c

index 8064cd130356fdb40c73c4c8cb5209804e0501aa..11d59bd1388657c19f4ae1c27be14a9554a1cd20 100644 (file)
@@ -718,6 +718,14 @@ struct snd_soc_card {
        struct snd_soc_pcm_runtime *rtd_aux;
        int num_aux_rtd;
 
+       /*
+        * Card-specific routes and widgets.
+        */
+       struct snd_soc_dapm_widget *dapm_widgets;
+       int num_dapm_widgets;
+       struct snd_soc_dapm_route *dapm_routes;
+       int num_dapm_routes;
+
        struct work_struct deferred_resume_work;
 
        /* lists of probed devices belonging to this card */
index 24bfc3ff8e1740017de969736ff7de4e1396c526..6a2839c1844799f865f8fc2ff2ae540a3d503b52 100644 (file)
@@ -1872,6 +1872,13 @@ static void snd_soc_instantiate_card(struct snd_soc_card *card)
                }
        }
 
+       if (card->dapm_widgets)
+               snd_soc_dapm_new_controls(&card->dapm, card->dapm_widgets,
+                                         card->num_dapm_widgets);
+       if (card->dapm_routes)
+               snd_soc_dapm_add_routes(&card->dapm, card->dapm_routes,
+                                       card->num_dapm_routes);
+
        card->dapm.debugfs_dapm = debugfs_create_dir("dapm",
                                                     card->debugfs_card_root);
        if (!card->dapm.debugfs_dapm)