[alsa-devel] [PATCH] ASoC: multi-comp: soc-core: Fix for machine given DAPM widgets

Move the DAPM initialization after the machine driver has finished it's init (dai_link driver). Since in machine init we can add DAPM widgets we need to take them into account as well.
Signed-off-by: Peter Ujfalusi peter.ujfalusi@nokia.com ---
Hello Liam, Mark!
With this patch the machine driver given DAPM routing will be functional with the multi-comp. This patch also removes the need to call the snd_soc_dapm_sync from machine driver's init call, since it will be done by the core.
Please squash this patch to the core changes.
Thanks, Peter
sound/soc/soc-core.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index a7c9a48..8afa271 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -1324,9 +1324,6 @@ static int soc_probe_dai_link(struct snd_soc_card *card, int num) return ret; } } - /* Make sure all DAPM widgets are instantiated */ - snd_soc_dapm_new_widgets(codec); - /* mark codec as probed and add to card codec list */ codec->probed = 1; list_add(&codec->card_list, &card->codec_dev_list); @@ -1375,6 +1372,10 @@ static int soc_probe_dai_link(struct snd_soc_card *card, int num) } }
+ /* Make sure all DAPM widgets are instantiated */ + snd_soc_dapm_new_widgets(codec); + snd_soc_dapm_sync(codec); + /* register the rtd device */ rtd->dev.init_name = rtd->dai_link->stream_name; rtd->dev.release = rtd_release;

On Thu, Aug 05, 2010 at 09:07:50AM +0300, Peter Ujfalusi wrote:
Move the DAPM initialization after the machine driver has finished it's init (dai_link driver). Since in machine init we can add DAPM widgets we need to take them into account as well.
Signed-off-by: Peter Ujfalusi peter.ujfalusi@nokia.com
Acked-by: Mark Brown broonie@opensource.wolfsonmicro.com
but...
@@ -1375,6 +1372,10 @@ static int soc_probe_dai_link(struct snd_soc_card *card, int num) } }
- /* Make sure all DAPM widgets are instantiated */
- snd_soc_dapm_new_widgets(codec);
- snd_soc_dapm_sync(codec);
- /* register the rtd device */ rtd->dev.init_name = rtd->dai_link->stream_name; rtd->dev.release = rtd_release;
...it'd be better to find a home for this that was per card rather than per link I guess, that way we only need to iterate through once during instantiation. A bit irrelevant though given that it's hardly a hot path.

On Thu, 2010-08-05 at 13:13 +0100, Mark Brown wrote:
On Thu, Aug 05, 2010 at 09:07:50AM +0300, Peter Ujfalusi wrote:
Move the DAPM initialization after the machine driver has finished it's init (dai_link driver). Since in machine init we can add DAPM widgets we need to take them into account as well.
Signed-off-by: Peter Ujfalusi peter.ujfalusi@nokia.com
Acked-by: Mark Brown broonie@opensource.wolfsonmicro.com
Applied.
but...
@@ -1375,6 +1372,10 @@ static int soc_probe_dai_link(struct snd_soc_card *card, int num) } }
- /* Make sure all DAPM widgets are instantiated */
- snd_soc_dapm_new_widgets(codec);
- snd_soc_dapm_sync(codec);
- /* register the rtd device */ rtd->dev.init_name = rtd->dai_link->stream_name; rtd->dev.release = rtd_release;
...it'd be better to find a home for this that was per card rather than per link I guess, that way we only need to iterate through once during instantiation. A bit irrelevant though given that it's hardly a hot path.
Agreed, lets tackle that as an incremental patch after the merge.
Thanks
Liam
participants (3)
-
Liam Girdwood
-
Mark Brown
-
Peter Ujfalusi